LCOV - code coverage report
Current view: top level - tests/util - bit_manipulation.rs (source / functions) Hit Total Coverage
Test: lcov Lines: 208 208 100.0 %
Date: 2023-12-07 18:49:03 Functions: 12 12 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : mod tests {
       2             :     use googletest::prelude::*;
       3             :     use googletest::verify_that;
       4             :     use eikon3ds_core::util::bit_manipulation::{is_bit_set_16, is_bit_set_32, set_bit_16, set_bit_32};
       5             : 
       6           2 :     #[test]
       7           2 :     fn set_bit_16_set_bit_true_sets_bit() -> Result<()> {
       8           2 :         let table = vec![
       9           2 :             ((0x0, 0), 0x1),
      10           2 :             ((0x0, 1), 0x2),
      11           2 :             ((0x0, 2), 0x4),
      12           2 :             ((0x0, 3), 0x8),
      13           2 :             ((0x0, 4), 0x10),
      14           2 :             ((0x0, 5), 0x20),
      15           2 :             ((0x0, 6), 0x40),
      16           2 :             ((0x0, 7), 0x80),
      17           2 :             ((0x0, 8), 0x100),
      18           2 :             ((0x0, 9), 0x200),
      19           2 :             ((0x0, 10), 0x400),
      20           2 :             ((0x0, 11), 0x800),
      21           2 :             ((0x0, 12), 0x1000),
      22           2 :             ((0x0, 13), 0x2000),
      23           2 :             ((0x0, 14), 0x4000),
      24           2 :             ((0x0, 15), 0x8000),
      25           2 :         ];
      26             : 
      27          34 :         for ((val, bit_idx), expected) in table {
      28          32 :             let res =
      29          32 :                 set_bit_16(/* val= */ val, /* bit_idx= */ bit_idx, /* bit_val= */ true);
      30          32 : 
      31          32 :             verify_that!(res, eq(expected))?;
      32             :         }
      33             : 
      34           2 :         Ok(())
      35           2 :     }
      36             : 
      37           2 :     #[test]
      38           2 :     fn set_bit_16_set_bit_false_clears_bit() -> Result<()> {
      39           2 :         let table = vec![
      40           2 :             ((0xFFFF, 0), 0xFFFE),
      41           2 :             ((0xFFFF, 1), 0xFFFD),
      42           2 :             ((0xFFFF, 2), 0xFFFB),
      43           2 :             ((0xFFFF, 3), 0xFFF7),
      44           2 :             ((0xFFFF, 4), 0xFFEF),
      45           2 :             ((0xFFFF, 5), 0xFFDF),
      46           2 :             ((0xFFFF, 6), 0xFFBF),
      47           2 :             ((0xFFFF, 7), 0xFF7F),
      48           2 :             ((0xFFFF, 8), 0xFEFF),
      49           2 :             ((0xFFFF, 9), 0xFDFF),
      50           2 :             ((0xFFFF, 10), 0xFBFF),
      51           2 :             ((0xFFFF, 11), 0xF7FF),
      52           2 :             ((0xFFFF, 12), 0xEFFF),
      53           2 :             ((0xFFFF, 13), 0xDFFF),
      54           2 :             ((0xFFFF, 14), 0xBFFF),
      55           2 :             ((0xFFFF, 15), 0x7FFF),
      56           2 :         ];
      57             : 
      58          34 :         for ((val, bit_idx), expected) in table {
      59          32 :             let res =
      60          32 :                 set_bit_16(/* val= */ val, /* bit_idx= */ bit_idx, /* bit_val= */ false);
      61          32 : 
      62          32 :             verify_that!(res, eq(expected))?;
      63             :         }
      64             : 
      65           2 :         Ok(())
      66           2 :     }
      67             : 
      68           2 :     #[test]
      69           2 :     fn set_bit_32_set_bit_sets_bit() -> Result<()> {
      70           2 :         let table = vec![
      71           2 :             ((0x0, 0), 0x1),
      72           2 :             ((0x0, 1), 0x2),
      73           2 :             ((0x0, 2), 0x4),
      74           2 :             ((0x0, 3), 0x8),
      75           2 :             ((0x0, 4), 0x10),
      76           2 :             ((0x0, 5), 0x20),
      77           2 :             ((0x0, 6), 0x40),
      78           2 :             ((0x0, 7), 0x80),
      79           2 :             ((0x0, 8), 0x100),
      80           2 :             ((0x0, 9), 0x200),
      81           2 :             ((0x0, 10), 0x400),
      82           2 :             ((0x0, 11), 0x800),
      83           2 :             ((0x0, 12), 0x1000),
      84           2 :             ((0x0, 13), 0x2000),
      85           2 :             ((0x0, 14), 0x4000),
      86           2 :             ((0x0, 15), 0x8000),
      87           2 :             ((0x0, 16), 0x10000),
      88           2 :             ((0x0, 17), 0x20000),
      89           2 :             ((0x0, 18), 0x40000),
      90           2 :             ((0x0, 19), 0x80000),
      91           2 :             ((0x0, 20), 0x100000),
      92           2 :             ((0x0, 21), 0x200000),
      93           2 :             ((0x0, 22), 0x400000),
      94           2 :             ((0x0, 23), 0x800000),
      95           2 :             ((0x0, 24), 0x1000000),
      96           2 :             ((0x0, 25), 0x2000000),
      97           2 :             ((0x0, 26), 0x4000000),
      98           2 :             ((0x0, 27), 0x8000000),
      99           2 :             ((0x0, 28), 0x10000000),
     100           2 :             ((0x0, 29), 0x20000000),
     101           2 :             ((0x0, 30), 0x40000000),
     102           2 :             ((0x0, 31), 0x80000000),
     103           2 :         ];
     104             : 
     105          66 :         for ((val, bit_idx), expected) in table {
     106          64 :             let res =
     107          64 :                 set_bit_32(/* val= */ val, /* bit_idx= */ bit_idx, /* bit_val= */ true);
     108          64 : 
     109          64 :             verify_that!(res, eq(expected))?;
     110             :         }
     111             : 
     112           2 :         Ok(())
     113           2 :     }
     114             : 
     115           2 :     #[test]
     116           2 :     fn set_bit_32_clear_bit_sets_bit() -> Result<()> {
     117           2 :         let table = vec![
     118           2 :             ((0xFFFF_FFFF, 0), 0xFFFFFFFE),
     119           2 :             ((0xFFFF_FFFF, 1), 0xFFFFFFFD),
     120           2 :             ((0xFFFF_FFFF, 2), 0xFFFFFFFB),
     121           2 :             ((0xFFFF_FFFF, 3), 0xFFFFFFF7),
     122           2 :             ((0xFFFF_FFFF, 4), 0xFFFFFFEF),
     123           2 :             ((0xFFFF_FFFF, 5), 0xFFFFFFDF),
     124           2 :             ((0xFFFF_FFFF, 6), 0xFFFFFFBF),
     125           2 :             ((0xFFFF_FFFF, 7), 0xFFFFFF7F),
     126           2 :             ((0xFFFF_FFFF, 8), 0xFFFFFEFF),
     127           2 :             ((0xFFFF_FFFF, 9), 0xFFFFFDFF),
     128           2 :             ((0xFFFF_FFFF, 10), 0xFFFFFBFF),
     129           2 :             ((0xFFFF_FFFF, 11), 0xFFFFF7FF),
     130           2 :             ((0xFFFF_FFFF, 12), 0xFFFFEFFF),
     131           2 :             ((0xFFFF_FFFF, 13), 0xFFFFDFFF),
     132           2 :             ((0xFFFF_FFFF, 14), 0xFFFFBFFF),
     133           2 :             ((0xFFFF_FFFF, 15), 0xFFFF7FFF),
     134           2 :             ((0xFFFF_FFFF, 16), 0xFFFEFFFF),
     135           2 :             ((0xFFFF_FFFF, 17), 0xFFFDFFFF),
     136           2 :             ((0xFFFF_FFFF, 18), 0xFFFBFFFF),
     137           2 :             ((0xFFFF_FFFF, 19), 0xFFF7FFFF),
     138           2 :             ((0xFFFF_FFFF, 20), 0xFFEFFFFF),
     139           2 :             ((0xFFFF_FFFF, 21), 0xFFDFFFFF),
     140           2 :             ((0xFFFF_FFFF, 22), 0xFFBFFFFF),
     141           2 :             ((0xFFFF_FFFF, 23), 0xFF7FFFFF),
     142           2 :             ((0xFFFF_FFFF, 24), 0xFEFFFFFF),
     143           2 :             ((0xFFFF_FFFF, 25), 0xFDFFFFFF),
     144           2 :             ((0xFFFF_FFFF, 26), 0xFBFFFFFF),
     145           2 :             ((0xFFFF_FFFF, 27), 0xF7FFFFFF),
     146           2 :             ((0xFFFF_FFFF, 28), 0xEFFFFFFF),
     147           2 :             ((0xFFFF_FFFF, 29), 0xDFFFFFFF),
     148           2 :             ((0xFFFF_FFFF, 30), 0xBFFFFFFF),
     149           2 :             ((0xFFFF_FFFF, 31), 0x7FFFFFFF),
     150           2 :         ];
     151             : 
     152          66 :         for ((val, bit_idx), expected) in table {
     153          64 :             let res =
     154          64 :                 set_bit_32(/* val= */ val, /* bit_idx= */ bit_idx, /* bit_val= */ false);
     155          64 : 
     156          64 :             verify_that!(res, eq(expected))?;
     157             :         }
     158             : 
     159           2 :         Ok(())
     160           2 :     }
     161             : 
     162           2 :     #[test]
     163           2 :     fn is_bit_set_16_returns_if_bit_set() -> Result<()> {
     164           2 :         let table = vec![
     165           2 :             (0x1, 0),
     166           2 :             (0x2, 1),
     167           2 :             (0x4, 2),
     168           2 :             (0x8, 3),
     169           2 :             (0x10, 4),
     170           2 :             (0x20, 5),
     171           2 :             (0x40, 6),
     172           2 :             (0x80, 7),
     173           2 :             (0x100, 8),
     174           2 :             (0x200, 9),
     175           2 :             (0x400, 10),
     176           2 :             (0x800, 11),
     177           2 :             (0x1000, 12),
     178           2 :             (0x2000, 13),
     179           2 :             (0x4000, 14),
     180           2 :             (0x8000, 15),
     181           2 :         ];
     182             : 
     183          34 :         for (val, bit_idx) in table {
     184          32 :             let res = is_bit_set_16(/* val= */ val, /* bit_idx= */ bit_idx);
     185          32 : 
     186          32 :             verify_that!(res, eq(true))?;
     187             :         }
     188             : 
     189           2 :         Ok(())
     190           2 :     }
     191             : 
     192           2 :     #[test]
     193           2 :     fn is_bit_set_32_returns_if_bit_set() -> Result<()> {
     194           2 :         let table = vec![
     195           2 :             (0x1, 0),
     196           2 :             (0x2, 1),
     197           2 :             (0x4, 2),
     198           2 :             (0x8, 3),
     199           2 :             (0x10, 4),
     200           2 :             (0x20, 5),
     201           2 :             (0x40, 6),
     202           2 :             (0x80, 7),
     203           2 :             (0x100, 8),
     204           2 :             (0x200, 9),
     205           2 :             (0x400, 10),
     206           2 :             (0x800, 11),
     207           2 :             (0x1000, 12),
     208           2 :             (0x2000, 13),
     209           2 :             (0x4000, 14),
     210           2 :             (0x8000, 15),
     211           2 :             (0x10000, 16),
     212           2 :             (0x20000, 17),
     213           2 :             (0x40000, 18),
     214           2 :             (0x80000, 19),
     215           2 :             (0x100000, 20),
     216           2 :             (0x200000, 21),
     217           2 :             (0x400000, 22),
     218           2 :             (0x800000, 23),
     219           2 :             (0x1000000, 24),
     220           2 :             (0x2000000, 25),
     221           2 :             (0x4000000, 26),
     222           2 :             (0x8000000, 27),
     223           2 :             (0x10000000, 28),
     224           2 :             (0x20000000, 29),
     225           2 :             (0x40000000, 30),
     226           2 :             (0x80000000, 31),
     227           2 :         ];
     228             : 
     229          66 :         for (val, bit_idx) in table {
     230          64 :             let res = is_bit_set_32(/* val= */ val, /* bit_idx= */ bit_idx);
     231          64 : 
     232          64 :             verify_that!(res, eq(true))?;
     233             :         }
     234             : 
     235           2 :         Ok(())
     236           2 :     }
     237             : }

Generated by: LCOV version 1.16