Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/tests/serverjs/bytearray-tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'utils/tests/serverjs/bytearray-tests.js')
-rwxr-xr-xutils/tests/serverjs/bytearray-tests.js270
1 files changed, 257 insertions, 13 deletions
diff --git a/utils/tests/serverjs/bytearray-tests.js b/utils/tests/serverjs/bytearray-tests.js
index a91a4b3..6d165d0 100755
--- a/utils/tests/serverjs/bytearray-tests.js
+++ b/utils/tests/serverjs/bytearray-tests.js
@@ -5,25 +5,269 @@ var Binary = require("binary").Binary,
ByteArray = require("binary").ByteArray;
exports.testByteArrayConstructor = function() {
-}
+ var testArray = [1,2,3,4],
+ b;
+
+ // ByteArray()
+ // New, empty ByteArray.
+ b = new ByteArray();
+ //assert.isTrue(b instanceof Binary, "not instanceof Binary");
+ assert.isTrue(b instanceof ByteArray, "not instanceof ByteArray");
+ assert.isEqual(0, b.length);
+ b.length = 123;
+ assert.isEqual(123, b.length);
+ assert.isEqual(0, b.get(4));
+
+ // ByteArray(length)
+ // New ByteArray filled with length zero bytes.
+ b = new ByteArray(10);
+ assert.isEqual(10, b.length);
+ for (var i = 0; i < 10; i++)
+ assert.isEqual(0, b.get(i));
+ assert.isNaN(b.get(10));
+ b.length = 234;
+ assert.isEqual(234, b.length);
+ assert.isEqual(0, b.get(10));
+ assert.isEqual(0, b.get(233));
+ assert.isNaN(b.get(234));
+
+ // ByteArray(byteString)
+ // Copy contents of byteString.
+ b = new ByteArray(new ByteString(testArray));
+ assert.isEqual(testArray.length, b.length);
+ b.length = 345;
+ assert.isEqual(345, b.length);
+ assert.isEqual(1, b.get(0));
+ assert.isEqual(4, b.get(3));
+ assert.isEqual(0, b.get(4));
+
+ // ByteArray(byteArray)
+ // Copy byteArray.
+ b = new ByteArray(new ByteArray(testArray));
+ assert.isEqual(testArray.length, b.length);
+ b.length = 456;
+ assert.isEqual(456, b.length);
+ assert.isEqual(1, b.get(0));
+ assert.isEqual(4, b.get(3));
+ assert.isEqual(0, b.get(4));
+
+ // ByteArray(arrayOfBytes)
+ // Use numbers in arrayOfBytes as contents.
+ // Throws an exception if any element is outside the range 0...255 (TODO).
+ b = new ByteArray(testArray);
+ assert.isEqual(testArray.length, b.length);
+ b.length = 567;
+ assert.isEqual(567, b.length);
+ assert.isEqual(1, b.get(0));
+ assert.isEqual(4, b.get(3));
+ assert.isEqual(0, b.get(4));
+};
exports.testByteArrayResizing = function() {
var b1 = new ByteArray([0,1,2,3,4,5,6]);
assert.isEqual(7, b1.length);
- assert.isTrue(isNaN(b1.byteAt(7)));
+ assert.isNaN(b1.get(7));
b1.length = 10;
- assert.isEqual(10, b1.length);
- assert.isEqual(5, b1.byteAt(5));
- assert.isEqual(0, b1.byteAt(7));
+ assert.isEqual(10, b1.length, "Length should change to 10");
+ assert.isEqual(5, b1.get(5));
+ assert.isEqual(0, b1.get(7));
b1.length = 3;
- assert.isEqual(3, b1.length);
- assert.isEqual(0, b1.byteAt(0));
- assert.isTrue(isNaN(b1.byteAt(4)));
+ assert.isEqual(3, b1.length, "Length should change to 10");
+ assert.isEqual(0, b1.get(0));
+ assert.isNaN(b1.get(4));
- b1.length = 10;
- assert.isEqual(10, b1.length);
- assert.isEqual(0, b1.byteAt(0));
- assert.isEqual(0, b1.byteAt(4));
-}
+ b1.length = 9;
+ assert.isEqual(9, b1.length, "Length should change to 9");
+ assert.isEqual(0, b1.get(0));
+ assert.isEqual(0, b1.get(4));
+};
+
+exports.testToByteArray = function() {
+ var b1 = new ByteArray([1,2,3]),
+ b2 = b1.toByteArray();
+
+ assert.isTrue(b2 instanceof ByteArray, "not instanceof ByteArray");
+ assert.isEqual(b1.length, b2.length);
+ assert.isEqual(b1.get(0), b2.get(0));
+ assert.isEqual(b1.get(2), b2.get(2));
+
+ assert.isEqual(1, b1.get(0));
+ assert.isEqual(1, b2.get(0));
+
+ b1.set(0, 10);
+
+ assert.isEqual(10, b1.get(0));
+ assert.isEqual(1, b2.get(0));
+};
+
+exports.testToByteString = function() {
+ var b1 = new ByteArray([1,2,3]),
+ b2 = b1.toByteString();
+
+ assert.isEqual(b1.length, b2.length);
+ assert.isEqual(b1.get(0), b2.get(0));
+ assert.isEqual(b1.get(2), b2.get(2));
+
+ assert.isEqual(1, b1.get(0));
+ assert.isEqual(1, b2.get(0));
+
+ b1.set(0, 10);
+
+ assert.isEqual(10, b1.get(0));
+ assert.isEqual(1, b2.get(0));
+};
+
+exports.testToArray = function() {
+ var testArray = [0,1,254,255],
+ b1 = new ByteArray(testArray),
+ a1 = b1.toArray();
+
+ assert.isEqual(testArray.length, a1.length);
+ for (var i = 0; i < testArray.length; i++)
+ assert.isEqual(testArray[i], a1[i]);
+};
+
+exports.testToString = function() {
+ // the format of the resulting string isn't specified, but it shouldn't be the decoded string
+ // TODO: is this an ok test?
+
+ var testString = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+ testArray = [];
+ for (var i = 0; i < 128; i++) testArray.push(65);
+
+ var resultString = new ByteArray(testArray).toString();
+
+ assert.isTrue(resultString.length < 100);
+ assert.isTrue(resultString !== testString);
+};
+
+exports.testIndexOf = function() {
+ var b1 = new ByteArray([0,1,2,3,4,5,0,1,2,3,4,5]);
+
+ assert.isEqual(-1, b1.indexOf(-1));
+
+ assert.isEqual(0, b1.indexOf(0));
+ assert.isEqual(5, b1.indexOf(5));
+ assert.isEqual(-1, b1.indexOf(12));
+
+ assert.isEqual(6, b1.indexOf(0, 6));
+ assert.isEqual(11, b1.indexOf(5, 6));
+ assert.isEqual(-1, b1.indexOf(12, 6));
+
+ assert.isEqual(0, b1.indexOf(0, 0, 3));
+ assert.isEqual(-1, b1.indexOf(5, 0, 3));
+ assert.isEqual(-1, b1.indexOf(12, 0, 3));
+};
+
+exports.testLastIndexOf = function() {
+ var b1 = new ByteArray([0,1,2,3,4,5,0,1,2,3,4,5]);
+
+ assert.isEqual(-1, b1.lastIndexOf(-1));
+
+ assert.isEqual(6, b1.lastIndexOf(0));
+ assert.isEqual(11, b1.lastIndexOf(5));
+ assert.isEqual(-1, b1.lastIndexOf(12));
+
+ assert.isEqual(0, b1.lastIndexOf(0, 0, 6));
+ assert.isEqual(5, b1.lastIndexOf(5, 0, 6));
+ assert.isEqual(-1, b1.lastIndexOf(12, 0, 6));
+
+ assert.isEqual(6, b1.lastIndexOf(0, 6, 9));
+ assert.isEqual(-1, b1.lastIndexOf(5, 6, 9));
+ assert.isEqual(-1, b1.lastIndexOf(12, 6, 9));
+};
+
+exports.testByteArrayReverse = function() {
+ var testArray = [0,1,2,3,4,5,6];
+
+ var b1 = new ByteArray(testArray),
+ b2 = b1.reverse();
+
+ assert.isEqual(b1, b2);
+ assert.isEqual(b1.length, b2.length);
+ for (var i = 0; i < testArray.length; i++)
+ assert.isEqual(testArray[i], b2.get(testArray.length-i-1));
+
+ testArray = [0,1,2,3,4,5,6,7];
+
+ b1 = new ByteArray(testArray);
+ b2 = b1.reverse();
+
+ assert.isEqual(b1, b2);
+ assert.isEqual(b1.length, b2.length);
+ for (var i = 0; i < testArray.length; i++)
+ assert.isEqual(testArray[i], b2.get(testArray.length-i-1));
+};
+
+exports.testByteArraySort = function() {
+ var testArray = [];
+ for (var i = 0; i < 1000; i++)
+ testArray.push(Math.floor(Math.random()*256));
+
+ var a = new ByteArray(testArray);
+ a.sort();
+
+ for (var i = 1; i < a.length; i++)
+ assert.isTrue(a.get(i-1) <= a.get(i), "index="+i+"("+a.get(i-1)+","+a.get(i)+")");
+};
+
+exports.testByteArraySortCustom = function() {
+ var testArray = [];
+ for (var i = 0; i < 1000; i++)
+ testArray.push(Math.floor(Math.random()*256));
+
+ var a = new ByteArray(testArray);
+ a.sort(function(o1, o2) { return o2-o1; });
+
+ for (var i = 1; i < a.length; i++)
+ assert.isTrue(a.get(i-1) >= a.get(i), "index="+i+"("+a.get(i-1)+","+a.get(i)+")");
+};
+
+exports.testSplit = function() {
+ var b1 = new ByteArray([0,1,2,3,4,5]), a1;
+
+ a1 = b1.split([]);
+ assert.isEqual(1, a1.length);
+ assert.isTrue(a1[0] instanceof ByteArray);
+ assert.isEqual(6, a1[0].length);
+ assert.isEqual(0, a1[0].get(0));
+ assert.isEqual(5, a1[0].get(5));
+
+ a1 = b1.split([2]);
+ assert.isEqual(2, a1.length);
+ assert.isTrue(a1[0] instanceof ByteArray);
+ assert.isEqual(2, a1[0].length);
+ assert.isEqual(0, a1[0].get(0));
+ assert.isEqual(1, a1[0].get(1));
+ assert.isEqual(3, a1[1].length);
+ assert.isEqual(3, a1[1].get(0));
+ assert.isEqual(5, a1[1].get(2));
+
+ a1 = b1.split([2], { includeDelimiter : true });
+ assert.isEqual(3, a1.length);
+ assert.isTrue(a1[0] instanceof ByteArray);
+ assert.isEqual(2, a1[0].length);
+ assert.isEqual(0, a1[0].get(0));
+ assert.isEqual(1, a1[0].get(1));
+ assert.isEqual(1, a1[1].length);
+ assert.isEqual(2, a1[1].get(0));
+ assert.isEqual(3, a1[2].length);
+ assert.isEqual(3, a1[2].get(0));
+ assert.isEqual(5, a1[2].get(2));
+
+ a1 = b1.split(new ByteString([2,3]));
+ assert.isEqual(2, a1.length);
+ assert.isTrue(a1[0] instanceof ByteArray);
+ assert.isEqual(2, a1[0].length);
+ assert.isEqual(0, a1[0].get(0));
+ assert.isEqual(1, a1[0].get(1));
+ assert.isEqual(2, a1[1].length);
+ assert.isEqual(4, a1[1].get(0));
+ assert.isEqual(5, a1[1].get(1));
+};
+
+if (require.main === module.id)
+ require("os").exit(require("test/runner").run(exports));