From d49456eb7563f9ecbf6d3b2b5a2c52c3edd15b1e Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Mon, 6 Jan 2014 08:21:09 +0100 Subject: Add freslist test. --- test/test_framelist.cc | 174 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 test/test_framelist.cc diff --git a/test/test_framelist.cc b/test/test_framelist.cc new file mode 100644 index 0000000..27b38f6 --- /dev/null +++ b/test/test_framelist.cc @@ -0,0 +1,174 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * test_framelist.cc + * + * Fri Jan 3 08:45:14 CET 2014 + * Copyright 2014 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of lrtp. + * + * lrtp is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * lrtp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with lrtp; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include + +#include +#include "../src/rtp.h" + +#include + +#include +#include + +#define KEY "123456789012345678901234567890123456789012345678901234567890" +#define SSRC 1234567890 + +class test_conn_class : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(test_conn_class); + CPPUNIT_TEST(test_framelist_single); + CPPUNIT_TEST(test_framelist); + CPPUNIT_TEST_SUITE_END(); + +public: + void setUp() {} + void tearDown() {} + + void test_framelist_single() { + int ret; + + std::vector packets; + unsigned int csrc = 42; + + union { + int n; + char c[sizeof(int)]; + } num[3]; + + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + ret = lrtp_create_profile(lrtp, PROFILE_RAW, csrc, + OPTION_RAW_PKG_SIZE, sizeof(num), + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[0].n = 0; + ret = lrtp_enqueue_frame(lrtp, csrc, num[0].c, sizeof(num), 0); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[1].n = 1; + ret = lrtp_enqueue_frame(lrtp, csrc, num[1].c, sizeof(num), 1); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[2].n = 2; + ret = lrtp_enqueue_frame(lrtp, csrc, num[2].c, sizeof(num), 2); + CPPUNIT_ASSERT_EQUAL(0, ret); + + for(int i = 0; i < 3; i++) { + char packet[16*1024]; + + ret = lrtp_pack(lrtp, packet, sizeof(packet)); + CPPUNIT_ASSERT_EQUAL((int)(16 + sizeof(num)), ret); + + RTP rtp; + + ret = rtp.fromPacket(packet, ret); + CPPUNIT_ASSERT_EQUAL((int)(16 + sizeof(num)), ret); + + int n = *((int*)rtp.payloadData()); + + CPPUNIT_ASSERT_EQUAL(i, n); + } + + lrtp_destroy_profile(lrtp, csrc); + + lrtp_close(lrtp); + } + + void test_framelist() { + int ret; + + std::vector packets; + unsigned int csrc = 42; + + union { + int n; + char c[sizeof(int)]; + } num[4]; + + struct lrtp_t *lrtp = lrtp_init(KEY, SSRC); + + ret = lrtp_create_profile(lrtp, PROFILE_RAW, csrc + 2, + OPTION_RAW_PKG_SIZE, sizeof(num), + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, ret); + + ret = lrtp_create_profile(lrtp, PROFILE_RAW, csrc, + OPTION_RAW_PKG_SIZE, sizeof(num), + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, ret); + + ret = lrtp_create_profile(lrtp, PROFILE_RAW, csrc + 1, + OPTION_RAW_PKG_SIZE, sizeof(num), + OPTION_END); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[0].n = 0; + ret = lrtp_enqueue_frame(lrtp, csrc, num[0].c, sizeof(num), 0); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[1].n = 2; + ret = lrtp_enqueue_frame(lrtp, csrc + 2, num[1].c, sizeof(num), 1); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[2].n = 1; + ret = lrtp_enqueue_frame(lrtp, csrc + 1, num[2].c, sizeof(num), 2); + CPPUNIT_ASSERT_EQUAL(0, ret); + + num[3].n = 3; + ret = lrtp_enqueue_frame(lrtp, csrc + 1, num[3].c, sizeof(num), 3); + CPPUNIT_ASSERT_EQUAL(0, ret); + + for(int i = 0; i < 4; i++) { + char packet[16*1024]; + + ret = lrtp_pack(lrtp, packet, sizeof(packet)); + CPPUNIT_ASSERT_EQUAL((int)(16 + sizeof(num)), ret); + + RTP rtp; + + ret = rtp.fromPacket(packet, ret); + CPPUNIT_ASSERT_EQUAL((int)(16 + sizeof(num)), ret); + + int n = *((int*)rtp.payloadData()); + + CPPUNIT_ASSERT_EQUAL(i, n); + } + + lrtp_destroy_profile(lrtp, csrc); + lrtp_destroy_profile(lrtp, csrc + 1); + lrtp_destroy_profile(lrtp, csrc + 2); + + lrtp_close(lrtp); + } +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(test_conn_class); + + -- cgit v1.2.3