hangul-tools
Version:
A Hangul library for various Hangul/Korean operations including reading numbers, adding josa, and converting between different keyboards
117 lines (106 loc) • 6.09 kB
JavaScript
var assert = require('assert'),
HanTools = require('../');
var Keyboard = HanTools.Keyboard;
var _simple_seq = function _simple_seq(s){
var i, a = [];
for(i=0; i<s.length; i+=2)
a.push([s[i], s[i+1]=='^']);
return a;
};
describe('HanTools', function(){
describe('#Keyboard', function(){
it("should have some important keyboards", function(){
assert.strictEqual(typeof Keyboard, 'function');
assert.strictEqual(typeof Keyboard.QWERTY, 'function');
assert.strictEqual(typeof Keyboard.DUBEOLSIK, 'function');
assert.strictEqual(typeof Keyboard.SEBEOLSIK_390, 'function');
});
describe('#convert()', function(){
it("should behave correctly on simple inputs", function(){
assert.strictEqual(Keyboard.convert("dkssud", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "안녕");
assert.strictEqual(Keyboard.convert("qkqh rhrl", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "바보 고기");
assert.strictEqual(Keyboard.convert("anfrhk", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "물과");
assert.strictEqual(Keyboard.convert("rkskekfkakqktk dkwkckzkxkvkgk", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "가나다라마바사 아자차카타파하");
assert.strictEqual(Keyboard.convert("안녕", Keyboard.DUBEOLSIK, Keyboard.QWERTY), "dkssud");
assert.strictEqual(Keyboard.convert("jfshea", Keyboard.QWERTY, Keyboard.SEBEOLSIK_390), "안녕");
assert.strictEqual(Keyboard.convert(";f;v kvkd", Keyboard.QWERTY, Keyboard.SEBEOLSIK_390), "바보 고기");
assert.strictEqual(Keyboard.convert("ibwk/f", Keyboard.QWERTY, Keyboard.SEBEOLSIK_390), "물과");
assert.strictEqual(Keyboard.convert("kfhfufyfif;fnf jflfof0f'fpfmf", Keyboard.QWERTY, Keyboard.SEBEOLSIK_390), "가나다라마바사 아자차카타파하");
assert.strictEqual(Keyboard.convert("안녕", Keyboard.SEBEOLSIK_390, Keyboard.QWERTY), "jfshea");
});
it("should compose jongseongs correctly (Keyboard.DUBEOLSIK)", function(){
assert.strictEqual(Keyboard.convert("rkRkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "가까운");
assert.strictEqual(Keyboard.convert("rkrrkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "각가운");
assert.strictEqual(Keyboard.convert("rrkrkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "까가운");
assert.strictEqual(Keyboard.convert("rrkrrkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "깍가운");
assert.strictEqual(Keyboard.convert("rrkrrrkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "깎가운");
assert.strictEqual(Keyboard.convert("rrkrRkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "깍까운");
assert.strictEqual(Keyboard.convert("rrkRrkdns", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "깎가운");
assert.strictEqual(Keyboard.convert("qkfqk", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "발바");
assert.strictEqual(Keyboard.convert("qhqtlek", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "봅시다");
assert.strictEqual(Keyboard.convert("qhqt lek", Keyboard.QWERTY, Keyboard.DUBEOLSIK), "봆 ㅣ다");
});
});
describe('#QWERTY', function(){
describe('#getKeySequence()', function(){
it("should be able to get key sequences", function(){
assert.deepEqual(
Keyboard.QWERTY.getKeySequence("Hello, world!"),
_simple_seq("h^e_l_l_o_,_ _w_o_r_l_d_1^")
);
});
});
});
describe('#DUBEOLSIK', function(){
describe('#getKeySequence()', function(){
it("should be able to get key sequences for Hangul strings", function(){
assert.deepEqual(
Keyboard.DUBEOLSIK.getKeySequence("나랏말싸미 듕귁에 달아"),
_simple_seq("s_k_f_k_t_a_k_f_t^k_a_l_ _e_b_d_r_n_l_r_d_p_ _e_k_f_d_k_")
);
assert.deepEqual(
Keyboard.DUBEOLSIK.getKeySequence("ㅇㅅㅇ ㄲㄲ"),
_simple_seq("d_t_d_ _r^r^")
);
assert.deepEqual(
Keyboard.DUBEOLSIK.getKeySequence("정ㄱ-ㅠ 표현싴으로는 무리가 좀 있다 없다"),
_simple_seq("w_j_d_r_-_b_ _v_y_g_u_s_t_l_z_d_m_f_h_s_m_s_ _a_n_f_l_r_k_ _w_h_a_ _d_l_t^e_k_ _d_j_q_t_e_k_")
);
});
});
describe('#type()', function(){
it("should work for examples in getKeySequence()", function(){
assert.strictEqual(Keyboard.DUBEOLSIK.type(_simple_seq("s_k_f_k_t_a_k_f_t^k_a_l_ _e_b_d_r_n_l_r_d_p_ _e_k_f_d_k_")), "나랏말싸미 듕귁에 달아");
assert.strictEqual(Keyboard.DUBEOLSIK.type(_simple_seq("d_t_d_ _r^r^")), "ㅇㅅㅇ ㄲㄲ");
assert.strictEqual(Keyboard.DUBEOLSIK.type(_simple_seq("w_j_d_r_-_b_ _v_y_g_u_s_t_l_z_d_m_f_h_s_m_s_ _a_n_f_l_r_k_ _w_h_a_ _d_l_t^e_k_ _d_j_q_t_e_k_")), "정ㄱ-ㅠ 표현싴으로는 무리가 좀 있다 없다");
});
});
});
describe('#SEBEOLSIK_390', function(){
describe('#getKeySequence()', function(){
it("should be able to get key sequences for Hangul strings", function(){
assert.deepEqual(
Keyboard.SEBEOLSIK_390.getKeySequence("나랏말싸미 듕귁에 달아"),
_simple_seq("h_f_y_f_q_i_f_w_n_n_f_i_d_ _u_5_a_k_9_d_x_j_c_ _u_f_w_j_f_")
);
assert.deepEqual(
Keyboard.SEBEOLSIK_390.getKeySequence("ㅇㅅㅇ ㄲㄲ"),
_simple_seq("j_n_j_ _k_k_k_k_")
);
assert.deepEqual(
Keyboard.SEBEOLSIK_390.getKeySequence("정ㄱ-ㅠ 표현싴으로는 무리가 좀 있다 없다"),
_simple_seq("l_t_a_k_-_5_ _p_4_m_e_s_n_d_e^j_g_y_v_h_g_s_ _i_b_y_d_k_f_ _l_v_z_ _j_d_2_u_f_ _j_t_x^u_f_")
);
});
});
describe('#type()', function(){
it("should work for examples in getKeySequence()", function(){
assert.strictEqual(Keyboard.SEBEOLSIK_390.type(_simple_seq("h_f_y_f_q_i_f_w_n_n_f_i_d_ _u_5_a_k_9_d_x_j_c_ _u_f_w_j_f_")), "나랏말싸미 듕귁에 달아");
assert.strictEqual(Keyboard.SEBEOLSIK_390.type(_simple_seq("j_n_j_ _k_k_k_k_")), "ㅇㅅㅇ ㄲㄲ");
assert.strictEqual(Keyboard.SEBEOLSIK_390.type(_simple_seq("l_t_a_k_-_5_ _p_4_m_e_s_n_d_e^j_g_y_v_h_g_s_ _i_b_y_d_k_f_ _l_v_z_ _j_d_2_u_f_ _j_t_x^u_f_")), "정ㄱ-ㅠ 표현싴으로는 무리가 좀 있다 없다");
assert.strictEqual(Keyboard.SEBEOLSIK_390.type(_simple_seq(";_f_;_v_")), "바보");
});
});
});
});
});