mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-22 20:47:36 +08:00
unittests: add versioning test
This commit is contained in:
committed by
Beat Küng
parent
28ca3b8d4c
commit
bb644ee087
@@ -29,6 +29,7 @@ set(tests
|
||||
sf0x
|
||||
sleep
|
||||
uorb
|
||||
versioning
|
||||
)
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
|
||||
@@ -63,6 +63,7 @@ set(srcs
|
||||
test_uart_console.c
|
||||
test_uart_loopback.c
|
||||
test_uart_send.c
|
||||
test_versioning.cpp
|
||||
tests_main.c
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
#include <unit_test.h>
|
||||
#include <version/version.h>
|
||||
|
||||
class VersioningTest : public UnitTest
|
||||
{
|
||||
public:
|
||||
virtual bool run_tests();
|
||||
|
||||
private:
|
||||
bool _is_correct_version_tag(const char *version_tag, uint32_t result_goal);
|
||||
bool _is_correct_version_tag_vendor(const char *version_tag, uint32_t result_goal);
|
||||
|
||||
bool _test_flight_version();
|
||||
bool _test_vendor_version();
|
||||
};
|
||||
|
||||
bool VersioningTest::_is_correct_version_tag(const char *version_tag, uint32_t result_goal)
|
||||
{
|
||||
uint32_t result = version_tag_to_number(version_tag);
|
||||
|
||||
if (result == result_goal) {
|
||||
return true;
|
||||
|
||||
} else {
|
||||
PX4_ERR("Wrong version: tag: %s, got: 0x%x, expected: 0x%x", version_tag, result, result_goal);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool VersioningTest::_is_correct_version_tag_vendor(const char *version_tag, uint32_t result_goal)
|
||||
{
|
||||
uint32_t result = version_tag_to_vendor_version_number(version_tag);
|
||||
|
||||
if (result == result_goal) {
|
||||
return true;
|
||||
|
||||
} else {
|
||||
PX4_ERR("Wrong version: tag: %s, got: 0x%x, expected: 0x%x", version_tag, result, result_goal);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool VersioningTest::run_tests()
|
||||
{
|
||||
ut_run_test(_test_flight_version);
|
||||
ut_run_test(_test_vendor_version);
|
||||
|
||||
return (_tests_failed == 0);
|
||||
}
|
||||
|
||||
bool VersioningTest::_test_flight_version()
|
||||
{
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3", 0xB2D63ff));
|
||||
ut_assert_true(_is_correct_version_tag("v1.2.3", 0x010203ff));
|
||||
ut_assert_true(_is_correct_version_tag("v255.255.255", 0xffffffff));
|
||||
ut_assert_true(_is_correct_version_tag("v255.255.255-11", 0xffffff00));
|
||||
ut_assert_true(_is_correct_version_tag("v1.2.3-111", 0x01020300));
|
||||
ut_assert_true(_is_correct_version_tag("v1.2.3-11-abababab", 0x01020300));
|
||||
ut_assert_true(_is_correct_version_tag("11.45.99-1.2.3", 0x0B2D63ff));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3rc3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3rc4", 0x0B2D63C0));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3alpha3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3alpha4", 0x0B2D6340));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3beta3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3beta4", 0x0B2D6380));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3dev4", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag("v11.45.99-1.2.3dev3-7-g7e282f57", 0xB2D6300));
|
||||
ut_assert_true(_is_correct_version_tag("0.45.99-1.2.3beta4", 0x002D6380));
|
||||
ut_assert_true(_is_correct_version_tag("0.0.0-1.2.3beta4", 0x00000080));
|
||||
ut_assert_true(_is_correct_version_tag("0.0.0-1.2.3dev4", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-1.0.0", 0x010602ff));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-1.0.0rc2", 0x010602C0));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-1.0.0-rc2", 0x010602C0));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-1.0.0-rc2-abababab", 0x01060200));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-rc2", 0x010602C0));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2rc1", 0x010602C0));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.10-100-g890c415", 0x01060A00));
|
||||
ut_assert_true(_is_correct_version_tag("v1.6.2-0.8.7-67-g1d5e979", 0x01060200));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VersioningTest::_test_vendor_version()
|
||||
{
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha23", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-34.56.88", 0x223858));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-1.2.3", 0x010203));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-11.45.99", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255", 0xFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255-11", 0xFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-rc2", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11-abababab", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-abababab", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-23-abababab", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-0.8.7-67-g1d5e979", 0x000807));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.0-100-g890c415", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.45.99beta4", 0x002D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0beta4", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0dev4", 0x000000));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ut_declare_test_c(test_versioning, VersioningTest);
|
||||
@@ -125,6 +125,7 @@ const struct {
|
||||
{"tone", test_tone, 0},
|
||||
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||
{"versioning", test_versioning, 0},
|
||||
{NULL, NULL, 0}
|
||||
};
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ extern int test_uart_console(int argc, char *argv[]);
|
||||
extern int test_uart_loopback(int argc, char *argv[]);
|
||||
extern int test_uart_send(int argc, char *argv[]);
|
||||
extern int test_parameters(int argc, char *argv[]);
|
||||
extern int test_versioning(int argc, char *argv[]);
|
||||
|
||||
/* external */
|
||||
extern int commander_tests_main(int argc, char *argv[]);
|
||||
|
||||
Reference in New Issue
Block a user