@@ -41,6 +41,46 @@ void test_math_map3()
4141 TEST_ASSERT_FLOAT_WITHIN (1 .f , -500 .f , Utils::map3 (-50 .0f , -100 .0f , 0 .0f , 100 .0f , -1000 .0f , 0 .0f , 1000 .0f ));
4242}
4343
44+ void test_math_fcast ()
45+ {
46+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int8_t >(0 .0f ));
47+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int8_t >(0 .1f ));
48+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int8_t >(0 .5f ));
49+ TEST_ASSERT_EQUAL_INT32 ( 1 , Utils::fcast<int8_t >(0 .501f ));
50+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int8_t >(-0 .5f ));
51+ TEST_ASSERT_EQUAL_INT32 ( -1 , Utils::fcast<int8_t >(-0 .51f ));
52+ TEST_ASSERT_EQUAL_INT32 ( 127 , Utils::fcast<int8_t >(127 .0f ));
53+ TEST_ASSERT_EQUAL_INT32 ( -128 , Utils::fcast<int8_t >(-128 .0f ));
54+ TEST_ASSERT_EQUAL_INT32 ( 127 , Utils::fcast<int8_t >(32767 .0f ));
55+ TEST_ASSERT_EQUAL_INT32 ( -128 , Utils::fcast<int8_t >(-32768 .0f ));
56+ TEST_ASSERT_EQUAL_INT32 ( 127 , Utils::fcast<int8_t >(50000 .0f ));
57+ TEST_ASSERT_EQUAL_INT32 ( -128 , Utils::fcast<int8_t >(-50000 .0f ));
58+
59+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(0 .0f ));
60+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(0 .5f ));
61+ TEST_ASSERT_EQUAL_INT32 ( 1 , Utils::fcast<uint8_t >(0 .501f ));
62+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(-0 .5f ));
63+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(-0 .51f ));
64+ TEST_ASSERT_EQUAL_INT32 ( 127 , Utils::fcast<uint8_t >(127 .0f ));
65+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(-128 .0f ));
66+ TEST_ASSERT_EQUAL_INT32 ( 255 , Utils::fcast<uint8_t >(32767 .0f ));
67+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(-32768 .0f ));
68+ TEST_ASSERT_EQUAL_INT32 ( 255 , Utils::fcast<uint8_t >(50000 .0f ));
69+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<uint8_t >(-50000 .0f ));
70+
71+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int16_t >(0 .0f ));
72+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int16_t >(0 .5f ));
73+ TEST_ASSERT_EQUAL_INT32 ( 1 , Utils::fcast<int16_t >(0 .501f ));
74+ TEST_ASSERT_EQUAL_INT32 ( 0 , Utils::fcast<int16_t >(-0 .5f ));
75+ TEST_ASSERT_EQUAL_INT32 ( -1 , Utils::fcast<int16_t >(-0 .6f ));
76+ TEST_ASSERT_EQUAL_INT32 ( 127 , Utils::fcast<int16_t >(127 .0f ));
77+ TEST_ASSERT_EQUAL_INT32 ( -128 , Utils::fcast<int16_t >(-128 .0f ));
78+ TEST_ASSERT_EQUAL_INT32 ( 32767 , Utils::fcast<int16_t >(32767 .0f ));
79+ TEST_ASSERT_EQUAL_INT32 (-32768 , Utils::fcast<int16_t >(-32768 .0f ));
80+ TEST_ASSERT_EQUAL_INT32 ( 32767 , Utils::fcast<int16_t >(50000 .0f ));
81+ TEST_ASSERT_EQUAL_INT32 (-32768 , Utils::fcast<int16_t >(-50000 .0f ));
82+ }
83+
4484void test_math_baro_altitude ()
4585{
4686 TEST_ASSERT_FLOAT_WITHIN (0 .1f , 0 .0f , Utils::toAltitude (101325 .f )); // sea level
@@ -1304,6 +1344,7 @@ int main(int argc, char **argv)
13041344 RUN_TEST (test_math_map);
13051345 RUN_TEST (test_math_map3);
13061346 RUN_TEST (test_math_deadband);
1347+ RUN_TEST (test_math_fcast);
13071348
13081349 RUN_TEST (test_math_bit);
13091350 RUN_TEST (test_math_bitmask);
0 commit comments