Line data Source code
1 : /* Tests for floating point default values +-infinity and nan. */ 2 : #undef __STRICT_ANSI__ 3 : #include <math.h> 4 : #include <pb_decode.h> 5 : #include "floats.pb.h" 6 : #include "unittests.h" 7 : 8 2 : bool check_floats(Floats *floats) 9 : { 10 2 : int status = 0; 11 : 12 2 : TEST(!floats->has_float_pos_inf); 13 2 : TEST(isinf(floats->float_pos_inf)); 14 2 : TEST(!signbit(floats->float_pos_inf)); 15 : 16 2 : TEST(!floats->has_float_neg_inf); 17 2 : TEST(isinf(floats->float_neg_inf)); 18 2 : TEST(signbit(floats->float_neg_inf)); 19 : 20 2 : TEST(!floats->has_float_pos_nan); 21 2 : TEST(isnan(floats->float_pos_nan)); 22 : 23 2 : TEST(!floats->has_float_neg_nan); 24 2 : TEST(isnan(floats->float_neg_nan)); 25 : 26 2 : TEST(!floats->has_double_pos_inf); 27 2 : TEST(isinf(floats->double_pos_inf)); 28 2 : TEST(!signbit(floats->double_pos_inf)); 29 : 30 2 : TEST(!floats->has_double_neg_inf); 31 2 : TEST(isinf(floats->double_neg_inf)); 32 2 : TEST(signbit(floats->double_neg_inf)); 33 : 34 2 : TEST(!floats->has_double_pos_nan); 35 2 : TEST(isnan(floats->double_pos_nan)); 36 : 37 2 : TEST(!floats->has_double_neg_nan); 38 2 : TEST(isnan(floats->double_neg_nan)); 39 : 40 2 : return status == 0; 41 : } 42 : 43 1 : int main() 44 : { 45 1 : int status = 0; 46 : 47 : { 48 1 : Floats floats = Floats_init_default; 49 1 : COMMENT("Checking init_default"); 50 1 : TEST(check_floats(&floats)); 51 : } 52 : 53 : { 54 1 : Floats floats = {0}; 55 1 : pb_istream_t stream = pb_istream_from_buffer(NULL, 0); 56 1 : COMMENT("Check decoded"); 57 1 : TEST(pb_decode(&stream, Floats_fields, &floats)); 58 1 : TEST(check_floats(&floats)); 59 : } 60 : 61 1 : return status; 62 : }