From 3ab4a8c1c040480b81860a07f58aeb3a02a1c33b Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 20 Nov 2013 14:15:49 +0100 Subject: Added unittest (based on CppUnit) of asc2bin functions. --- .gitignore | 1 + test/Makefile | 7 ++++++ test/test.cc | 22 ++++++++++++++++++ test/test_asc2bin.cc | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 test/test.cc create mode 100644 test/test_asc2bin.cc diff --git a/.gitignore b/.gitignore index 6ffe871..b22fc36 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ test_opus test_raw test_rtp test_srtp +test_asc2bin \ No newline at end of file diff --git a/test/Makefile b/test/Makefile index 49bcf0d..82fc79f 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,3 +1,6 @@ +CFLAGS=`cppunit-config --cflags` +LIBS=`cppunit-config --libs` + all: connectivity amrwb init rtp srtp opus raw connectivity: @@ -27,3 +30,7 @@ rtp: srtp: g++ -g -DUSE_CRYPTO test_$@.cc ../src/rtp.cc ../src/srtp.cc ../src/asc2bin.cc -lsrtp -o test_$@ ./test_$@ + +asc2bin: + g++ ${CFLAGS} ${LIBS} -g test.cc test_$@.cc -o test_$@ + ./test_$@ diff --git a/test/test.cc b/test/test.cc new file mode 100644 index 0000000..171a578 --- /dev/null +++ b/test/test.cc @@ -0,0 +1,22 @@ +#include +#include +#include + +int main(int argc, char* argv[]) +{ + // Get the top level suite from the registry + CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); + + // Adds the test to the list of test to run + CppUnit::TextUi::TestRunner runner; + runner.addTest( suite ); + + // Change the default outputter to a compiler error format outputter + runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), + std::cerr ) ); + // Run the tests. + bool wasSucessful = runner.run(); + + // Return error code 1 if the one of test failed. + return wasSucessful ? 0 : 1; +} diff --git a/test/test_asc2bin.cc b/test/test_asc2bin.cc new file mode 100644 index 0000000..38010bf --- /dev/null +++ b/test/test_asc2bin.cc @@ -0,0 +1,65 @@ +#include + +#include "../src/asc2bin.h" +#include "../src/asc2bin.cc" + +static int g_i = -1; + +class test_asc2bin : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(test_asc2bin); + CPPUNIT_TEST(test_asc2nibble); + CPPUNIT_TEST(test_asc2bin_); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp() {} + void tearDown() {} + + void test_asc2nibble() { + CPPUNIT_ASSERT_EQUAL(asc2nibble('0'), 0x0); + CPPUNIT_ASSERT_EQUAL(asc2nibble('1'), 0x1); + CPPUNIT_ASSERT_EQUAL(asc2nibble('2'), 0x2); + CPPUNIT_ASSERT_EQUAL(asc2nibble('3'), 0x3); + CPPUNIT_ASSERT_EQUAL(asc2nibble('4'), 0x4); + CPPUNIT_ASSERT_EQUAL(asc2nibble('5'), 0x5); + CPPUNIT_ASSERT_EQUAL(asc2nibble('6'), 0x6); + CPPUNIT_ASSERT_EQUAL(asc2nibble('7'), 0x7); + CPPUNIT_ASSERT_EQUAL(asc2nibble('8'), 0x8); + CPPUNIT_ASSERT_EQUAL(asc2nibble('9'), 0x9); + CPPUNIT_ASSERT_EQUAL(asc2nibble('a'), 0xa); + CPPUNIT_ASSERT_EQUAL(asc2nibble('b'), 0xb); + CPPUNIT_ASSERT_EQUAL(asc2nibble('c'), 0xc); + CPPUNIT_ASSERT_EQUAL(asc2nibble('d'), 0xd); + CPPUNIT_ASSERT_EQUAL(asc2nibble('e'), 0xe); + CPPUNIT_ASSERT_EQUAL(asc2nibble('f'), 0xf); + + CPPUNIT_ASSERT_EQUAL(asc2nibble('A'), 0xa); + CPPUNIT_ASSERT_EQUAL(asc2nibble('B'), 0xb); + CPPUNIT_ASSERT_EQUAL(asc2nibble('C'), 0xc); + CPPUNIT_ASSERT_EQUAL(asc2nibble('D'), 0xd); + CPPUNIT_ASSERT_EQUAL(asc2nibble('E'), 0xe); + CPPUNIT_ASSERT_EQUAL(asc2nibble('F'), 0xf); + } + + void test_asc2bin_() { + char val[32] = {}; + const char h[] = "0123456789abcdefABCDEF0000000000"; + char ref[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00 }; + std::string sref; + sref.append(ref, sizeof(ref)); + + ssize_t sz = asc2bin(val, sizeof(val), h, strlen(h)); + + CPPUNIT_ASSERT_EQUAL((unsigned int)sz, sizeof(ref)); + + std::string sval; + sval.append(val, sz); + + CPPUNIT_ASSERT_EQUAL(sval, sref); + } +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(test_asc2bin); -- cgit v1.2.3