BufferTests.cpp 2.1 KB

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