51 lines
1.7 KiB
Plaintext
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!"); |