From de862f9f1bb72bd624cf4f341d03584a4123a6cb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 26 Oct 2013 13:36:25 +0200 Subject: test/test_mixramp: unit test for mixramp_interpolate() --- test/test_mixramp.cxx | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 test/test_mixramp.cxx (limited to 'test/test_mixramp.cxx') diff --git a/test/test_mixramp.cxx b/test/test_mixramp.cxx new file mode 100644 index 000000000..83d266d48 --- /dev/null +++ b/test/test_mixramp.cxx @@ -0,0 +1,82 @@ +/* + * Unit tests for mixramp_interpolate() + */ + +#include "config.h" +#include "CrossFade.cxx" + +#include +#include +#include +#include + +#include + +class MixRampTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(MixRampTest); + CPPUNIT_TEST(TestInterpolate); + CPPUNIT_TEST_SUITE_END(); + +public: + void TestInterpolate() { + const char *input = "1.0 0.00;3.0 0.10;6.0 2.50;"; + + char *foo = strdup(input); + CPPUNIT_ASSERT(!std::isnan(mixramp_interpolate(foo, 0))); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_EQUAL(float(0), + mixramp_interpolate(foo, 1)); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_EQUAL(float(0.1), + mixramp_interpolate(foo, 3)); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_EQUAL(float(2.5), + mixramp_interpolate(foo, 6)); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT(!std::isnan(mixramp_interpolate(foo, 3))); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_DOUBLES_EQUAL(float(0.05), + mixramp_interpolate(foo, 2), + 0.05); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_DOUBLES_EQUAL(float(1.3), + mixramp_interpolate(foo, 4.5), + 0.05); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_DOUBLES_EQUAL(float(0.9), + mixramp_interpolate(foo, 4), + 0.05); + free(foo); + + foo = strdup(input); + CPPUNIT_ASSERT_DOUBLES_EQUAL(float(1.7), + mixramp_interpolate(foo, 5), + 0.05); + free(foo); + } +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(MixRampTest); + +int +main(gcc_unused int argc, gcc_unused char **argv) +{ + CppUnit::TextUi::TestRunner runner; + auto ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + runner.addTest(registry.makeTest()); + return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE; +} -- cgit v1.2.3