#ifdef WITH_TESTS #include "../../Tests.h" #include "../../../sensors/radio/LogDistanceModel.h" TEST(LogDistanceModel, calc) { const float txp = -40; const float exp = 1; ASSERT_EQ(-40, LogDistanceModel::distanceToRssi(txp, exp, 1.0)); // only exponent changed. at 1.0 meter: no difference ASSERT_EQ(LogDistanceModel::distanceToRssi(-40, 1.0, 1.0), LogDistanceModel::distanceToRssi(-40, 2.0, 1.0)); // distance increment ASSERT_GT(LogDistanceModel::distanceToRssi(-40, 1.0, 1.0), LogDistanceModel::distanceToRssi(-40, 1.0, 2.0)); // exponent at more than 1.0m ASSERT_GT(LogDistanceModel::distanceToRssi(-40, 1.0, 3.0), LogDistanceModel::distanceToRssi(-40, 1.1, 3.0)); // other txp ASSERT_GT(LogDistanceModel::distanceToRssi(-40, 1.0, 1.0), LogDistanceModel::distanceToRssi(-45, 1.0, 1.0)); } TEST(LogDistanceModel, forwardBackward) { const float txp = -40; const float exp = 1; ASSERT_EQ(1.0, LogDistanceModel::rssiToDistance(txp, exp, LogDistanceModel::distanceToRssi(txp, exp, 1.0))); ASSERT_EQ(5.0, LogDistanceModel::rssiToDistance(txp, exp, LogDistanceModel::distanceToRssi(txp, exp, 5.0))); ASSERT_EQ(10.0, LogDistanceModel::rssiToDistance(txp, exp, LogDistanceModel::distanceToRssi(txp, exp, 10.0))); } #endif