Index: test/tests/typedObjects.js |
=================================================================== |
--- a/test/tests/typedObjects.js |
+++ b/test/tests/typedObjects.js |
@@ -674,9 +674,85 @@ |
array5.release(); |
array5 = uint32Array(9); |
equal(array5.arrayBufferIndex, 5, "Buffer indexes for large arrays aren't reused"); |
equal(array5.arrayByteOffset, 0, "Large array is allocated at zero offset"); |
for (let array of [array1, array2, array3, array4, array5]) |
array.release(); |
}); |
+ |
+ test("String type", function() |
+ { |
+ let {string} = require("typedObjects"); |
+ |
+ let s1 = string(); |
+ ok(s1, "String created without parameters"); |
+ equal(s1.length, 0, "String length is zero"); |
+ equal(s1.toString(), "", "JavaScript representation is empty string"); |
+ s1.release(); |
+ |
+ let s2 = string(4); |
+ ok(s2, "String with particular length created"); |
+ equal(s2.length, 4, "String length set correctly"); |
+ for (let i = 0; i < s2.length; i++) |
+ s2.set(i, i + 0xF000); |
+ equal(s2.toString(), "\uF000\uF001\uF002\uF003", "JavaScript representation is correct"); |
+ s2.release(); |
+ |
+ let s3 = string("test"); |
+ ok(s3, "String created from JS string"); |
+ equal(s3.length, 4, "String length set correctly"); |
+ equal(s3.get(2), "s".charCodeAt(0), "Array items represent string letters"); |
+ equal(s3.toString(), "test", "JavaScript representation is correct"); |
+ s3.release(); |
+ |
+ let s4 = string("somelongstring", 2, 6); |
+ ok(s4, "String created as JS substring"); |
+ equal(s4.length, 6, "String length set correctly"); |
+ equal(s4.toString(), "melong", "JavaScript representation is correct"); |
+ s4.release(); |
+ |
+ let s5 = string("abc", 2, 6); |
+ ok(s5, "String created as JS substring with excessive length parameter"); |
+ equal(s5.length, 1, "String length set correctly"); |
+ equal(s5.toString(), "c", "JavaScript representation is correct"); |
+ s5.release(); |
+ |
+ let s6 = string("abc", 8, 1); |
+ ok(s6, "String created as JS substring with too large offset parameter"); |
+ equal(s6.length, 0, "String length set correctly"); |
+ equal(s6.toString(), "", "JavaScript representation is correct"); |
+ s6.release(); |
+ |
+ let s7 = string("abc", 1); |
+ ok(s7, "String created as JS substring without length parameter"); |
+ equal(s7.length, 2, "String length set correctly"); |
+ equal(s7.toString(), "bc", "JavaScript representation is correct"); |
+ s7.release(); |
+ |
+ let s8 = string("somelongstring"); |
+ let s9 = string(s8, 2, 6); |
+ ok(s9, "String created as typed substring"); |
+ equal(s9.length, 6, "String length set correctly"); |
+ equal(s9.toString(), "melong", "JavaScript representation is correct"); |
+ s9.release(); |
+ |
+ let s10 = string(s8, 4, 20); |
+ ok(s10, "String created as typed substring with excessive length parameter"); |
+ equal(s10.length, 10, "String length set correctly"); |
+ equal(s10.toString(), "longstring", "JavaScript representation is correct"); |
+ s10.release(); |
+ |
+ let s11 = string(s8, 20, 1); |
+ ok(s11, "String created as typed substring with too large offset parameter"); |
+ equal(s11.length, 0, "String length set correctly"); |
+ equal(s11.toString(), "", "JavaScript representation is correct"); |
+ s11.release(); |
+ |
+ let s12 = string(s8, 4); |
+ ok(s12, "String created as typed substring without length parameter"); |
+ equal(s12.length, 10, "String length set correctly"); |
+ equal(s12.toString(), "longstring", "JavaScript representation is correct"); |
+ s12.release(); |
+ s8.release(); |
+ }); |
})(); |