DataStructures.vala 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using Invercargill;
  2. using Invercargill.DataStructures;
  3. void data_structures_tests() {
  4. Test.add_func("/invercargill/datastructures/buffer/simple", () => {
  5. var buffer = new Buffer<int>(5);
  6. buffer[0] = 1;
  7. buffer[1] = 2;
  8. buffer[2] = 3;
  9. buffer[3] = 4;
  10. buffer[4] = 5;
  11. assert(buffer.count() == 5);
  12. assert(buffer[0] == 1);
  13. assert(buffer[1] == 2);
  14. assert(buffer[2] == 3);
  15. assert(buffer[3] == 4);
  16. assert(buffer[4] == 5);
  17. });
  18. Test.add_func("/invercargill/datastructures/buffer/from_array", () => {
  19. var array = new int[] { 1, 2, 3, 4, 5 };
  20. var buffer = new Buffer<int>(5);
  21. for (int i = 0; i < array.length; i++) {
  22. buffer[i] = array[i];
  23. }
  24. assert(buffer.count() == 5);
  25. for (int i = 0; i < 5; i++) {
  26. assert(buffer[i] == array[i]);
  27. }
  28. });
  29. Test.add_func("/invercargill/datastructures/immutable_buffer/simple", () => {
  30. var array = new int[] { 1, 2, 3, 4, 5 };
  31. var buffer = new ImmutableBuffer<int>(Wrap.array(array));
  32. assert(buffer.count() == 5);
  33. for (int i = 0; i < 5; i++) {
  34. assert(buffer[i] == array[i]);
  35. }
  36. });
  37. Test.add_func("/invercargill/datastructures/ring_buffer/simple", () => {
  38. var buffer = new RingBuffer<int>(3);
  39. buffer[0] = 1;
  40. buffer[1] = 2;
  41. buffer[2] = 3;
  42. assert(buffer.count() == 3);
  43. assert(buffer[0] == 1);
  44. assert(buffer[1] == 2);
  45. assert(buffer[2] == 3);
  46. });
  47. Test.add_func("/invercargill/datastructures/ring_buffer/overflow", () => {
  48. var buffer = new RingBuffer<int>(3);
  49. buffer[0] = 1;
  50. buffer[1] = 2;
  51. buffer[2] = 3;
  52. buffer[3] = 4; // Should overwrite 1
  53. assert(buffer.count() == 3);
  54. assert(buffer[0] == 4);
  55. assert(buffer[1] == 2);
  56. assert(buffer[2] == 3);
  57. });
  58. Test.add_func("/invercargill/datastructures/ring_buffer/from_array", () => {
  59. var array = new int[] { 1, 2, 3, 4, 5 };
  60. var buffer = new RingBuffer<int>(5);
  61. for (int i = 0; i < array.length; i++) {
  62. buffer[i] = array[i];
  63. }
  64. assert(buffer.count() == 5);
  65. for (int i = 0; i < 5; i++) {
  66. assert(buffer[i] == array[i]);
  67. }
  68. });
  69. Test.add_func("/invercargill/datastructures/byte_buffer/from_byte_array", () => {
  70. var array = new uint8[] { 1, 2, 3, 4, 5 };
  71. var buffer = new ByteBuffer.from_byte_array(array);
  72. assert(buffer.length == 5);
  73. for (int i = 0; i < 5; i++) {
  74. assert(buffer[i] == array[i]);
  75. }
  76. });
  77. Test.add_func("/invercargill/datastructures/byte_buffer/from_bytes", () => {
  78. var bytes = new Bytes.take(new uint8[] { 1, 2, 3, 4, 5 });
  79. var buffer = new ByteBuffer.from_bytes(bytes);
  80. assert(buffer.length == 5);
  81. for (int i = 0; i < 5; i++) {
  82. assert(buffer[i] == i + 1);
  83. }
  84. });
  85. Test.add_func("/invercargill/datastructures/byte_buffer/from_base64", () => {
  86. var base64 = "AQIDBAU="; // [1, 2, 3, 4, 5] in base64
  87. var buffer = new ByteBuffer.from_base64(base64);
  88. assert(buffer.length == 5);
  89. for (int i = 0; i < 5; i++) {
  90. assert(buffer[i] == i + 1);
  91. }
  92. });
  93. Test.add_func("/invercargill/datastructures/byte_buffer/to_byte_array", () => {
  94. var array = new uint8[] { 1, 2, 3, 4, 5 };
  95. var buffer = new ByteBuffer.from_byte_array(array);
  96. var result = buffer.to_array();
  97. assert(result.length == array.length);
  98. for (int i = 0; i < array.length; i++) {
  99. assert(result[i] == array[i]);
  100. }
  101. });
  102. Test.add_func("/invercargill/datastructures/byte_buffer/to_bytes", () => {
  103. var array = new uint8[] { 1, 2, 3, 4, 5 };
  104. var buffer = new ByteBuffer.from_byte_array(array);
  105. var result = buffer.to_bytes();
  106. assert(result.get_size() == array.length);
  107. var data = result.get_data();
  108. for (int i = 0; i < array.length; i++) {
  109. assert(data[i] == array[i]);
  110. }
  111. });
  112. Test.add_func("/invercargill/datastructures/byte_buffer/to_base64", () => {
  113. var array = new uint8[] { 1, 2, 3, 4, 5 };
  114. var buffer = new ByteBuffer.from_byte_array(array);
  115. var result = buffer.to_base64();
  116. assert(result == "AQIDBAU=");
  117. });
  118. Test.add_func("/invercargill/datastructures/byte_buffer/concat", () => {
  119. var array1 = new uint8[] { 1, 2, 3 };
  120. var array2 = new uint8[] { 4, 5 };
  121. var buffer1 = new ByteBuffer.from_byte_array(array1);
  122. var buffer2 = new ByteBuffer.from_byte_array(array2);
  123. var result = buffer1.concat(buffer2);
  124. assert(result.count() == 5);
  125. });
  126. // Subbuffer test skipped - method does not exist in API
  127. Test.add_func("/invercargill/datastructures/byte_buffer/equality", () => {
  128. var array1 = new uint8[] { 1, 2, 3, 4, 5 };
  129. var array2 = new uint8[] { 1, 2, 3, 4, 5 };
  130. var array3 = new uint8[] { 1, 2, 3, 4, 6 };
  131. var buffer1 = new ByteBuffer.from_byte_array(array1);
  132. var buffer2 = new ByteBuffer.from_byte_array(array2);
  133. var buffer3 = new ByteBuffer.from_byte_array(array3);
  134. assert(buffer1.equals(buffer2));
  135. assert(!buffer1.equals(buffer3));
  136. });
  137. Test.add_func("/invercargill/datastructures/byte_buffer/hash", () => {
  138. var array1 = new uint8[] { 1, 2, 3, 4, 5 };
  139. var array2 = new uint8[] { 1, 2, 3, 4, 5 };
  140. var buffer1 = new ByteBuffer.from_byte_array(array1);
  141. var buffer2 = new ByteBuffer.from_byte_array(array2);
  142. assert(buffer1.hash_code() == buffer2.hash_code());
  143. });
  144. }