LCOV - code coverage report
Current view: top level - infinity_nan - infinity_nan_test.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 34 34 100.0 %
Date: 2023-02-14 20:10:26 Functions: 2 2 100.0 %

          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             : }

Generated by: LCOV version 1.14