Files
cell/tests/kim.ce

51 lines
1.7 KiB
Plaintext

var kim = use("kim");
var blob = use('blob')
// Test basic ASCII
var test1 = "Hello, World!";
var encoded1 = kim.encode(test1);
var decoded1 = kim.decode(encoded1);
log.console("ASCII test:", test1 == decoded1 ? "PASS" : "FAIL");
if (test1 != decoded1) {
log.console(" Expected:", test1);
log.console(" Got:", decoded1);
}
// Test Unicode characters
var test2 = "Hello, 世界! 🌍 Привет мир";
var encoded2 = kim.encode(test2);
var decoded2 = kim.decode(encoded2);
log.console("Unicode test:", test2 == decoded2 ? "PASS" : "FAIL");
if (test2 != decoded2) {
log.console(" Expected:", test2);
log.console(" Got:", decoded2);
}
// Test empty string
var test3 = "";
var encoded3 = kim.encode(test3);
log.console(typeof encoded3)
log.console(encoded3 instanceof blob)
var decoded3 = kim.decode(encoded3);
log.console("Empty string test:", test3 == decoded3 ? "PASS" : "FAIL");
// Test various Unicode ranges
var test4 = "αβγδε АБВГД 你好 😀😎🎉 ∑∏∫";
var encoded4 = kim.encode(test4);
var decoded4 = kim.decode(encoded4);
log.console("Mixed Unicode test:", test4 == decoded4 ? "PASS" : "FAIL");
if (test4 != decoded4) {
log.console(" Expected:", test4);
log.console(" Got:", decoded4);
}
// Test efficiency - KIM should be smaller for high codepoints
var highCodepoints = "🌍🌎🌏🗺️🧭";
var encodedHigh = kim.encode(highCodepoints);
var utf8Bytes = new Blob([highCodepoints]).size;
log.console("High codepoint efficiency:");
log.console(" UTF-8 bytes:", utf8Bytes);
log.console(" KIM bytes:", encodedHigh.byteLength);
log.console(" Savings:", utf8Bytes - encodedHigh.byteLength, "bytes");
log.console("\nAll tests completed!");