73 lines
1.9 KiB
C++
73 lines
1.9 KiB
C++
#include <di/time.h>
|
|
#include <di/tws/du/strike.h>
|
|
#include <stdio.h>
|
|
#include <di/array.h>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
extern "C" {
|
|
#include "time.c"
|
|
}
|
|
|
|
TEST(time, init) {
|
|
di_time_init();
|
|
}
|
|
|
|
TEST(tws_du_strike, in) {
|
|
struct tv {
|
|
bool in;
|
|
di_time_t time;
|
|
bool out;
|
|
} tvs[] = {
|
|
{ true, 0, true }, // rising edge
|
|
{ false, 250, false }, // falling edge
|
|
{ true, 500, false }, // rising edge
|
|
{ false, 750, false }, // falling edge
|
|
{ false, 5750, false }, // false signal
|
|
{ false, 6000, false }, // false signal
|
|
{ true, 6250, true } // rising edge
|
|
};
|
|
|
|
struct di_tws_du_strike s;
|
|
di_tws_du_strike_init(&s);
|
|
di_tws_du_strike_reset(&s, DI_RPC_DU_STRIKE_ROLE_STRIKE_IN, DI_TWS_DU_STRIKE_ULTRASONIC_HOLDOFF_TIME_MS);
|
|
|
|
for (size_t n = 0; n < DI_ARRAY_SIZE(tvs); n++) {
|
|
_di_time_uptime = tvs[n].time;
|
|
ASSERT_EQ(tvs[n].out, di_tws_du_strike_update(&s, tvs[n].in)) <<
|
|
"n=" << n << " time=" << tvs[n].time << std::boolalpha <<
|
|
" in=" << tvs[n].in << " out=" << tvs[n].out;
|
|
}
|
|
|
|
ASSERT_EQ(2U, s.train_counter);
|
|
}
|
|
|
|
TEST(tws_du_strike, out) {
|
|
struct tv {
|
|
bool in;
|
|
di_time_t time;
|
|
bool out;
|
|
} tvs[] = {
|
|
{ true, 0, false }, // rising edge
|
|
{ false, 250, false }, // falling edge
|
|
{ true, 500, false }, // rising edge
|
|
{ false, 750, false }, // falling edge
|
|
{ false, 5750, true }, // false signal
|
|
{ false, 6000, false }, // false signal
|
|
{ true, 6250, false } // rising edge
|
|
};
|
|
|
|
struct di_tws_du_strike s;
|
|
di_tws_du_strike_init(&s);
|
|
di_tws_du_strike_reset(&s, DI_RPC_DU_STRIKE_ROLE_STRIKE_OUT, DI_TWS_DU_STRIKE_ULTRASONIC_HOLDOFF_TIME_MS);
|
|
|
|
for (size_t n = 0; n < DI_ARRAY_SIZE(tvs); n++) {
|
|
_di_time_uptime = tvs[n].time;
|
|
ASSERT_EQ(tvs[n].out, di_tws_du_strike_update(&s, tvs[n].in)) <<
|
|
"n=" << n << " time=" << tvs[n].time << std::boolalpha <<
|
|
" in=" << tvs[n].in << " out=" << tvs[n].out;
|
|
}
|
|
|
|
ASSERT_EQ(1U, s.train_counter);
|
|
}
|