LCOV - code coverage report
Current view: top level - test - test_int_math.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 49 49 100.0 %
Date: 2026-07-14 21:28:07 Functions: 6 6 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 35 62 56.5 %

           Branch data     Line data    Source code
       1                 :            : // Copyright 2019-2021 David Robillard <d@drobilla.net>
       2                 :            : // SPDX-License-Identifier: ISC
       3                 :            : 
       4                 :            : #undef NDEBUG
       5                 :            : 
       6                 :            : #include "../src/int_math.h"
       7                 :            : 
       8                 :            : #include <assert.h>
       9                 :            : #include <stdint.h>
      10                 :            : 
      11                 :            : static void
      12                 :          1 : test_clz32(void)
      13                 :            : {
      14         [ +  + ]:         33 :   for (unsigned i = 0; i < 32; ++i) {
      15         [ -  + ]:         32 :     assert(exess_clz32(1U << i) == 32U - i - 1U);
      16                 :            :   }
      17                 :          1 : }
      18                 :            : 
      19                 :            : static void
      20                 :          1 : test_clz64(void)
      21                 :            : {
      22         [ +  + ]:         65 :   for (unsigned i = 0; i < 64; ++i) {
      23         [ -  + ]:         64 :     assert(exess_clz64(1ULL << i) == 64U - i - 1U);
      24                 :            :   }
      25                 :          1 : }
      26                 :            : 
      27                 :            : static void
      28                 :          1 : test_ilog2(void)
      29                 :            : {
      30         [ +  + ]:         65 :   for (unsigned i = 0; i < 64; ++i) {
      31         [ -  + ]:         64 :     assert(exess_ilog2(1ULL << i) == i);
      32                 :            :   }
      33                 :          1 : }
      34                 :            : 
      35                 :            : static void
      36                 :          1 : test_ilog10(void)
      37                 :            : {
      38                 :          1 :   uint64_t power = 1;
      39         [ +  + ]:         21 :   for (unsigned i = 0; i < 20; ++i, power *= 10) {
      40         [ -  + ]:         20 :     assert(exess_ilog10(power) == i);
      41                 :            :   }
      42                 :          1 : }
      43                 :            : 
      44                 :            : static void
      45                 :          1 : test_num_digits(void)
      46                 :            : {
      47         [ -  + ]:          1 :   assert(1 == exess_num_digits(0));
      48         [ -  + ]:          1 :   assert(1 == exess_num_digits(1));
      49         [ -  + ]:          1 :   assert(1 == exess_num_digits(9));
      50         [ -  + ]:          1 :   assert(2 == exess_num_digits(10));
      51         [ -  + ]:          1 :   assert(2 == exess_num_digits(99ULL));
      52         [ -  + ]:          1 :   assert(3 == exess_num_digits(999ULL));
      53         [ -  + ]:          1 :   assert(4 == exess_num_digits(9999ULL));
      54         [ -  + ]:          1 :   assert(5 == exess_num_digits(99999ULL));
      55         [ -  + ]:          1 :   assert(6 == exess_num_digits(999999ULL));
      56         [ -  + ]:          1 :   assert(7 == exess_num_digits(9999999ULL));
      57         [ -  + ]:          1 :   assert(8 == exess_num_digits(99999999ULL));
      58         [ -  + ]:          1 :   assert(9 == exess_num_digits(999999999ULL));
      59         [ -  + ]:          1 :   assert(10 == exess_num_digits(9999999999ULL));
      60         [ -  + ]:          1 :   assert(11 == exess_num_digits(99999999999ULL));
      61         [ -  + ]:          1 :   assert(12 == exess_num_digits(999999999999ULL));
      62         [ -  + ]:          1 :   assert(13 == exess_num_digits(9999999999999ULL));
      63         [ -  + ]:          1 :   assert(14 == exess_num_digits(99999999999999ULL));
      64         [ -  + ]:          1 :   assert(15 == exess_num_digits(999999999999999ULL));
      65         [ -  + ]:          1 :   assert(16 == exess_num_digits(9999999999999999ULL));
      66         [ -  + ]:          1 :   assert(17 == exess_num_digits(99999999999999999ULL));
      67         [ -  + ]:          1 :   assert(18 == exess_num_digits(999999999999999999ULL));
      68         [ -  + ]:          1 :   assert(19 == exess_num_digits(9999999999999999999ULL));
      69         [ -  + ]:          1 :   assert(20 == exess_num_digits(18446744073709551615ULL));
      70                 :          1 : }
      71                 :            : 
      72                 :            : int
      73                 :          1 : main(void)
      74                 :            : {
      75                 :          1 :   test_clz32();
      76                 :          1 :   test_clz64();
      77                 :          1 :   test_ilog2();
      78                 :          1 :   test_ilog10();
      79                 :          1 :   test_num_digits();
      80                 :            : 
      81                 :          1 :   return 0;
      82                 :            : }

Generated by: LCOV version 1.16