From 729304aef54ddecfb124c168ec1160f3bf970a47 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 15 Mar 2014 09:50:44 +0100 Subject: test/test_pcm_format: add unit test for float clamping --- test/test_pcm_format.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'test') diff --git a/test/test_pcm_format.cxx b/test/test_pcm_format.cxx index 94c55ab16..381554921 100644 --- a/test/test_pcm_format.cxx +++ b/test/test_pcm_format.cxx @@ -97,4 +97,24 @@ PcmFormatTest::TestFormatFloat() for (size_t i = 0; i < N; ++i) CPPUNIT_ASSERT_EQUAL(src[i], d[i]); + + /* check if clamping works */ + float *writable = const_cast(f.data); + *writable++ = 1.01; + *writable++ = 10; + *writable++ = -1.01; + *writable++ = -10; + + d = pcm_convert_to_16(buffer2, dither, + SampleFormat::FLOAT, + f.ToVoid()); + CPPUNIT_ASSERT_EQUAL(N, d.size); + + CPPUNIT_ASSERT_EQUAL(32767, int(d[0])); + CPPUNIT_ASSERT_EQUAL(32767, int(d[1])); + CPPUNIT_ASSERT_EQUAL(-32768, int(d[2])); + CPPUNIT_ASSERT_EQUAL(-32768, int(d[3])); + + for (size_t i = 4; i < N; ++i) + CPPUNIT_ASSERT_EQUAL(src[i], d[i]); } -- cgit v1.2.3