BufferTests.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. module;
  2. #include <cstring>
  3. module Tests;
  4. import Core.Buffer;
  5. import Core.Test;
  6. import Core.Types;
  7. import Core.Meta;
  8. static constexpr size_t SIZE_TYPES =
  9. sizeof(int) + sizeof(long) + sizeof(float) + sizeof(double);
  10. static void testAdd(bool light) {
  11. Core::Buffer buffer;
  12. size_t limit = light ? 1000 : 100'000;
  13. for(size_t i = 0; i < limit; i++) {
  14. buffer.add(5);
  15. buffer.add(5L);
  16. buffer.add(5.0f);
  17. buffer.add(5.0);
  18. }
  19. Core::test(SIZE_TYPES * limit, buffer.getLength());
  20. buffer.clear();
  21. Core::test(0, buffer.getLength());
  22. buffer.add(20l);
  23. Core::test(sizeof(long), buffer.getLength());
  24. }
  25. static void testCopy() {
  26. Core::Buffer buffer;
  27. for(int i = 0; i < 10; i++) {
  28. buffer.add(5);
  29. buffer.add(5L);
  30. buffer.add(5.0f);
  31. buffer.add(5.0);
  32. }
  33. Core::Buffer buffer2 = buffer;
  34. Core::Buffer buffer3;
  35. buffer3 = buffer;
  36. if(Core::test(SIZE_TYPES * 10, buffer.getLength()) &&
  37. Core::test(SIZE_TYPES * 10, buffer2.getLength()) &&
  38. Core::test(SIZE_TYPES * 10, buffer3.getLength())) {
  39. Core::testTrue(
  40. memcmp(buffer.getData(), buffer2.getData(), SIZE_TYPES * 10) == 0);
  41. Core::testTrue(
  42. memcmp(buffer.getData(), buffer3.getData(), SIZE_TYPES * 10) == 0);
  43. }
  44. }
  45. static void testMoveConstruct() {
  46. Core::Buffer buffer;
  47. for(int i = 0; i < 10; i++) {
  48. buffer.add(5);
  49. buffer.add(5L);
  50. buffer.add(5.0f);
  51. buffer.add(5.0);
  52. }
  53. Core::Buffer buffer2(Core::move(buffer));
  54. Core::test(0, buffer.getLength());
  55. Core::test(SIZE_TYPES * 10, buffer2.getLength());
  56. }
  57. static void testMove() {
  58. Core::Buffer buffer;
  59. for(int i = 0; i < 10; i++) {
  60. buffer.add(5);
  61. buffer.add(5L);
  62. buffer.add(5.0f);
  63. buffer.add(5.0);
  64. }
  65. Core::Buffer buffer2;
  66. buffer2 = Core::move(buffer);
  67. Core::test(0, buffer.getLength());
  68. Core::test(SIZE_TYPES * 10, buffer2.getLength());
  69. }
  70. void testBuffer(bool light) {
  71. testAdd(light);
  72. testCopy();
  73. testMoveConstruct();
  74. testMove();
  75. }