68 lines
2.1 KiB
C++
68 lines
2.1 KiB
C++
#include <cxxtest/TestSuite.h>
|
|
|
|
#include "posutil.hh"
|
|
|
|
class PosUtil_test: public CxxTest::TestSuite
|
|
{
|
|
public:
|
|
|
|
void test_wifi(void)
|
|
{
|
|
// Bad values
|
|
TS_ASSERT_EQUALS(PosUtil::channel_to_frequency(0),
|
|
static_cast<unsigned int>(0)) ;
|
|
TS_ASSERT_EQUALS(PosUtil::channel_to_frequency(15),
|
|
static_cast<unsigned int>(0)) ;
|
|
|
|
// Good values
|
|
for (unsigned int i = 1 ; i < 15 ; ++i)
|
|
TS_ASSERT(PosUtil::channel_to_frequency(i) >= 2412 &&
|
|
PosUtil::channel_to_frequency(i) <= 2477) ;
|
|
}
|
|
|
|
void test_time(void)
|
|
{
|
|
// Zero tests
|
|
struct timespec ts1 ;
|
|
ts1.tv_sec = 0 ;
|
|
ts1.tv_nsec = 0 ;
|
|
uint64_t msec = 0 ; // ms time value
|
|
struct timespec ts2 = PosUtil::ms_to_timespec(msec) ;
|
|
TS_ASSERT(PosUtil::timespec_equals(ts1, ts2)) ;
|
|
TS_ASSERT_EQUALS(PosUtil::timespec_to_ms(ts1), msec) ;
|
|
|
|
// Non-zero tests
|
|
uint64_t sec = 1234567 ;
|
|
uint64_t nsec = 891234567 ; // Do not put a value >= 1 sec. for the test!
|
|
ts1.tv_sec = sec ;
|
|
ts1.tv_nsec = nsec ;
|
|
msec = sec * 1000 + nsec / 1000000 ;
|
|
TS_ASSERT_EQUALS(PosUtil::timespec_to_ms(ts1), msec) ;
|
|
ts2 = PosUtil::ms_to_timespec(msec) ;
|
|
TS_ASSERT_EQUALS(PosUtil::timespec_to_ms(ts2), msec) ;
|
|
|
|
// timespec_round_to_ms()
|
|
struct timespec ts3 = ts1 ;
|
|
PosUtil::timespec_round_to_ms(ts1) ;
|
|
TS_ASSERT_EQUALS(ts1.tv_sec, ts3.tv_sec) ;
|
|
TS_ASSERT_EQUALS(ts1.tv_nsec, ts3.tv_nsec / 1000000 * 1000000) ;
|
|
TS_ASSERT(PosUtil::timespec_equals(ts1, ts2)) ;
|
|
|
|
// Current time test
|
|
struct timespec current_time ;
|
|
if (clock_gettime(CLOCK_REALTIME, ¤t_time))
|
|
TS_FAIL("Error calling clock_gettime()!") ;
|
|
else
|
|
{
|
|
ts1 = current_time ;
|
|
PosUtil::timespec_round_to_ms(current_time) ;
|
|
TS_ASSERT(! PosUtil::timespec_equals(current_time, ts1)) ;
|
|
msec = PosUtil::timespec_to_ms(current_time) ;
|
|
ts2 = PosUtil::ms_to_timespec(msec) ;
|
|
TS_ASSERT_EQUALS(PosUtil::timespec_to_ms(ts2), msec) ;
|
|
TS_ASSERT(PosUtil::timespec_equals(current_time, ts2)) ;
|
|
}
|
|
}
|
|
|
|
} ;
|