using Invercargill; using Invercargill.DataStructures; void data_structures_tests() { Test.add_func("/invercargill/datastructures/buffer/simple", () => { var buffer = new Buffer(5); buffer[0] = 1; buffer[1] = 2; buffer[2] = 3; buffer[3] = 4; buffer[4] = 5; assert(buffer.count() == 5); assert(buffer[0] == 1); assert(buffer[1] == 2); assert(buffer[2] == 3); assert(buffer[3] == 4); assert(buffer[4] == 5); }); Test.add_func("/invercargill/datastructures/buffer/from_array", () => { var array = new int[] { 1, 2, 3, 4, 5 }; var buffer = new Buffer(5); for (int i = 0; i < array.length; i++) { buffer[i] = array[i]; } assert(buffer.count() == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/immutable_buffer/simple", () => { var array = new int[] { 1, 2, 3, 4, 5 }; var buffer = new ImmutableBuffer(Wrap.array(array)); assert(buffer.count() == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/ring_buffer/simple", () => { var buffer = new RingBuffer(3); buffer[0] = 1; buffer[1] = 2; buffer[2] = 3; assert(buffer.count() == 3); assert(buffer[0] == 1); assert(buffer[1] == 2); assert(buffer[2] == 3); }); Test.add_func("/invercargill/datastructures/ring_buffer/overflow", () => { var buffer = new RingBuffer(3); buffer[0] = 1; buffer[1] = 2; buffer[2] = 3; buffer[3] = 4; // Should overwrite 1 assert(buffer.count() == 3); assert(buffer[0] == 4); assert(buffer[1] == 2); assert(buffer[2] == 3); }); Test.add_func("/invercargill/datastructures/ring_buffer/from_array", () => { var array = new int[] { 1, 2, 3, 4, 5 }; var buffer = new RingBuffer(5); for (int i = 0; i < array.length; i++) { buffer[i] = array[i]; } assert(buffer.count() == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/byte_buffer/from_byte_array", () => { var array = new uint8[] { 1, 2, 3, 4, 5 }; var buffer = new ByteBuffer.from_byte_array(array); assert(buffer.length == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/byte_buffer/from_bytes", () => { var bytes = new Bytes.take(new uint8[] { 1, 2, 3, 4, 5 }); var buffer = new ByteBuffer.from_bytes(bytes); assert(buffer.length == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == i + 1); } }); Test.add_func("/invercargill/datastructures/byte_buffer/from_base64", () => { var base64 = "AQIDBAU="; // [1, 2, 3, 4, 5] in base64 var buffer = new ByteBuffer.from_base64(base64); assert(buffer.length == 5); for (int i = 0; i < 5; i++) { assert(buffer[i] == i + 1); } }); Test.add_func("/invercargill/datastructures/byte_buffer/to_byte_array", () => { var array = new uint8[] { 1, 2, 3, 4, 5 }; var buffer = new ByteBuffer.from_byte_array(array); var result = buffer.to_array(); assert(result.length == array.length); for (int i = 0; i < array.length; i++) { assert(result[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/byte_buffer/to_bytes", () => { var array = new uint8[] { 1, 2, 3, 4, 5 }; var buffer = new ByteBuffer.from_byte_array(array); var result = buffer.to_bytes(); assert(result.get_size() == array.length); var data = result.get_data(); for (int i = 0; i < array.length; i++) { assert(data[i] == array[i]); } }); Test.add_func("/invercargill/datastructures/byte_buffer/to_base64", () => { var array = new uint8[] { 1, 2, 3, 4, 5 }; var buffer = new ByteBuffer.from_byte_array(array); var result = buffer.to_base64(); assert(result == "AQIDBAU="); }); Test.add_func("/invercargill/datastructures/byte_buffer/concat", () => { var array1 = new uint8[] { 1, 2, 3 }; var array2 = new uint8[] { 4, 5 }; var buffer1 = new ByteBuffer.from_byte_array(array1); var buffer2 = new ByteBuffer.from_byte_array(array2); var result = buffer1.concat(buffer2); assert(result.count() == 5); }); // Subbuffer test skipped - method does not exist in API Test.add_func("/invercargill/datastructures/byte_buffer/equality", () => { var array1 = new uint8[] { 1, 2, 3, 4, 5 }; var array2 = new uint8[] { 1, 2, 3, 4, 5 }; var array3 = new uint8[] { 1, 2, 3, 4, 6 }; var buffer1 = new ByteBuffer.from_byte_array(array1); var buffer2 = new ByteBuffer.from_byte_array(array2); var buffer3 = new ByteBuffer.from_byte_array(array3); assert(buffer1.equals(buffer2)); assert(!buffer1.equals(buffer3)); }); Test.add_func("/invercargill/datastructures/byte_buffer/hash", () => { var array1 = new uint8[] { 1, 2, 3, 4, 5 }; var array2 = new uint8[] { 1, 2, 3, 4, 5 }; var buffer1 = new ByteBuffer.from_byte_array(array1); var buffer2 = new ByteBuffer.from_byte_array(array2); assert(buffer1.hash_code() == buffer2.hash_code()); }); }