LCOV - code coverage report
Current view: top level - ccan/endian/test - run.c (source / functions) Hit Total Coverage
Test: skiboot.info Lines: 73 73 100.0 %
Date: 2024-01-02 21:04:04 Functions: 1 1 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : #include <ccan/endian/endian.h>
       2                 :            : #include <stdlib.h>
       3                 :            : #include <stddef.h>
       4                 :            : #include <ccan/tap/tap.h>
       5                 :            : 
       6                 :          2 : int main(void)
       7                 :            : {
       8                 :            :         union {
       9                 :            :                 uint64_t u64;
      10                 :            :                 unsigned char u64_bytes[8];
      11                 :            :         } u64;
      12                 :            :         union {
      13                 :            :                 uint32_t u32;
      14                 :            :                 unsigned char u32_bytes[4];
      15                 :            :         } u32;
      16                 :            :         union {
      17                 :            :                 uint16_t u16;
      18                 :            :                 unsigned char u16_bytes[2];
      19                 :            :         } u16;
      20                 :            : 
      21                 :            :         plan_tests(48);
      22                 :            : 
      23                 :            :         /* Straight swap tests. */
      24                 :          2 :         u64.u64_bytes[0] = 0x00;
      25                 :          2 :         u64.u64_bytes[1] = 0x11;
      26                 :          2 :         u64.u64_bytes[2] = 0x22;
      27                 :          2 :         u64.u64_bytes[3] = 0x33;
      28                 :          2 :         u64.u64_bytes[4] = 0x44;
      29                 :          2 :         u64.u64_bytes[5] = 0x55;
      30                 :          2 :         u64.u64_bytes[6] = 0x66;
      31                 :          2 :         u64.u64_bytes[7] = 0x77;
      32                 :          2 :         u64.u64 = bswap_64(u64.u64);
      33                 :          2 :         ok1(u64.u64_bytes[7] == 0x00);
      34                 :          2 :         ok1(u64.u64_bytes[6] == 0x11);
      35                 :          2 :         ok1(u64.u64_bytes[5] == 0x22);
      36                 :          2 :         ok1(u64.u64_bytes[4] == 0x33);
      37                 :          2 :         ok1(u64.u64_bytes[3] == 0x44);
      38                 :          2 :         ok1(u64.u64_bytes[2] == 0x55);
      39                 :          2 :         ok1(u64.u64_bytes[1] == 0x66);
      40                 :          2 :         ok1(u64.u64_bytes[0] == 0x77);
      41                 :            : 
      42                 :          2 :         u32.u32_bytes[0] = 0x00;
      43                 :          2 :         u32.u32_bytes[1] = 0x11;
      44                 :          2 :         u32.u32_bytes[2] = 0x22;
      45                 :          2 :         u32.u32_bytes[3] = 0x33;
      46                 :          2 :         u32.u32 = bswap_32(u32.u32);
      47                 :          2 :         ok1(u32.u32_bytes[3] == 0x00);
      48                 :          2 :         ok1(u32.u32_bytes[2] == 0x11);
      49                 :          2 :         ok1(u32.u32_bytes[1] == 0x22);
      50                 :          2 :         ok1(u32.u32_bytes[0] == 0x33);
      51                 :            : 
      52                 :          2 :         u16.u16_bytes[0] = 0x00;
      53                 :          2 :         u16.u16_bytes[1] = 0x11;
      54                 :          2 :         u16.u16 = bswap_16(u16.u16);
      55                 :          2 :         ok1(u16.u16_bytes[1] == 0x00);
      56                 :          2 :         ok1(u16.u16_bytes[0] == 0x11);
      57                 :            : 
      58                 :            :         /* Endian tests. */
      59                 :          2 :         u64.u64 = cpu_to_le64(0x0011223344556677ULL);
      60                 :          2 :         ok1(u64.u64_bytes[0] == 0x77);
      61                 :          2 :         ok1(u64.u64_bytes[1] == 0x66);
      62                 :          2 :         ok1(u64.u64_bytes[2] == 0x55);
      63                 :          2 :         ok1(u64.u64_bytes[3] == 0x44);
      64                 :          2 :         ok1(u64.u64_bytes[4] == 0x33);
      65                 :          2 :         ok1(u64.u64_bytes[5] == 0x22);
      66                 :          2 :         ok1(u64.u64_bytes[6] == 0x11);
      67                 :          2 :         ok1(u64.u64_bytes[7] == 0x00);
      68                 :          2 :         ok1(le64_to_cpu(u64.u64) == 0x0011223344556677ULL);
      69                 :            : 
      70                 :          2 :         u64.u64 = cpu_to_be64(0x0011223344556677ULL);
      71                 :          2 :         ok1(u64.u64_bytes[7] == 0x77);
      72                 :          2 :         ok1(u64.u64_bytes[6] == 0x66);
      73                 :          2 :         ok1(u64.u64_bytes[5] == 0x55);
      74                 :          2 :         ok1(u64.u64_bytes[4] == 0x44);
      75                 :          2 :         ok1(u64.u64_bytes[3] == 0x33);
      76                 :          2 :         ok1(u64.u64_bytes[2] == 0x22);
      77                 :          2 :         ok1(u64.u64_bytes[1] == 0x11);
      78                 :          2 :         ok1(u64.u64_bytes[0] == 0x00);
      79                 :          2 :         ok1(be64_to_cpu(u64.u64) == 0x0011223344556677ULL);
      80                 :            : 
      81                 :          2 :         u32.u32 = cpu_to_le32(0x00112233);
      82                 :          2 :         ok1(u32.u32_bytes[0] == 0x33);
      83                 :          2 :         ok1(u32.u32_bytes[1] == 0x22);
      84                 :          2 :         ok1(u32.u32_bytes[2] == 0x11);
      85                 :          2 :         ok1(u32.u32_bytes[3] == 0x00);
      86                 :          2 :         ok1(le32_to_cpu(u32.u32) == 0x00112233);
      87                 :            : 
      88                 :          2 :         u32.u32 = cpu_to_be32(0x00112233);
      89                 :          2 :         ok1(u32.u32_bytes[3] == 0x33);
      90                 :          2 :         ok1(u32.u32_bytes[2] == 0x22);
      91                 :          2 :         ok1(u32.u32_bytes[1] == 0x11);
      92                 :          2 :         ok1(u32.u32_bytes[0] == 0x00);
      93                 :          2 :         ok1(be32_to_cpu(u32.u32) == 0x00112233);
      94                 :            : 
      95                 :          2 :         u16.u16 = cpu_to_le16(0x0011);
      96                 :          2 :         ok1(u16.u16_bytes[0] == 0x11);
      97                 :          2 :         ok1(u16.u16_bytes[1] == 0x00);
      98                 :          2 :         ok1(le16_to_cpu(u16.u16) == 0x0011);
      99                 :            : 
     100                 :          2 :         u16.u16 = cpu_to_be16(0x0011);
     101                 :          2 :         ok1(u16.u16_bytes[1] == 0x11);
     102                 :          2 :         ok1(u16.u16_bytes[0] == 0x00);
     103                 :          2 :         ok1(be16_to_cpu(u16.u16) == 0x0011);
     104                 :            : 
     105                 :          2 :         exit(exit_status());
     106                 :            : }

Generated by: LCOV version 1.14