jszhuyin
Version:
Smart Chinese Zhuyin Input Method in JavaScript.
89 lines (69 loc) • 2.44 kB
JavaScript
;
var fs = require('fs');
var assert = require('chai').assert;
var utils = require('../util.js');
var DatabaseBuilder = require('../../build/database_builder.js');
suite('DatabaseBuilder');
var resStringArray = utils.numberArrayToStringArray([
0x0001, 0x0000, // Table0 header
0x0041, // Table0 key table
0x000a, 0x0000, // Table0 ptr table, ptr to table1 (32bit LE)
0x0001, 0x0000, // Table1 header
0x0042, // Table1 key table
0x0014, 0x0000, // Table1 ptr table, ptr to table2 (32bit LE)
0x0001, 0x0005, // Table2 header
0x1111, 0x2222, 0x3333, 0x4444, 0x5555, // Table2 content
0x0043, // Table2 key table
0x0028, 0x0000, // Table2 ptr table, ptr to table3 (32bit LE)
0x0000, 0x0004, // Table3 header
0x6666, 0x7777, 0x8888, 0x9999 // Table3 content
]);
test('put()', function() {
var buf1 =
utils.arrayToUint16LEArrayBuffer([0x1111, 0x2222, 0x3333, 0x4444, 0x5555]);
var buf2 =
utils.arrayToUint16LEArrayBuffer([0x6666, 0x7777, 0x8888, 0x9999, 0xaaaa]);
var res = [];
res[0x41] = [];
res[0x41][0x42] = [buf1];
res[0x41][0x42][0x43] = [buf2];
var db = new DatabaseBuilder();
db.put([0x41, 0x42], buf1);
db.put([0x41, 0x42, 0x43], buf2);
assert.deepEqual(db.data, res);
});
test('get()', function() {
var buf1 =
utils.arrayToUint16LEArrayBuffer([0x1111, 0x2222, 0x3333, 0x4444, 0x5555]);
var buf2 =
utils.arrayToUint16LEArrayBuffer([0x6666, 0x7777, 0x8888, 0x9999, 0xaaaa]);
var res = [];
res[0x41] = [];
res[0x41][0x42] = [buf1];
res[0x41][0x42][0x43] = [buf2];
var db = new DatabaseBuilder();
db.data = res;
assert.deepEqual(db.get([0x41, 0x42]), buf1);
assert.deepEqual(
db.get([0x41, 0x42, 0x43]), buf2);
});
test('getBlob()', function() {
var buf1 =
utils.arrayToUint16LEArrayBuffer([0x1111, 0x2222, 0x3333, 0x4444, 0x5555]);
var buf2 =
utils.arrayToUint16LEArrayBuffer([0x6666, 0x7777, 0x8888, 0x9999]);
var res = [];
res[0x41] = [];
res[0x41][0x42] = [buf1];
res[0x41][0x42][0x43] = [buf2];
var db = new DatabaseBuilder();
db.put([0x41, 0x42], buf1);
db.put([0x41, 0x42, 0x43], buf2);
var buffer = db.getBlob();
assert.deepEqual(utils.bufferToStringArray(buffer), resStringArray);
});
test('test.data', function() {
var buffer =
fs.readFileSync(__dirname + '/../resources/test.data');
assert.deepEqual(utils.bufferToStringArray(buffer), resStringArray);
});