FormatTest.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. 
  2. #include "../testTools.h"
  3. #include "../../DFPSR/base/format.h"
  4. START_TEST(Format)
  5. {
  6. Buffer data = buffer_create(8);
  7. SafePointer<uint8_t> bytes = buffer_getSafeData<uint8_t>(data, "Integer encoding buffer");
  8. format_writeU16_LE(bytes, 0);
  9. ASSERT_EQUAL(format_readU16_LE(bytes), 0);
  10. format_writeU16_LE(bytes, 1);
  11. ASSERT_EQUAL(format_readU16_LE(bytes), 1);
  12. format_writeU16_LE(bytes, 65534);
  13. ASSERT_EQUAL(format_readU16_LE(bytes), 65534);
  14. format_writeU16_LE(bytes, 65535);
  15. ASSERT_EQUAL(format_readU16_LE(bytes), 65535);
  16. format_writeI16_LE(bytes, -1);
  17. ASSERT_EQUAL(format_readU16_LE(bytes), 0b1111111111111111u);
  18. ASSERT_EQUAL(format_readI16_LE(bytes), -1);
  19. format_writeI16_LE(bytes, -2736);
  20. ASSERT_EQUAL(format_readI16_LE(bytes), -2736);
  21. format_writeI16_LE(bytes, -32767);
  22. ASSERT_EQUAL(format_readU16_LE(bytes), 0b1000000000000001u);
  23. ASSERT_EQUAL(format_readI16_LE(bytes), -32767);
  24. format_writeI16_LE(bytes, -32768);
  25. ASSERT_EQUAL(format_readU16_LE(bytes), 0b1000000000000000u);
  26. ASSERT_EQUAL(format_readI16_LE(bytes), -32768);
  27. format_writeI16_LE(bytes, 0);
  28. ASSERT_EQUAL(format_readU16_LE(bytes), 0b0000000000000000u);
  29. ASSERT_EQUAL(format_readI16_LE(bytes), 0);
  30. format_writeI16_LE(bytes, 1);
  31. ASSERT_EQUAL(format_readU16_LE(bytes), 0b0000000000000001u);
  32. ASSERT_EQUAL(format_readI16_LE(bytes), 1);
  33. format_writeI16_LE(bytes, 375);
  34. ASSERT_EQUAL(format_readI16_LE(bytes), 375);
  35. format_writeI16_LE(bytes, 7216);
  36. ASSERT_EQUAL(format_readI16_LE(bytes), 7216);
  37. format_writeI16_LE(bytes, 32766);
  38. ASSERT_EQUAL(format_readI16_LE(bytes), 32766);
  39. format_writeI16_LE(bytes, 32767);
  40. ASSERT_EQUAL(format_readU16_LE(bytes), 0b0111111111111111u);
  41. ASSERT_EQUAL(format_readI16_LE(bytes), 32767);
  42. }
  43. // TODO: Test 32 and 64 bit reading and writing.
  44. {
  45. ASSERT_NEAR(format_bitsToF32_IEEE754(0b00000000000000000000000000000000u), 0.0f);
  46. ASSERT_NEAR(format_bitsToF32_IEEE754(0b01000000101000000000000000000000u), 5.0f);
  47. ASSERT_NEAR(format_bitsToF32_IEEE754(0b01000001001000000000000000000000u), 10.0f);
  48. ASSERT_NEAR(format_bitsToF32_IEEE754(0b01000001101000000000000000000000u), 20.0f);
  49. ASSERT_NEAR(format_bitsToF32_IEEE754(0b11000000101000000000000000000000u), -5.0f);
  50. ASSERT_NEAR(format_bitsToF32_IEEE754(0b11000001001000000000000000000000u), -10.0f);
  51. ASSERT_NEAR(format_bitsToF32_IEEE754(0b11000001101000000000000000000000u), -20.0f);
  52. ASSERT_NEAR(format_bitsToF64_IEEE754(0b0000000000000000000000000000000000000000000000000000000000000000u), 0.0);
  53. ASSERT_NEAR(format_bitsToF64_IEEE754(0b0100000000010100000000000000000000000000000000000000000000000000u), 5.0);
  54. ASSERT_NEAR(format_bitsToF64_IEEE754(0b0100000000100100000000000000000000000000000000000000000000000000u), 10.0);
  55. ASSERT_NEAR(format_bitsToF64_IEEE754(0b0100000000110100000000000000000000000000000000000000000000000000u), 20.0);
  56. ASSERT_NEAR(format_bitsToF64_IEEE754(0b0100000001000100000000000000000000000000000000000000000000000000u), 40.0);
  57. ASSERT_NEAR(format_bitsToF64_IEEE754(0b1100000000010100000000000000000000000000000000000000000000000000u), -5.0);
  58. ASSERT_NEAR(format_bitsToF64_IEEE754(0b1100000000100100000000000000000000000000000000000000000000000000u), -10.0);
  59. ASSERT_NEAR(format_bitsToF64_IEEE754(0b1100000000110100000000000000000000000000000000000000000000000000u), -20.0);
  60. ASSERT_NEAR(format_bitsToF64_IEEE754(0b1100000001000100000000000000000000000000000000000000000000000000u), -40.0);
  61. }
  62. END_TEST