From 5cccc01cd472f5a906ce21bbafd9d35d90bf7227 Mon Sep 17 00:00:00 2001 From: Andreas Antener Date: Tue, 3 Feb 2015 10:35:20 +0100 Subject: added unit test directive to switch out parameter storage --- src/modules/systemlib/param/param.c | 17 ++++++++++------- unittests/CMakeLists.txt | 5 ++--- unittests/param_test.cpp | 29 ++++++++++++----------------- unittests/uorb_stub.cpp | 21 +++++++++++++++++++++ 4 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 unittests/uorb_stub.cpp diff --git a/src/modules/systemlib/param/param.c b/src/modules/systemlib/param/param.c index 11c1a2019..7ff71a802 100644 --- a/src/modules/systemlib/param/param.c +++ b/src/modules/systemlib/param/param.c @@ -70,9 +70,16 @@ /** * Array of static parameter info. */ -struct param_info_s param_array[2]; -static const struct param_info_s *param_info_base = (struct param_info_s *) ¶m_array[0]; -static const struct param_info_s *param_info_limit = (struct param_info_s *) ¶m_array[1]; +#ifdef _UNIT_TEST + extern struct param_info_s param_array[]; + extern struct param_info_s *param_info_base; + extern struct param_info_s *param_info_limit; +#else + extern char __param_start, __param_end; + static const struct param_info_s *param_info_base = (struct param_info_s *) &__param_start; + static const struct param_info_s *param_info_limit = (struct param_info_s *) &__param_end; +#endif + #define param_info_count ((unsigned)(param_info_limit - param_info_base)) /** @@ -200,14 +207,10 @@ param_notify_changes(void) param_t param_find(const char *name) { - warn("debug info count %i\n", param_count()); - //warn("start: %i\n", __param_start); - param_t param; /* perform a linear search of the known parameters */ for (param = 0; handle_in_range(param); param++) { - warn("param find: %s", param_info_base[param].name); if (!strcmp(param_info_base[param].name, name)) return param; } diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index c2ef39652..e1f4120fc 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -31,6 +31,7 @@ add_definitions(-Dnoreturn_function=) add_definitions(-Dmain_t=int) add_definitions(-DERROR=-1) add_definitions(-DOK=0) +add_definitions(-D_UNIT_TEST=) # check add_custom_target(unittests COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure) @@ -81,10 +82,8 @@ add_gtest(sf0x_test) # param_test add_executable(param_test param_test.cpp hrt.cpp - stubs.cpp - ${PX_SRC}/modules/systemlib/visibility.h + uorb_stub.cpp ${PX_SRC}/modules/systemlib/param/param.c ${PX_SRC}/modules/systemlib/bson/tinybson.c - ${PX_SRC}/drivers/drv_hrt.h ) add_gtest(param_test) diff --git a/unittests/param_test.cpp b/unittests/param_test.cpp index 2d71d3b49..b3aff34e8 100644 --- a/unittests/param_test.cpp +++ b/unittests/param_test.cpp @@ -3,33 +3,28 @@ #include "gtest/gtest.h" -//#PARAM_DEFINE_INT32(TEST_A, 5); - - -static const struct param_info_s testparam = { - "test", +static const struct param_info_s test_1 = { + "TEST_1", PARAM_TYPE_INT32, .val.i = 2 }; - -extern param_info_s *__param_start, *__param_end; -extern struct param_info_s param_array[]; -const struct param_info_s *ib = __param_start; -const struct param_info_s *il = __param_end; +struct param_info_s param_array[256]; +struct param_info_s *param_info_base; +struct param_info_s *param_info_limit; TEST(ParamTest, ResetAll) { - param_array[0] = testparam; + param_array[0] = test_1; + param_info_base = (struct param_info_s *) ¶m_array[0]; + param_info_limit = (struct param_info_s *) ¶m_array[1]; - printf("diff: %i\n", (unsigned)(il - ib)); - printf("start: %i\n", __param_start); - printf("end: %i\n", __param_end); + printf("diff: %i\n", (unsigned)(param_info_limit - param_info_base)); - param_t testparam = param_find("test"); - ASSERT_NE(PARAM_INVALID, testparam) << "param_find failed"; + param_t test_1 = param_find("TEST_1"); + ASSERT_NE(PARAM_INVALID, test_1) << "param_find failed"; int32_t value; - int result = param_get(testparam, &value); + int result = param_get(test_1, &value); ASSERT_EQ(0, result) << "param_get failed"; ASSERT_EQ(2, value) << "wrong param value"; diff --git a/unittests/uorb_stub.cpp b/unittests/uorb_stub.cpp new file mode 100644 index 000000000..fc039a408 --- /dev/null +++ b/unittests/uorb_stub.cpp @@ -0,0 +1,21 @@ +#include +#include +//#include "gmock/gmock.h" + +#include "uORB/uORB.h" + +/****************************************** + * uORB stubs (incomplete) + * + * TODO: use googlemock +******************************************/ + +orb_advert_t orb_advertise(const struct orb_metadata *meta, const void *data) { + return (orb_advert_t)0; +} + +int orb_publish(const struct orb_metadata *meta, orb_advert_t handle, const void *data) { + return 0; +} + + -- cgit v1.2.3