2
0

test_block_reader.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /*********************************************************************
  2. * _ _ _
  3. * _ __ | |_ _ | | __ _ | |__ ___
  4. * | '__|| __|(_)| | / _` || '_ \ / __|
  5. * | | | |_ _ | || (_| || |_) |\__ \
  6. * |_| \__|(_)|_| \__,_||_.__/ |___/
  7. *
  8. * www.rt-labs.com
  9. * Copyright 2018 rt-labs AB, Sweden.
  10. *
  11. * This software is dual-licensed under GPLv3 and a commercial
  12. * license. See the file LICENSE.md distributed with this software for
  13. * full license information.
  14. ********************************************************************/
  15. #include "utils_for_testing.h"
  16. #include "mocks.h"
  17. #include "pf_block_reader.h"
  18. #include "pf_includes.h"
  19. #include <gtest/gtest.h>
  20. class BlockReaderUnitTest : public PnetUnitTest
  21. {
  22. };
  23. TEST_F (BlockReaderUnitTest, BlockReaderTestGetBits)
  24. {
  25. /* 11111111 11111111 11111111 11111111 */
  26. EXPECT_EQ (0x00000000ul, pf_get_bits (0xFFFFFFFF, 0, 0));
  27. EXPECT_EQ (0x00000001ul, pf_get_bits (0xFFFFFFFF, 0, 1));
  28. EXPECT_EQ (0x00000003ul, pf_get_bits (0xFFFFFFFF, 0, 2));
  29. EXPECT_EQ (0x00000007ul, pf_get_bits (0xFFFFFFFF, 0, 3));
  30. EXPECT_EQ (0x0000000Ful, pf_get_bits (0xFFFFFFFF, 0, 4));
  31. EXPECT_EQ (0x0000001Ful, pf_get_bits (0xFFFFFFFF, 0, 5));
  32. EXPECT_EQ (0x0000003Ful, pf_get_bits (0xFFFFFFFF, 0, 6));
  33. EXPECT_EQ (0x0000007Ful, pf_get_bits (0xFFFFFFFF, 0, 7));
  34. EXPECT_EQ (0x000000FFul, pf_get_bits (0xFFFFFFFF, 0, 8));
  35. EXPECT_EQ (0x7FFFFFFFul, pf_get_bits (0xFFFFFFFF, 0, 31));
  36. EXPECT_EQ (0xFFFFFFFFul, pf_get_bits (0xFFFFFFFF, 0, 32));
  37. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 0, 33)); /* Illegal length */
  38. EXPECT_EQ (0x00000000ul, pf_get_bits (0xFFFFFFFF, 1, 0));
  39. EXPECT_EQ (0x00000001ul, pf_get_bits (0xFFFFFFFF, 1, 1));
  40. EXPECT_EQ (0x00000003ul, pf_get_bits (0xFFFFFFFF, 1, 2));
  41. EXPECT_EQ (0x00000007ul, pf_get_bits (0xFFFFFFFF, 1, 3));
  42. EXPECT_EQ (0x000000FFul, pf_get_bits (0xFFFFFFFF, 1, 8));
  43. EXPECT_EQ (0x7FFFFFFFul, pf_get_bits (0xFFFFFFFF, 1, 31));
  44. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 1, 32)); /* Illegal length and
  45. position combination*/
  46. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 1, 33)); /* Illegal length */
  47. EXPECT_EQ (0x00000000ul, pf_get_bits (0xFFFFFFFF, 31, 0));
  48. EXPECT_EQ (0x00000001ul, pf_get_bits (0xFFFFFFFF, 31, 1));
  49. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 31, 2)); /* Illegal length and
  50. position combination*/
  51. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 31, 32)); /* Illegal length and
  52. position combination*/
  53. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 31, 33)); /* Illegal length */
  54. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 32, 0)); /* Illegal position */
  55. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 32, 1)); /* Illegal position */
  56. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 32, 32)); /* Illegal position */
  57. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 32, 33)); /* Illegal position and
  58. illegal length */
  59. EXPECT_EQ (0ul, pf_get_bits (0xFFFFFFFF, 0xFF, 0xFF)); /* Illegal position
  60. and illegal length
  61. */
  62. /* 00000000 00000000 00000000 00010000 */
  63. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000010, 0, 3));
  64. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000010, 1, 3));
  65. EXPECT_EQ (0x00000004ul, pf_get_bits (0x00000010, 2, 3));
  66. EXPECT_EQ (0x00000002ul, pf_get_bits (0x00000010, 3, 3));
  67. EXPECT_EQ (0x00000001ul, pf_get_bits (0x00000010, 4, 3));
  68. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000010, 5, 3));
  69. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000010, 28, 3));
  70. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000010, 29, 3));
  71. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 30, 3)); /* Illegal length and
  72. position combination*/
  73. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 31, 3)); /* Illegal length and
  74. position combination*/
  75. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 32, 3)); /* Illegal position */
  76. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 33, 3)); /* Illegal position */
  77. /* 00000000 00000000 00000000 00000001 */
  78. EXPECT_EQ (0x00000001ul, pf_get_bits (0x00000001, 0, 3));
  79. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000001, 1, 3));
  80. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000001, 2, 3));
  81. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000001, 3, 3));
  82. EXPECT_EQ (0x00000000ul, pf_get_bits (0x00000001, 4, 3));
  83. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 30, 3)); /* Illegal length and
  84. position combination*/
  85. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 31, 3)); /* Illegal length and
  86. position combination*/
  87. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 32, 3)); /* Illegal position */
  88. EXPECT_EQ (0ul, pf_get_bits (0x00000010, 33, 3)); /* Illegal position */
  89. /* 10000000 00000000 00000000 00000000 */
  90. EXPECT_EQ (0x00000000ul, pf_get_bits (0x80000000, 0, 3));
  91. EXPECT_EQ (0x00000000ul, pf_get_bits (0x80000000, 1, 3));
  92. EXPECT_EQ (0x00000000ul, pf_get_bits (0x80000000, 28, 3));
  93. EXPECT_EQ (0x00000004ul, pf_get_bits (0x80000000, 29, 3));
  94. EXPECT_EQ (0ul, pf_get_bits (0x80000000, 30, 3)); /* Illegal length and
  95. position combination*/
  96. EXPECT_EQ (0ul, pf_get_bits (0x80000000, 31, 3)); /* Illegal length and
  97. position combination*/
  98. EXPECT_EQ (0ul, pf_get_bits (0x80000000, 32, 3)); /* Illegal position */
  99. EXPECT_EQ (0ul, pf_get_bits (0x80000000, 33, 3)); /* Illegal position */
  100. }