TEST(NeXT, UnspecifiedLength) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("NeXT", &testFileName)); int fd = ::open(testFileName.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); ASSERT_GT(fd, -1); ASSERT_EQ(::write(fd, kDataUnspecifiedLength, sizeof (kDataUnspecifiedLength)), sizeof (kDataUnspecifiedLength)); ::close(fd); AFfilehandle file = afOpenFile(testFileName.c_str(), "r", NULL); EXPECT_TRUE(file); int sampleFormat, sampleWidth; afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); EXPECT_TRUE(sampleFormat == AF_SAMPFMT_TWOSCOMP); EXPECT_EQ(sampleWidth, 16); EXPECT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), 1); EXPECT_EQ(afGetTrackBytes(file, AF_DEFAULT_TRACK), kFrameCount * sizeof (int16_t)); EXPECT_EQ(afGetFrameCount(file, AF_DEFAULT_TRACK), kFrameCount); int16_t *data = new int16_t[kFrameCount]; AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, data, kFrameCount); EXPECT_EQ(framesRead, kFrameCount); for (int i=0; i<kFrameCount; i++) EXPECT_EQ(data[i], kFrames[i]); delete [] data; afCloseFile(file); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
void testMiscellaneousUnsupported(int fileFormat) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Miscellaneous", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitChannels(setup, AF_DEFAULT_TRACK, 1); afInitFileFormat(setup, fileFormat); int *miscIDs = new int[kNumMiscellaneous]; for (int i=0; i<kNumMiscellaneous; i++) miscIDs[i] = kMiscellaneous[i].id; afInitMiscIDs(setup, miscIDs, kNumMiscellaneous); delete [] miscIDs; for (int i=0; i<kNumMiscellaneous; i++) { afInitMiscType(setup, kMiscellaneous[i].id, kMiscellaneous[i].type); afInitMiscSize(setup, kMiscellaneous[i].id, strlen(kMiscellaneous[i].data)); } AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_FALSE(file); afFreeFileSetup(setup); ASSERT_EQ(0, ::unlink(testFileName.c_str())); }
HRESULT temporaryFileStream(IStream **v) { std::wstring folder, path; if (!getTemporaryDirectory(&folder)) return E_FAIL; /*unsigned __int64 estimatedSizeByte; if (estimatedSizeByte > 0) { const size_t estimatedSizeMiB = size_t(estimatedSizeByte >> 20); if ((estimatedSizeMiB + 256) > availableDiskSpaceMib(folder)) return STG_E_MEDIUMFULL; }*/ cloneAccessMode_ = GENERIC_READ | GENERIC_WRITE; cloneShareMode_ = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; handle_ = ::CreateFileW(path_, GENERIC_READ | GENERIC_WRITE, cloneShareMode_, (LPSECURITY_ATTRIBUTES)NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE, (HANDLE)NULL); /*if (INVALID_HANDLE_VALUE == handle_) if (::GetLastError() == ERROR_FILE_NOT_FOUND) log(Error) << "temporary file not found";*/ return (handle_ != INVALID_HANDLE_VALUE); if (!createTemporaryFile(folder, &path)) return E_FAIL; CMyComPtr<basicFileStream> stream(new basicFileStream()); if (!stream->createTemporaryAndSwapPath(path)) return E_FAIL; *v = stream.Detach(); return S_OK; }
void testMiscellaneous(int fileFormat) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Miscellaneous", &testFileName)); writeMiscellaneous(fileFormat, testFileName); readMiscellaneous(testFileName); ASSERT_EQ(0, ::unlink(testFileName.c_str())); }
void testfloat (int fileFormat) { AFfilesetup setup; AFfilehandle file; int framesWritten, framesRead; const int frameCount = SAMPLE_COUNT/2; float readsamples[SAMPLE_COUNT]; int i; int sampleFormat, sampleWidth; setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); afInitChannels(setup, AF_DEFAULT_TRACK, 2); ensure(createTemporaryFile("testfloat", &sTestFileName), "could not create temporary file"); file = afOpenFile(sTestFileName, "w", setup); ensure(file != AF_NULL_FILEHANDLE, "could not open file for writing"); afFreeFileSetup(setup); framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, frameCount); ensure(framesWritten == frameCount, "number of frames written does not match number of frames requested"); ensure(afCloseFile(file) == 0, "error closing file"); file = afOpenFile(sTestFileName, "r", AF_NULL_FILESETUP); ensure(file != AF_NULL_FILEHANDLE, "could not open file for reading"); ensure(afGetChannels(file, AF_DEFAULT_TRACK) == 2, "file doesn't have exactly two channels"); afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); ensure(sampleFormat == AF_SAMPFMT_FLOAT && sampleWidth == 32, "file doesn't contain 32-bit floating-point data"); ensure(afGetFileFormat(file, NULL) == fileFormat, "file format doesn't match format requested"); framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readsamples, frameCount); ensure(framesRead == frameCount, "number of frames read does not match number of frames requested"); for (i=0; i<SAMPLE_COUNT; i++) { ensure(readsamples[i] == samples[i], "data written to file doesn't match data read"); } ensure(afCloseFile(file) == 0, "error closing file"); cleanup(); }
int main (void) { ensure(createTemporaryFile("testmarkers", sTestFileName), "could not create temporary file"); testmarkers(AF_FILE_AIFF); testmarkers(AF_FILE_AIFFC); testmarkers(AF_FILE_WAVE); cleanup(); return EXIT_SUCCESS; }
ChunkCache::ChunkCache() : reader(), writer(), startingChunksMap(), fileChunks(), theLock() { static_assert(NullChunk == 0, "invalid value for NullChunk"); fileChunks.resize(1); // fileChunks 0 is unused because it is NullChunk auto p = createTemporaryFile(); reader = std::get<0>(p); writer = std::get<1>(p); }
void secureSaveWallet(CryptoNote::IWallet* wallet, const std::string& path, bool saveDetailed = true, bool saveCache = true) { std::fstream tempFile; std::string tempFilePath = createTemporaryFile(path, tempFile); try { saveWallet(wallet, tempFile, saveDetailed, saveCache); } catch (std::exception&) { deleteFile(tempFilePath); tempFile.close(); throw; } tempFile.close(); replaceWalletFiles(path, tempFilePath); }
TEST(Identify, Empty) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Identify", &testFileName)); int fd = ::open(testFileName.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); ASSERT_GT(fd, -1); EXPECT_EQ(AF_FILE_UNKNOWN, afIdentifyFD(fd)); int implemented = -1; EXPECT_EQ(AF_FILE_UNKNOWN, afIdentifyNamedFD(fd, testFileName.c_str(), &implemented)); EXPECT_EQ(implemented, 0); ASSERT_EQ(::close(fd), 0); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
void runTest(int fileFormat, int sampleFormat, int sampleWidth) { IgnoreErrors ignoreErrors; std::string testFileName; ASSERT_TRUE(createTemporaryFile("InvalidSampleFormat", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); afInitChannels(setup, AF_DEFAULT_TRACK, 1); ASSERT_TRUE(afOpenFile(testFileName.c_str(), "w", setup) == AF_NULL_FILEHANDLE); afFreeFileSetup(setup); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
static void testInvalidSampleFormat(int sampleFormat, int sampleWidth) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("ALAC", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, AF_FILE_CAF); afInitChannels(setup, AF_DEFAULT_TRACK, 1); afInitSampleFormat(setup, AF_DEFAULT_TRACK, sampleFormat, sampleWidth); afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_ALAC); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_FALSE(file); afFreeFileSetup(setup); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
TEST(NeXT, ZeroChannels) { IgnoreErrors ignoreErrors; std::string testFileName; ASSERT_TRUE(createTemporaryFile("NeXT", &testFileName)); int fd = ::open(testFileName.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); ASSERT_GT(fd, -1); ASSERT_EQ(::write(fd, kDataZeroChannels, sizeof (kDataZeroChannels)), sizeof (kDataZeroChannels)); ::close(fd); AFfilehandle file = afOpenFile(testFileName.c_str(), "r", NULL); EXPECT_FALSE(file); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
TEST(Identify, NeXT) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Identify", &testFileName)); int fd = ::open(testFileName.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0644); ASSERT_GT(fd, -1); ASSERT_EQ(::write(fd, kNeXTData, sizeof (kNeXTData)), sizeof (kNeXTData)); EXPECT_EQ(AF_FILE_NEXTSND, afIdentifyFD(fd)); int implemented = -1; EXPECT_EQ(AF_FILE_NEXTSND, afIdentifyNamedFD(fd, testFileName.c_str(), &implemented)); EXPECT_EQ(implemented, 1); ASSERT_EQ(::close(fd), 0); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
TEST(ALAC, InvalidChannels) { IgnoreErrors ignoreErrors; std::string testFileName; ASSERT_TRUE(createTemporaryFile("ALAC", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, AF_FILE_CAF); afInitChannels(setup, AF_DEFAULT_TRACK, 9); afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_ALAC); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_FALSE(file); afFreeFileSetup(setup); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
static void testInstrumentUnsupported(int fileFormat) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Instrument", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); int instrumentIDs[] = {AF_DEFAULT_INST}; int numInstruments = sizeof (instrumentIDs) / sizeof (int); afInitInstIDs(setup, instrumentIDs, numInstruments); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_FALSE(file); afFreeFileSetup(setup); ASSERT_EQ(0, ::unlink(testFileName.c_str())); }
static void testInstrumentParameters(int fileFormat) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Instrument", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); int instrumentIDs[] = {AF_DEFAULT_INST}; int numInstruments = sizeof (instrumentIDs) / sizeof (int); afInitInstIDs(setup, instrumentIDs, numInstruments); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_TRUE(file); afFreeFileSetup(setup); afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE, 50); afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE, -30); afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY, 22); afSetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY, 111); ASSERT_EQ(0, afCloseFile(file)); file = afOpenFile(testFileName.c_str(), "r", NULL); ASSERT_TRUE(file); ASSERT_EQ(fileFormat, afGetFileFormat(file, NULL)); ASSERT_EQ(1, afGetInstIDs(file, NULL)); int readInstrumentIDs[1] = {0}; ASSERT_EQ(1, afGetInstIDs(file, readInstrumentIDs)); ASSERT_EQ(AF_DEFAULT_INST, readInstrumentIDs[0]); EXPECT_EQ(50, afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE)); EXPECT_EQ(-30, afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE)); EXPECT_EQ(22, afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY)); EXPECT_EQ(111, afGetInstParamLong(file, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY)); ASSERT_EQ(0, afCloseFile(file)); ASSERT_EQ(0, ::unlink(testFileName.c_str())); }
bool DataLoader::start(SCList args, SCRef wd, SCRef buf) { if (!isProcExited) { dbs("ASSERT in DataLoader::start(), called while processing"); return false; } isProcExited = false; setWorkingDirectory(wd); connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(on_finished(int, QProcess::ExitStatus))); if (!createTemporaryFile() || !QGit::startProcess(this, args, buf)) { deleteLater(); return false; } loadTime.start(); guiUpdateTimer.start(GUI_UPDATE_INTERVAL); return true; }
TEST(Seek, Seek) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("Seek", &testFileName)); const int kFrameCount = 2000; const int kPadFrameCount = kFrameCount + 5; const int kDataLength = kFrameCount * sizeof (int16_t); int16_t data[kFrameCount]; int16_t readData[kPadFrameCount]; AFfilesetup setup = afNewFileSetup(); ASSERT_TRUE(setup); afInitFileFormat(setup, AF_FILE_AIFF); afInitChannels(setup, AF_DEFAULT_TRACK, 1); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_TRUE(file) << "could not open file for writing"; afFreeFileSetup(setup); /* Initialize data to a nontrivial test pattern. */ for (int i=0; i<kFrameCount; i++) { if ((i%2) != 0) data[i] = i; else data[i] = -i; } ASSERT_EQ(afWriteFrames(file, AF_DEFAULT_TRACK, data, kFrameCount), kFrameCount); afCloseFile(file); file = afOpenFile(testFileName.c_str(), "r", AF_NULL_FILESETUP); ASSERT_TRUE(file) << "Could not open file for reading"; /* For each position in the file, seek to that position and read to the end of the file, checking that the data read matches the data written. */ for (int i=0; i<kFrameCount; i++) { memset(readData, 0, kDataLength); AFfileoffset currentposition = afSeekFrame(file, AF_DEFAULT_TRACK, i); ASSERT_EQ(currentposition, i) << "Incorrect seek position"; AFframecount framesread = afReadFrames(file, AF_DEFAULT_TRACK, readData + i, kPadFrameCount); ASSERT_EQ(framesread, kFrameCount - i) << "Incorrect number of frames read"; ASSERT_TRUE(!memcmp(data + i, readData + i, framesread * sizeof (int16_t))) << "Error in data read"; } afCloseFile(file); ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
void runTestWithChannels(int fileFormat, int channelCount) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("PCMData", &testFileName)); const int numFrames = 20; const int numSamples = numFrames * channelCount; T samples[numSamples]; for (int i=0; i<numFrames; i++) for (int c=0; c<channelCount; c++) samples[i*channelCount + c] = static_cast<T>(i*i + 3*c + 1); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); afInitSampleFormat(setup, AF_DEFAULT_TRACK, kSampleFormat, kBitsPerSample); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_TRUE(file) << "Could not open file for writing"; afFreeFileSetup(setup); PCMMapping mapping, defaultMapping; getDefaultPCMMapping(kSampleFormat, kBitsPerSample, defaultMapping); afGetPCMMapping(file, AF_DEFAULT_TRACK, &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); ASSERT_EQ(mapping.slope, defaultMapping.slope); ASSERT_EQ(mapping.intercept, defaultMapping.intercept); ASSERT_EQ(mapping.minClip, defaultMapping.minClip); ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); afGetVirtualPCMMapping(file, AF_DEFAULT_TRACK, &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); ASSERT_EQ(mapping.slope, defaultMapping.slope); ASSERT_EQ(mapping.intercept, defaultMapping.intercept); ASSERT_EQ(mapping.minClip, defaultMapping.minClip); ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); ASSERT_EQ(afWriteFrames(file, AF_DEFAULT_TRACK, samples, numFrames), numFrames) << "Number of frames written does not match number of frames requested"; ASSERT_EQ(afCloseFile(file), 0) << "Error closing file"; file = afOpenFile(testFileName.c_str(), "r", NULL); ASSERT_TRUE(file) << "Could not open file for reading"; ASSERT_EQ(afGetFileFormat(file, NULL), fileFormat) << "Incorrect file format"; int sampleFormat, sampleWidth; afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); ASSERT_EQ(sampleFormat, kSampleFormat) << "Incorrect sample format"; ASSERT_EQ(sampleWidth, kBitsPerSample) << "Incorrect sample width"; ASSERT_EQ(afGetChannels(file, AF_DEFAULT_TRACK), channelCount) << "Incorrect number of channels"; afGetPCMMapping(file, AF_DEFAULT_TRACK, &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); ASSERT_EQ(mapping.slope, defaultMapping.slope); ASSERT_EQ(mapping.intercept, defaultMapping.intercept); ASSERT_EQ(mapping.minClip, defaultMapping.minClip); ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); afGetVirtualPCMMapping(file, AF_DEFAULT_TRACK, &mapping.slope, &mapping.intercept, &mapping.minClip, &mapping.maxClip); ASSERT_EQ(mapping.slope, defaultMapping.slope); ASSERT_EQ(mapping.intercept, defaultMapping.intercept); ASSERT_EQ(mapping.minClip, defaultMapping.minClip); ASSERT_EQ(mapping.maxClip, defaultMapping.maxClip); T *samplesRead = new T[numSamples]; ASSERT_EQ(afReadFrames(file, AF_DEFAULT_TRACK, samplesRead, numFrames), numFrames) << "Number of frames read does not match number of frames requested"; for (int i=0; i<numSamples; i++) ASSERT_EQ(samplesRead[i], samples[i]) << "Data read from file does not match data written"; delete [] samplesRead; ASSERT_EQ(afCloseFile(file), 0) << "Error closing file"; ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
void testalaw (int fileFormat) { AFfilehandle file; AFfilesetup setup; uint16_t samples[] = {8, 24, 88, 120, 184, 784, 912, 976, 1120, 1440, 1888, 8960, 9984, 16128, 19968, 32256}; uint16_t readsamples[SAMPLE_COUNT]; AFframecount framesWritten, framesRead; int i; setup = afNewFileSetup(); afInitCompression(setup, AF_DEFAULT_TRACK, AF_COMPRESSION_G711_ALAW); afInitFileFormat(setup, fileFormat); afInitChannels(setup, AF_DEFAULT_TRACK, 1); ensure(createTemporaryFile("writealaw", &sTestFileName), "could not create temporary file"); file = afOpenFile(sTestFileName, "w", setup); afFreeFileSetup(setup); ensure(afGetCompression(file, AF_DEFAULT_TRACK) == AF_COMPRESSION_G711_ALAW, "test file not created with G.711 A-law compression"); ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing"); framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, FRAME_COUNT); ensure(framesWritten == FRAME_COUNT, "number of frames requested does not match number of frames written"); afCloseFile(file); /* Open the file for reading and verify the data. */ file = afOpenFile(sTestFileName, "r", NULL); ensure(file != AF_NULL_FILEHANDLE, "unable to open file for reading"); ensure(afGetFileFormat(file, NULL) == fileFormat, "test file format incorrect"); ensure(afGetCompression(file, AF_DEFAULT_TRACK) == AF_COMPRESSION_G711_ALAW, "test file not opened with G.711 A-law compression"); framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readsamples, FRAME_COUNT); ensure(framesRead == FRAME_COUNT, "number of frames read does not match number of frames requested"); #ifdef DEBUG for (i=0; i<SAMPLE_COUNT; i++) printf("readsamples[%d]: %d\n", i, readsamples[i]); for (i=0; i<SAMPLE_COUNT; i++) printf("samples[%d]: %d\n", i, samples[i]); #endif for (i=0; i<SAMPLE_COUNT; i++) { ensure(samples[i] == readsamples[i], "data written does not match data read"); } /* G.711 compression uses one byte per sample. */ ensure(afGetTrackBytes(file, AF_DEFAULT_TRACK) == SAMPLE_COUNT, "track byte count is incorrect"); ensure(afGetFrameCount(file, AF_DEFAULT_TRACK) == FRAME_COUNT, "frame count is incorrect"); ensure(afGetChannels(file, AF_DEFAULT_TRACK) == 1, "channel count is incorrect"); ensure(afCloseFile(file) == 0, "error closing file"); cleanup(); }
static void testADPCM(int fileFormat, int compressionFormat, int channelCount, int bytesPerPacket, int framesPerPacket, int frameCount, int threshold) { std::string testFileName; ASSERT_TRUE(createTemporaryFile("ADPCM", &testFileName)); AFfilesetup setup = afNewFileSetup(); afInitFileFormat(setup, fileFormat); afInitChannels(setup, AF_DEFAULT_TRACK, channelCount); afInitCompression(setup, AF_DEFAULT_TRACK, compressionFormat); AFfilehandle file = afOpenFile(testFileName.c_str(), "w", setup); ASSERT_TRUE(file); afFreeFileSetup(setup); int16_t *data = new int16_t[frameCount * channelCount]; for (int i=0; i<frameCount; i++) for (int c=0; c<channelCount; c++) data[i*channelCount + c] = i * ((c&1) ? -1 : 1); AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, data, frameCount); ASSERT_EQ(framesWritten, frameCount); ASSERT_EQ(afCloseFile(file), 0); file = afOpenFile(testFileName.c_str(), "r", AF_NULL_FILESETUP); ASSERT_TRUE(file); ASSERT_EQ(afGetCompression(file, AF_DEFAULT_TRACK), compressionFormat); ASSERT_EQ(afGetFrameCount(file, AF_DEFAULT_TRACK), frameCount); ASSERT_EQ(afGetTrackBytes(file, AF_DEFAULT_TRACK), (bytesPerPacket * frameCount) / framesPerPacket); int16_t *readData = new int16_t[frameCount * channelCount]; AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount); ASSERT_EQ(framesRead, frameCount); for (int i=0; i<frameCount; i++) for (int c=0; c<channelCount; c++) EXPECT_LE(std::abs(data[i*channelCount + c] - readData[i*channelCount + c]), threshold); int16_t *offsetReadData = new int16_t[frameCount * channelCount]; // Read entire file with a seek before each read operation. for (AFframecount offset = 0; offset < frameCount; offset += framesPerPacket + 3) { ASSERT_EQ(afSeekFrame(file, AF_DEFAULT_TRACK, offset), offset); AFframecount framesToRead = 1091; framesRead = afReadFrames(file, AF_DEFAULT_TRACK, offsetReadData, framesToRead); ASSERT_EQ(framesRead, std::min(framesToRead, frameCount - offset)); for (int i=0; i<framesRead; i++) for (int c=0; c<channelCount; c++) EXPECT_EQ(readData[(i+offset)*channelCount + c], offsetReadData[i*channelCount + c]); } // Read entire file sequentially in multiple read operations. ASSERT_EQ(afSeekFrame(file, AF_DEFAULT_TRACK, 0), 0); AFframecount framesToRead = 1087; for (AFframecount offset = 0; offset < frameCount; offset += framesToRead) { framesRead = afReadFrames(file, AF_DEFAULT_TRACK, offsetReadData, framesToRead); ASSERT_EQ(framesRead, std::min(framesToRead, frameCount - offset)); for (int i=0; i<framesRead; i++) for (int c=0; c<channelCount; c++) EXPECT_EQ(readData[(i+offset)*channelCount + c], offsetReadData[i*channelCount + c]); } ASSERT_EQ(afCloseFile(file), 0); delete [] data; delete [] readData; delete [] offsetReadData; ASSERT_EQ(::unlink(testFileName.c_str()), 0); }
int main (int argc, char **argv) { AFfilesetup setup; if ((setup = afNewFileSetup()) == AF_NULL_FILESETUP) { fprintf(stderr, "Could not allocate file setup.\n"); exit(EXIT_FAILURE); } afInitFileFormat(setup, AF_FILE_IRCAM); afInitChannels(setup, AF_DEFAULT_TRACK, 1); afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32); char *testFileName; if (!createTemporaryFile("floatto24", &testFileName)) { fprintf(stderr, "Could not create temporary file.\n"); exit(EXIT_FAILURE); } AFfilehandle file = afOpenFile(testFileName, "w", setup); if (file == AF_NULL_FILEHANDLE) { printf("could not open file for writing\n"); exit(EXIT_FAILURE); } afFreeFileSetup(setup); AFframecount framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, frameCount); if (framesWritten != frameCount) { fprintf(stderr, "Wrong number of frames read.\n"); exit(EXIT_FAILURE); } if (afCloseFile(file) != 0) { fprintf(stderr, "Closing file returned non-zero status.\n"); exit(EXIT_FAILURE); } file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); if (file == AF_NULL_FILEHANDLE) { fprintf(stderr, "Could not open file for writing.\n"); exit(EXIT_FAILURE); } if (afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24) != 0) { fprintf(stderr, "afSetVirtualSampleFormat returned non-zero status.\n"); exit(EXIT_FAILURE); } int readSamples[frameCount]; for (int i=0; i<frameCount; i++) readSamples[i] = -1000 - i; AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readSamples, frameCount); if (framesRead != frameCount) { fprintf(stderr, "Wrong number of frames read.\n"); exit(EXIT_FAILURE); } for (int i=0; i<framesRead; i++) { #ifdef DEBUG printf("[%d] = %d\n", i, readSamples[i]); #endif if (readSamples[i] == -1000 - i) { fprintf(stderr, "Data in destination array untouched.\n"); exit(EXIT_FAILURE); } /* Ensure that the high-order 8 bits represent sign extension: only 0x00 (+) or 0xff (-) is valid. */ if ((readSamples[i] & 0xff000000) != 0x000000 && (readSamples[i] & 0xff000000) != 0xff000000) { fprintf(stderr, "Data is not within range of " "{-2^23, ..., 2^23-1}.\n"); exit(EXIT_FAILURE); } if (readSamples[i] != referenceConvertedSamples[i]) { fprintf(stderr, "Data doesn't match reference data.\n"); exit(EXIT_FAILURE); } } if (afCloseFile(file) != 0) { fprintf(stderr, "Closing file returned non-zero status.\n"); exit(EXIT_FAILURE); } unlink(testFileName); free(testFileName); exit(EXIT_SUCCESS); }
int main (void) { AFfilehandle file; AFfilesetup setup; int32_t *buffer, *readbuffer; int i; AFframecount frameswritten, framesread; setup = afNewFileSetup(); afInitChannels(setup, AF_DEFAULT_TRACK, 1); afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24); ensure(createTemporaryFile("twentyfour2", &sTestFileName), "could not create temporary file"); file = afOpenFile(sTestFileName, "w", setup); ensure(file != NULL, "could not open test file for writing"); afFreeFileSetup(setup); buffer = malloc(sizeof (int32_t) * FRAME_COUNT); ensure(buffer != NULL, "could not allocate buffer for audio data"); readbuffer = malloc(sizeof (int32_t) * FRAME_COUNT); ensure(readbuffer != NULL, "could not allocate buffer for audio data"); for (i=0; i<FRAME_COUNT; i++) { if ((i%3) == 0) buffer[i] = -i; else buffer[i] = i; } frameswritten = afWriteFrames(file, AF_DEFAULT_TRACK, buffer, FRAME_COUNT); ensure(frameswritten == FRAME_COUNT, "incorrect number of frames written"); afCloseFile(file); /* Now open file for reading and ensure that the data read is equal to the data written. */ file = afOpenFile(sTestFileName, "r", AF_NULL_FILESETUP); ensure(file != NULL, "could not open test file for reading"); framesread = afReadFrames(file, AF_DEFAULT_TRACK, readbuffer, FRAME_COUNT); ensure(framesread == FRAME_COUNT, "incorrect number of frames read"); #ifdef DEBUG for (i=0; i<FRAME_COUNT; i++) { if (buffer[i] != readbuffer[i]) { printf("buffer[%d] = %d, readbuffer[%d] = %d\n", i, buffer[i], i, readbuffer[i]); } } #endif ensure(!memcmp(buffer, readbuffer, sizeof (int32_t) * FRAME_COUNT), "data read does not match data written"); afCloseFile(file); free(buffer); free(readbuffer); cleanup(); return 0; }
int main (int argc, char **argv) { AFfilehandle file; AFfilesetup setup; uint16_t samples[] = {11, 51, 101, 501, 1001, 5001, 10001, 50001}; int i; int sampleFormat, sampleWidth; int framesRead, framesWritten; int nativeByteOrder; #ifdef WORDS_BIGENDIAN nativeByteOrder = AF_BYTEORDER_BIGENDIAN; #else nativeByteOrder = AF_BYTEORDER_LITTLEENDIAN; #endif setup = afNewFileSetup(); afInitFileFormat(setup, AF_FILE_RAWDATA); afInitChannels(setup, AF_DEFAULT_TRACK, 1); afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); ensure(createTemporaryFile("writeraw", sTestFileName), "could not create temporary file"); file = afOpenFile(sTestFileName, "w", setup); ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing"); framesWritten = afWriteFrames(file, AF_DEFAULT_TRACK, samples, 8); ensure(framesWritten == 8, "number of frames written does not match number of frames requested"); ensure(afCloseFile(file) == 0, "error closing file"); file = afOpenFile(sTestFileName, "r", setup); ensure(file != AF_NULL_FILEHANDLE, "unable to open file for reading"); afFreeFileSetup(setup); ensure(afGetFileFormat(file, NULL) == AF_FILE_RAWDATA, "test file not created as raw audio data file"); afGetSampleFormat(file, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); ensure(sampleFormat == AF_SAMPFMT_TWOSCOMP, "test file not two's complement"); ensure(sampleWidth == 16, "test file sample format is not 16-bit"); ensure(afGetChannels(file, AF_DEFAULT_TRACK) == 1, "test file doesn't have exactly one channel"); ensure(afGetByteOrder(file, AF_DEFAULT_TRACK) == nativeByteOrder, "test file not in native byte order"); for (i=0; i<8; i++) { uint16_t temporary; framesRead = afReadFrames(file, AF_DEFAULT_TRACK, &temporary, 1); ensure(framesRead == 1, "number of frames read does not match number of frames requested"); ensure(temporary == samples[i], "data written to file doesn't match data read from file"); } ensure(afCloseFile(file) == 0, "error closing file"); cleanup(); printf("writeraw test passed.\n"); exit(EXIT_SUCCESS); }
virtual void SetUp() { ASSERT_TRUE(createTemporaryFile("Sign", &m_testFileName)); }
virtual void SetUp() { ASSERT_TRUE(createTemporaryFile("PCMMapping", &m_testFileName)); }