TestSuite addPluginPresetTests(void) { TestSuite testSuite = newTestSuite("PluginPreset", NULL, NULL); addTest(testSuite, "GuessPluginPresetType", _testGuessPluginPresetType); addTest(testSuite, "GuessPluginPresetTypeInvalid", _testGuessPluginPresetTypeInvalid); addTest(testSuite, "NewObject", _testNewObject); addTest(testSuite, "IsPresetCompatibleWithPlugin", NULL); // _testIsPresetCompatibleWithPlugin); return testSuite; }
TestSuite addMidiSourceTests(void) { TestSuite testSuite = newTestSuite("MidiSource", NULL, NULL); addTest(testSuite, "GuessMidiSourceType", _testGuessMidiSourceType); addTest(testSuite, "GuessMidiSourceTypeInvalid", _testGuessMidiSourceTypeInvalid); addTest(testSuite, "NewObject", _testNewMidiSource); return testSuite; }
TestSuite addSampleSourceTests(void) { TestSuite testSuite = newTestSuite("SampleSource", _sampleSourceSetup, _sampleSourceTeardown); addTest(testSuite, "GuessSampleSourceTypePcm", _testGuessSampleSourceTypePcm); addTest(testSuite, "GuessSampleSourceTypeEmpty", _testGuessSampleSourceTypeEmpty); addTest(testSuite, "GuessSampleSourceTypeWrongCase", _testGuessSampleSourceTypeWrongCase); return testSuite; }
TestSuite addAudioClockTests(void) { TestSuite testSuite = newTestSuite("AudioClock", _audioClockTestSetup, _audioClockTestTeardown); addTest(testSuite, "Initialization", _testInitAudioClock); addTest(testSuite, "AdvanceClock", _testAdvanceAudioClock); addTest(testSuite, "StopClock", _testStopAudioClock); addTest(testSuite, "RestartClock", _testRestartAudioClock); addTest(testSuite, "MultipleAdvance", _testAdvanceClockMulitpleTimes); return testSuite; }
TestSuite addTaskTimerTests(void) { TestSuite testSuite = newTestSuite("TaskTimer", NULL, NULL); addTest(testSuite, "NewObject", _testNewTaskTimer); addTest(testSuite, "TaskDuration", _testTaskTimerDuration); addTest(testSuite, "TaskDurationMultipleTimes", _testTaskTimerDurationMultipleTimes); addTest(testSuite, "CallStartTwice", _testTaskTimerCallStartTwice); addTest(testSuite, "CallStopTwice", _testTaskTimerCallStopTwice); addTest(testSuite, "CallStartTwice", _testTaskTimerCallStartTwice); addTest(testSuite, "CallStopBeforeStart", _testCallStopBeforeStart); return testSuite; }
TestSuite addPluginTests(void) { TestSuite testSuite = newTestSuite("Plugin", NULL, NULL); addTest(testSuite, "PluginFactory", _testPluginFactory); addTest(testSuite, "PluginFactoryInvalidPlugin", _testPluginFactoryInvalidPlugin); addTest(testSuite, "PluginFactoryNullPluginName", _testPluginFactoryNullPluginName); addTest(testSuite, "PluginFactoryEmptyPluginName", _testPluginFactoryEmptyPluginName); addTest(testSuite, "PluginFactoryNullRoot", _testPluginFactoryNullRoot); addTest(testSuite, "FreeNullPlugin", _testFreeNullPlugin); return testSuite; }
TestSuite addPluginVst2xIdTests(void) { TestSuite testSuite = newTestSuite("PluginVst2xId", NULL, NULL); addTest(testSuite, "NewPluginVst2xId", _testNewPluginVst2xId); addTest(testSuite, "NewPluginVst2xIdWithIntId", _testNewPluginVst2xIdWithIntId); addTest(testSuite, "NewPluginVst2xIdWithZeroIntId", _testNewPluginVst2xIdWithZeroIntId); addTest(testSuite, "NewPluginVst2xIdWithStringId", _testNewPluginVst2xIdWithStringId); addTest(testSuite, "NewPluginVst2xIdWithNullStringId", _testNewPluginVst2xIdWithNullStringId); addTest(testSuite, "NewPluginVst2xIdWithEmptyStringId", _testNewPluginVst2xIdWithEmptyStringId); addTest(testSuite, "NewPluginVst2xIdWithInvalidStringId", _testNewPluginVst2xIdWithInvalidStringId); return testSuite; }
TestSuite addPlatformUtilitiesTests(void) { TestSuite testSuite = newTestSuite("PlatformUtilities", NULL, NULL); addTest(testSuite, "GetPlatformType", _testGetPlatformType); addTest(testSuite, "GetPlatformName", _testGetPlatformName); addTest(testSuite, "GetShortPlatformName", _testGetShortPlatformName); addTest(testSuite, "IsHostLittleEndian", NULL); // _testIsHostLittleEndian); addTest(testSuite, "FlipShortEndian", NULL); // _testFlipShortEndian); addTest(testSuite, "ConvertBigEndianShortToPlatform", NULL); // _testConvertBigEndianShortToPlatform); addTest(testSuite, "ConvertBigEndianIntToPlatform", NULL); // _testConvertBigEndianIntToPlatform); addTest(testSuite, "ConvertLittleEndianIntToPlatform", NULL); // _testConvertLittleEndianIntToPlatform); addTest(testSuite, "ConvertBigEndianFloatToPlatform", NULL); // _testConvertBigEndianFloatToPlatform); addTest(testSuite, "ConvertByteArrayToUnsignedShort", NULL); // _testConvertByteArrayToUnsignedShort); addTest(testSuite, "ConvertByteArrayToUnsignedInt", NULL); // _testConvertByteArrayToUnsignedInt); return testSuite; }
void runInternalTestSuite(boolByte onlyPrintFailing) { TestSuite suiteResults; LinkedList internalTestSuites = _getTestSuites(); if(onlyPrintFailing) { linkedListForeach(internalTestSuites, _setTestSuiteOnlyPrintFailing, NULL); } linkedListForeach(internalTestSuites, runTestSuite, NULL); // Create a new test suite to be used as the userData passed to the foreach loop suiteResults = newTestSuite("Suite results", NULL, NULL); linkedListForeach(internalTestSuites, _sumTestSuiteResults, suiteResults); fprintf(stderr, "\n== Ran %d function tests: %d passed, %d failed, %d skipped ==\n", suiteResults->numSuccess + suiteResults->numFail + suiteResults->numSkips, suiteResults->numSuccess, suiteResults->numFail, suiteResults->numSkips); freeLinkedListAndItems(internalTestSuites, (LinkedListFreeItemFunc)freeTestSuite); freeTestSuite(suiteResults); }
TestSuite addFileTests(void) { TestSuite testSuite = newTestSuite("File", NULL, NULL); addTest(testSuite, "NewFileDefault", _testNewFileDefault); addTest(testSuite, "NewFileWithRelativePath", _testNewFileWithPath); addTest(testSuite, "NewFileWithAbsolutePath", _testNewFileWithPath); addTest(testSuite, "NewFileWithInvalidPath", _testNewFileWithInvalidPath); addTest(testSuite, "NewFileWithNullPath", _testNewFileWithNullPath); addTest(testSuite, "FileCreateFile", _testFileCreateFile); addTest(testSuite, "FileCreateDir", _testFileCreateDir); addTest(testSuite, "FileCreateNull", _testFileCreateNull); addTest(testSuite, "FileCreateAlreadyExists", _testFileCreateAlreadyExists); addTest(testSuite, "FileCopyTo", _testFileCopyTo); addTest(testSuite, "FileCopyToInvalidDestination", _testFileCopyToInvalidDestination); addTest(testSuite, "FileCopyNullTo", _testFileCopyNullTo); addTest(testSuite, "FileCopyToNull", _testFileCopyToNull); addTest(testSuite, "FileListContents", _testFileListContents); addTest(testSuite, "FileListDirectory", _testFileListDirectory); addTest(testSuite, "FileListContentsNull", _testFileListContentsNull); addTest(testSuite, "FileListContentsInvalidDir", _testFileListContentsInvalidDir); addTest(testSuite, "FileListContentsFile", _testFileListContentsFile); addTest(testSuite, "FileListContentsEmptyDir", _testFileListContentsEmptyDir); addTest(testSuite, "FileRemoveDir", _testFileRemoveDir); addTest(testSuite, "FileRemoveFile", _testFileRemoveFile); addTest(testSuite, "FileRemoveInvalid", _testFileRemoveInvalid); addTest(testSuite, "FileRemoveNull", _testFileRemoveNull); addTest(testSuite, "FileGetBasename", _testFileGetBasename); addTest(testSuite, "FileGetBasenameNull", _testFileGetBasenameNull); addTest(testSuite, "FileGetBasenameInvalid", _testFileGetBasenameInvalid); addTest(testSuite, "FileGetDirname", _testFileGetDirname); addTest(testSuite, "FileGetDirnameNull", _testFileGetDirnameNull); addTest(testSuite, "FileGetDirnameInvalid", _testFileGetDirnameInvalid); addTest(testSuite, "FileGetExtension", _testFileGetExtension); addTest(testSuite, "FileGetExtensionNull", _testFileGetExtensionNull); addTest(testSuite, "FileGetExtensionInvalid", _testFileGetExtensionInvalid); addTest(testSuite, "FileExists", _testFileExists); addTest(testSuite, "FileExistsNull", _testFileExistsNull); addTest(testSuite, "FileExistsInvalid", _testFileExistsInvalid); return testSuite; }
TestSuite addIntegrationTests(File mrsWatsonExePath, File resourcesPath) { TestSuite testSuite = newTestSuite("Integration", NULL, NULL); testSuite->applicationPath = newCharStringWithCString(mrsWatsonExePath->absolutePath->data); testSuite->resourcesPath = newCharStringWithCString(resourcesPath->absolutePath->data); // Basic non-processing operations addTestWithPaths(testSuite, "List plugins", _testListPlugins); addTestWithPaths(testSuite, "List file types", _testListFileTypes); addTestWithPaths(testSuite, "Invalid arugment", _testInvalidArgument); // Plugin loading addTestWithPaths(testSuite, "Load plugin with absolute path", _testLoadPluginWithAbsolutePath); // Invalid configurations addTestWithPaths(testSuite, "Run with no plugins", _testRunWithNoPlugins); addTestWithPaths(testSuite, "Effect with no input source", _testEffectWithNoInputSource); addTestWithPaths(testSuite, "Instrument with no MIDI source", _testInstrumentWithNoMidiSource); addTestWithPaths(testSuite, "Plugin chain with instrument not at head", _testPluginChainWithInstrumentNotAtHead); addTestWithPaths(testSuite, "Plugin with invalid preset", _testPluginWithInvalidPreset); addTestWithPaths(testSuite, "Preset for wrong plugin", _testPresetForWrongPlugin); addTestWithPaths(testSuite, "Set invalid parameter", _testSetInvalidParameter); addTestWithPaths(testSuite, "Set invalid time signature", _testSetInvalidTimeSignature); addTestWithPaths(testSuite, "Set invalid tempo", _testSetInvalidTempo); addTestWithPaths(testSuite, "Set invalid blocksize", _testSetInvalidBlocksize); addTestWithPaths(testSuite, "Set invalid bit depth", _testSetInvalidBitDepth); addTestWithPaths(testSuite, "Set invalid channel count", _testSetInvalidChannelCount); addTestWithPaths(testSuite, "Set invalid sample rate", _testSetInvalidSampleRate); // PCM files // TODO: Should add tests for other bit depths addTestWithPaths(testSuite, "Process 16-bit PCM file (mono)", _testProcessPcmFile16BitMono); addTestWithPaths(testSuite, "Process 16-bit PCM file (stereo)", _testProcessPcmFile16BitStereo); // WAVE files addTestWithPaths(testSuite, "Process 16-bit WAVE file (mono)", _testProcessWaveFile16BitMono); addTestWithPaths(testSuite, "Process 16-bit WAVE file (stereo)", _testProcessWaveFile16BitStereo); addTestWithPaths(testSuite, "Process 8-bit WAVE file (mono)", REQUIRES_AUDIOFILE(_testProcessWaveFile8BitMono)); addTestWithPaths(testSuite, "Process 8-bit WAVE file (stereo)", REQUIRES_AUDIOFILE(_testProcessWaveFile8BitStereo)); addTestWithPaths(testSuite, "Process 24-bit WAVE file (mono)", REQUIRES_AUDIOFILE(_testProcessWaveFile24BitMono)); addTestWithPaths(testSuite, "Process 24-bit WAVE file (stereo)", REQUIRES_AUDIOFILE(_testProcessWaveFile24BitStereo)); addTestWithPaths(testSuite, "Process 32-bit WAVE file (mono)", REQUIRES_AUDIOFILE(_testProcessWaveFile32BitMono)); addTestWithPaths(testSuite, "Process 32-bit WAVE file (stereo)", REQUIRES_AUDIOFILE(_testProcessWaveFile32BitStereo)); addTestWithPaths(testSuite, "Process FFMpeg WAVE file (stereo)", _testProcessWaveFileFfmpeg); // AIFF files addTestWithPaths(testSuite, "Process 16-bit AIFF file (mono)", REQUIRES_AUDIOFILE(_testProcessAiffFile16BitMono)); addTestWithPaths(testSuite, "Process 16-bit AIFF file (stereo)", REQUIRES_AUDIOFILE(_testProcessAiffFile16BitStereo)); #if TEST_AIFF_BIT_DEPTHS // 8-bit AIFF will require some extra work in SampleSourceAudiofile addTestWithPaths(testSuite, "Process 8-bit AIFF file (mono)", REQUIRES_AUDIOFILE(_testProcessAiffFile8BitMono)); addTestWithPaths(testSuite, "Process 8-bit AIFF file (stereo)", REQUIRES_AUDIOFILE(_testProcessAiffFile8BitStereo)); addTestWithPaths(testSuite, "Process 24-bit AIFF file (mono)", REQUIRES_AUDIOFILE(_testProcessAiffFile24BitMono)); addTestWithPaths(testSuite, "Process 24-bit AIFF file (stereo)", REQUIRES_AUDIOFILE(_testProcessAiffFile24BitStereo)); // 32-bit AIFF will require some extra work in SampleSourceAudiofile addTestWithPaths(testSuite, "Process 32-bit AIFF file (mono)", REQUIRES_AUDIOFILE(_testProcessAiffFile32BitMono)); addTestWithPaths(testSuite, "Process 32-bit AIFF file (stereo)", REQUIRES_AUDIOFILE(_testProcessAiffFile32BitStereo)); #endif // FLAC files addTestWithPaths(testSuite, "Process 8-bit FLAC file (mono)", REQUIRES_FLAC(_testProcessFlacFile8BitMono)); addTestWithPaths(testSuite, "Process 8-bit FLAC file (stereo)", REQUIRES_FLAC(_testProcessFlacFile8BitStereo)); addTestWithPaths(testSuite, "Process 16-bit FLAC file (mono)", REQUIRES_FLAC(_testProcessFlacFile16BitMono)); addTestWithPaths(testSuite, "Process 16-bit FLAC file (stereo)", REQUIRES_FLAC(_testProcessFlacFile16BitStereo)); addTestWithPaths(testSuite, "Process 24-bit FLAC file (mono)", REQUIRES_FLAC(_testProcessFlacFile24BitMono)); addTestWithPaths(testSuite, "Process 24-bit FLAC file (stereo)", REQUIRES_FLAC(_testProcessFlacFile24BitStereo)); addTestWithPaths(testSuite, "Process 32-bit FLAC file (mono)", REQUIRES_FLAC(_testProcessFlacFile32BitMono)); addTestWithPaths(testSuite, "Process 32-bit FLAC file (stereo)", REQUIRES_FLAC(_testProcessFlacFile32BitStereo)); // Audio settings addTestWithPaths(testSuite, "Process with sample rate", _testProcessWithSampleRate); addTestWithPaths(testSuite, "Process with blocksize", _testProcessWithBlocksize); addTestWithPaths(testSuite, "Process with time signature", _testProcessWithTimeSignature); // Parameter tests addTestWithPaths(testSuite, "Set parameter", _testSetParameter); // Internal plugins addTestWithPaths(testSuite, "Internal limiter", _testInternalLimiter); addTestWithPaths(testSuite, "Internal gain plugin", _testInternalGainPlugin); addTestWithPaths(testSuite, "Internal gain plugin invalid parameter", _testInternalGainPluginInvalidParameter); addTestWithPaths(testSuite, "Internal passthru plugin", _testInternalPassthruPlugin); #if TEST_SILENCE_PLUGIN addTestWithPaths(testSuite, "Internal silence generator", _testInternalSilenceGenerator); #endif // Plugin processing tests addTestWithPaths(testSuite, "Process audio with again plugin", _testProcessWithAgainPlugin); addTestWithPaths(testSuite, "Process MIDI with vstxsynth plugin", _testProcessWithVstxsynthPlugin); addTestWithPaths(testSuite, "Process effect chain", _testProcessEffectChain); addTestWithPaths(testSuite, "Load FXP preset in VST", _testLoadFxpPresetInVst); addTestWithPaths(testSuite, "Load internal program in VST", _testLoadInternalProgramInVst); return testSuite; }