Commit bcbc6fcc authored by Guillaume Roguez's avatar Guillaume Roguez

test: refactoring test files

* moved unit-tests into the dedicated directory unitTest
* removed no-more-used files
* common code style for test and usage of test_runner.h everywhere
* imported video_input changes by Olivier Grégoire (GSoC-2017)

Change-Id: Ifbb5585caaa2618c4ab943681814c9afbfc76311
Reviewed-by: default avatarOlivier Soldano <olivier.soldano@savoirfairelinux.com>
parent c9378ff2
......@@ -6,7 +6,7 @@ SOURCES=
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = src ringtones man $(TESTS_DIR) doc bin test
SUBDIRS = src ringtones man doc bin test
EXTRA_DIST = m4/libtool.m4 \
m4/lt~obsolete.m4 \
......
......@@ -14,7 +14,7 @@ AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([-Wno-portability])
AM_INIT_AUTOMAKE([-Wno-portability subdir-objects])
m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) # required by automake 1.12
AC_CONFIG_HEADERS([config.h])
......@@ -725,9 +725,8 @@ AC_CONFIG_FILES([Makefile \
ringtones/Makefile \
test/Makefile\
test/sip/Makefile \
test/base64/Makefile \
test/media/Makefile \
test/media/video/Makefile \
test/unitTest/Makefile \
man/Makefile \
doc/Makefile \
doc/doxygen/Makefile])
......
*.o
# test binaries
ut_*
test_*
# test result files
*.log
*.trs
.dirstamp
dring-sample.yml.bak
\ No newline at end of file
SUBDIRS=sip
SUBDIRS+=base64
SUBDIRS+=media
SUBDIRS = sip
SUBDIRS += unitTest
*.o
# test result files
*.log
*.trs
#test binaries
sip
base64
include $(top_srcdir)/globals.mk
AM_CXXFLAGS=-I$(top_srcdir)/src/media/video -I$(top_srcdir)/src
check_PROGRAMS=
#
# base64 testsuite
#
check_PROGRAMS+= base64
base64_SOURCES= base64.cpp
base64_LDADD= $(CPPUNIT_LIBS) $(top_builddir)/src/libring.la
#
# video_input testsuite
#
#check_PROGRAMS+= test_video_input
#test_video_input_SOURCES= media/video/test_video_input.cpp media/video/test_video_input.h
#test_video_input_LDADD= $(top_builddir)/src/libring.la $(top_builddir)/src/media/video/libvideo.la $(YAML_LIBS)
##################
# EXCLUDED_TEST SUITES #
##################
# test_video_rtp
# reason: compilation fails
# test_video_rtp.cpp:38:19: error: no matching function for call to ‘ring::video::VideoRtpSession::start()’
#
# test_video_rtp_SOURCES= media/video/test_video_rtp.cpp
# test_video_rtp_LDADD= $(top_builddir)/src/libring.la $(top_builddir)/src/media/video/libvideo.la $(YAML_LIBS)
#
#
# test_shm (compilation fails, include file not in repository?)
# reason: compilation fails, include file not in repository:
# test_video_input.cpp.cpp:21:22: fatal error: shm_sink.h: No such file or directory
#
# if HAVE_LINUX
# test_shm_SOURCES= media/video/test_shm.cpp media/video/shm_src.cpp media/video/shm_src.h
# test_shm_LDADD= $(top_builddir)/src/libring.la $(top_builddir)/src/media/video/libvideo.la $(YAML_LIBS) -lrt
# test_shm_CXXFLAGS=$(AM_CXXFLAGS)
# endif
TESTS= $(check_PROGRAMS)
#include <cppunit/TestAssert.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "test_runner.hpp"
#include "base64.h"
namespace ring_test {
class Base64Test : public CppUnit::TestFixture {
public:
static std::string name() { return "base64"; }
private:
void encodingTest();
void decodingTestSuccess();
void decodingTestFail();
CPPUNIT_TEST_SUITE(Base64Test);
CPPUNIT_TEST(encodingTest);
CPPUNIT_TEST(decodingTestSuccess);
CPPUNIT_TEST(decodingTestFail);
CPPUNIT_TEST_SUITE_END();
const std::vector<uint8_t> test_bytes = { 23, 45, 67, 87, 89, 34, 2, 45, 9, 10 };
const std::string test_base64 = "Fy1DV1kiAi0JCg==";
const std::string test_invalid_base64 = "ERSAÄÖöädt4-++asd==";
};
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Base64Test, Base64Test::name());
void Base64Test::encodingTest()
{
const std::string output = ring::base64::encode(test_bytes);
CPPUNIT_ASSERT(test_base64.compare(output) == 0);
}
void Base64Test::decodingTestSuccess()
{
const std::vector<uint8_t> output = ring::base64::decode(test_base64);
CPPUNIT_ASSERT(std::equal(test_bytes.begin(), test_bytes.end(), output.begin()));
}
void Base64Test::decodingTestFail()
{
// Currently, the input is not validated, i.e. the function most not throw an
// exception if decoding fails to make sure calling code not expecting any
// is no broken. (Some validation should be implemented sometimes later, though.
ring::base64::decode(test_invalid_base64);
CPPUNIT_ASSERT(true);
}
} // namespace tests
RING_TEST_RUNNER(ring_test::Base64Test::name())
include $(top_srcdir)/globals.mk
SUBDIRS= video
include $(top_srcdir)/globals.mk
check_PROGRAMS=
#
# video_input testsuite
#
check_PROGRAMS+= test_video_input
test_video_input_SOURCES= test_video_input.cpp test_video_input.h
test_video_input_LDADD= $(top_builddir)/src/libring.la
TESTS= $(check_PROGRAMS)
c++ shm_src.cpp shmclient.cpp -o shmclient `pkg-config --cflags --libs clutter-1.0` -lrt -pthread -O2
# Rules for the test code (use `make check` to execute)
include $(top_srcdir)/globals.mk
TESTS = sip
check_PROGRAMS = $(TESTS)
sip_LDADD = $(top_builddir)/src/libring.la
sip_SOURCES = sip.cpp test_SIP.h test_SIP.cpp ../../manager.h
sip_CXXFLAGS = $(CPPUNIT_CFLAGS)
sip_LDFLAGS = $(CPPUNIT_LIBS) -ldl
AM_CXXFLAGS = -I$(top_srcdir)/src
AM_LDFLAGS = $(CPPUNIT_LIBS) $(top_builddir)/src/libring.la
check_PROGRAMS = test_sip
test_sip_SOURCES = sip.cpp test_SIP.h test_SIP.cpp
TESTS = $(check_PROGRAMS)
# Rules for the test code (use `make check` to execute)
include $(top_srcdir)/globals.mk
AM_CXXFLAGS = -I$(top_srcdir)/src
AM_LDFLAGS = $(CPPUNIT_LIBS) $(top_builddir)/src/libring.la
check_PROGRAMS =
####### Unit Test ########
#
# base64
#
check_PROGRAMS += ut_base64
ut_base64_SOURCES = base64/base64.cpp
#
# video_input testsuite
#
check_PROGRAMS += ut_video_input
ut_video_input_SOURCES = media/video/testVideo_input.cpp
TESTS = $(check_PROGRAMS)
/*
* Copyright (C) 2011-2017 Savoir-faire Linux Inc.
*
* Author: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
* Author: florian Wiesweg <florian.wiesweg@campus.tu-berlin.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -18,16 +18,62 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef _VIDEO_INPUT_TEST_
#define _VIDEO_INPUT_TEST_
#include <cppunit/TestAssert.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
namespace ring { namespace video { namespace test {
#include "test_runner.h"
class VideoInputTest {
#include "base64.h"
namespace ring { namespace test {
class Base64Test : public CppUnit::TestFixture {
public:
void testInput();
static std::string name() { return "base64"; }
private:
void encodingTest();
void decodingTestSuccess();
void decodingTestFail();
CPPUNIT_TEST_SUITE(Base64Test);
CPPUNIT_TEST(encodingTest);
CPPUNIT_TEST(decodingTestSuccess);
CPPUNIT_TEST(decodingTestFail);
CPPUNIT_TEST_SUITE_END();
const std::vector<uint8_t> test_bytes = { 23, 45, 67, 87, 89, 34, 2, 45, 9, 10 };
const std::string test_base64 = "Fy1DV1kiAi0JCg==";
const std::string test_invalid_base64 = "ERSAÄÖöädt4-++asd==";
};
}}} // namespace ring::video::test
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Base64Test, Base64Test::name());
void
Base64Test::encodingTest()
{
const std::string output = ring::base64::encode(test_bytes);
CPPUNIT_ASSERT(test_base64.compare(output) == 0);
}
void
Base64Test::decodingTestSuccess()
{
const std::vector<uint8_t> output = ring::base64::decode(test_base64);
CPPUNIT_ASSERT(std::equal(test_bytes.begin(), test_bytes.end(), output.begin()));
}
void
Base64Test::decodingTestFail()
{
// Currently, the input is not validated, i.e. the function most not throw an
// exception if decoding fails to make sure calling code not expecting any
// is no broken. (Some validation should be implemented sometimes later, though.
ring::base64::decode(test_invalid_base64);
CPPUNIT_ASSERT(true);
}
}} // namespace ring::test
#endif // _VIDEO_INPUT_TEST_
RING_TEST_RUNNER(ring::test::Base64Test::name());
......@@ -2,6 +2,7 @@
* Copyright (C) 2011-2017 Savoir-faire Linux Inc.
*
* Author: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
* Author: Olivier Gregoire <olivier.gregoire@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -18,30 +19,53 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "test_video_input.h"
#include <cppunit/TestAssert.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "test_runner.h"
#include "media/video/video_input.h"
#include "media_const.h"
#include "dring.h"
#include <map>
#include <string>
namespace ring { namespace video { namespace test {
namespace ring { namespace test {
class VideoInputTest : public CppUnit::TestFixture {
public:
static std::string name() { return "video_input"; }
private:
void testInput();
void init_daemon();
CPPUNIT_TEST_SUITE(VideoInputTest);
CPPUNIT_TEST(init_daemon);
CPPUNIT_TEST(testInput);
CPPUNIT_TEST_SUITE_END();
};
void VideoInputTest::testInput()
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(VideoInputTest, VideoInputTest::name());
void
VideoInputTest::init_daemon()
{
DRing::init(DRing::InitFlag(DRing::DRING_FLAG_DEBUG | DRing::DRING_FLAG_CONSOLE_LOG));
DRing::start("dring-sample.yml");
}
void
VideoInputTest::testInput()
{
static const std::string sep = DRing::Media::VideoProtocolPrefix::SEPARATOR;
std::string resource = DRing::Media::VideoProtocolPrefix::DISPLAY + sep + std::string(getenv("DISPLAY") ? : ":0.0");
VideoInput video;
video::VideoInput video;
video.switchInput(resource);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
}}} // namespace ring::video::test
}} // namespace ring::test
int main ()
{
for (int i = 0; i < 20; ++i) {
ring::video::test::VideoInputTest test;
test.testInput();
}
return 0;
}
RING_TEST_RUNNER(ring::test::VideoInputTest::name());
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment