TestByteCrackers.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Copyright (c) Electronic Arts Inc. All rights reserved.
  3. ///////////////////////////////////////////////////////////////////////////////
  4. #include <EAStdC/EAByteCrackers.h>
  5. #include <EAStdCTest/EAStdCTest.h>
  6. #include <EATest/EATest.h>
  7. int TestByteCrackers()
  8. {
  9. int nErrorCount(0);
  10. EA::UnitTest::Report("TestByteCrackers\n");
  11. #ifdef _MSC_VER
  12. #pragma warning (disable: 4310) // Cast truncates constant value
  13. #endif
  14. // uint8_t byte manipulators
  15. uint8_t u8;
  16. u8 = UINT8_0_FROM_UINT16(0x1100);
  17. EATEST_VERIFY(u8 == 0x00);
  18. u8 = UINT8_1_FROM_UINT16(0x1100);
  19. EATEST_VERIFY(u8 == 0x11);
  20. u8 = UINT8_0_FROM_UINT32(0x33221100);
  21. EATEST_VERIFY(u8 == 0x00);
  22. u8 = UINT8_1_FROM_UINT32(0x33221100);
  23. EATEST_VERIFY(u8 == 0x11);
  24. u8 = UINT8_2_FROM_UINT32(0x33221100);
  25. EATEST_VERIFY(u8 == 0x22);
  26. u8 = UINT8_3_FROM_UINT32(0x33221100);
  27. EATEST_VERIFY(u8 == 0x33);
  28. u8 = UINT8_0_FROM_UINT64(UINT64_C(0x7766554433221100));
  29. EATEST_VERIFY(u8 == 0x00);
  30. u8 = UINT8_1_FROM_UINT64(UINT64_C(0x7766554433221100));
  31. EATEST_VERIFY(u8 == 0x11);
  32. u8 = UINT8_2_FROM_UINT64(UINT64_C(0x7766554433221100));
  33. EATEST_VERIFY(u8 == 0x22);
  34. u8 = UINT8_3_FROM_UINT64(UINT64_C(0x7766554433221100));
  35. EATEST_VERIFY(u8 == 0x33);
  36. u8 = UINT8_4_FROM_UINT64(UINT64_C(0x7766554433221100));
  37. EATEST_VERIFY(u8 == 0x44);
  38. u8 = UINT8_5_FROM_UINT64(UINT64_C(0x7766554433221100));
  39. EATEST_VERIFY(u8 == 0x55);
  40. u8 = UINT8_6_FROM_UINT64(UINT64_C(0x7766554433221100));
  41. EATEST_VERIFY(u8 == 0x66);
  42. u8 = UINT8_7_FROM_UINT64(UINT64_C(0x7766554433221100));
  43. EATEST_VERIFY(u8 == 0x77);
  44. // uint16_t byte manipulators
  45. uint16_t u16;
  46. u16 = UINT16_0_FROM_UINT32(0x33221100);
  47. EATEST_VERIFY(u16 == 0x1100);
  48. u16 = UINT16_1_FROM_UINT32(0x33221100);
  49. EATEST_VERIFY(u16 == 0x3322);
  50. u16 = UINT16_0_FROM_UINT64(0x7766554433221100LL);
  51. EATEST_VERIFY(u16 == 0x1100);
  52. u16 = UINT16_1_FROM_UINT64(0x7766554433221100LL);
  53. EATEST_VERIFY(u16 == 0x3322);
  54. u16 = UINT16_2_FROM_UINT64(0x7766554433221100LL);
  55. EATEST_VERIFY(u16 == 0x5544);
  56. u16 = UINT16_3_FROM_UINT64(0x7766554433221100LL);
  57. EATEST_VERIFY(u16 == 0x7766);
  58. u16 = UINT16_FROM_UINT8(0x11, 0x00);
  59. EATEST_VERIFY(u16 == 0x1100);
  60. // uint32_t byte manipulators
  61. uint32_t u32;
  62. u32 = UINT32_0_FROM_UINT64(UINT64_C(0x7766554433221100));
  63. EATEST_VERIFY(u32 == 0x33221100);
  64. u32 = UINT32_1_FROM_UINT64(UINT64_C(0x7766554433221100));
  65. EATEST_VERIFY(u32 == 0x77665544);
  66. u32 = UINT32_FROM_UINT8(0x33, 0x22, 0x11, 0x00);
  67. EATEST_VERIFY(u32 == 0x33221100);
  68. u32 = UINT32_FROM_UINT16(0x3322, 0x1100);
  69. EATEST_VERIFY(u32 == 0x33221100);
  70. // uint64_t byte manipulators
  71. uint64_t u64;
  72. u64 = UINT64_FROM_UINT8(0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00);
  73. EATEST_VERIFY(u64 == UINT64_C(0x7766554433221100));
  74. u64 = UINT64_FROM_UINT16(0x7766, 0x5544, 0x3322, 0x1100);
  75. EATEST_VERIFY(u64 == UINT64_C(0x7766554433221100));
  76. u64 = UINT64_FROM_UINT32(0x77665544, 0x33221100);
  77. EATEST_VERIFY(u64 == UINT64_C(0x7766554433221100));
  78. return nErrorCount;
  79. }