diff options
Diffstat (limited to 'test/test-japanese.js')
| -rw-r--r-- | test/test-japanese.js | 73 | 
1 files changed, 65 insertions, 8 deletions
| diff --git a/test/test-japanese.js b/test/test-japanese.js index c5d220e7..ca65dde2 100644 --- a/test/test-japanese.js +++ b/test/test-japanese.js @@ -23,9 +23,11 @@ const vm = new VM();  vm.execute([      'mixed/lib/wanakana.min.js',      'mixed/js/japanese.js', +    'bg/js/text-source-map.js',      'bg/js/japanese.js'  ]);  const jp = vm.get('jp'); +const TextSourceMap = vm.get('TextSourceMap');  function testIsCodePointKanji() { @@ -262,13 +264,13 @@ function testConvertHalfWidthKanaToFullWidth() {      ];      for (const [string, expected, expectedSourceMapping] of data) { -        const sourceMapping = new Array(string.length).fill(1); +        const sourceMap = new TextSourceMap(string);          const actual1 = jp.convertHalfWidthKanaToFullWidth(string, null); -        const actual2 = jp.convertHalfWidthKanaToFullWidth(string, sourceMapping); +        const actual2 = jp.convertHalfWidthKanaToFullWidth(string, sourceMap);          assert.strictEqual(actual1, expected);          assert.strictEqual(actual2, expected); -        if (Array.isArray(expectedSourceMapping)) { -            vm.assert.deepStrictEqual(sourceMapping, expectedSourceMapping); +        if (typeof expectedSourceMapping !== 'undefined') { +            assert.ok(sourceMap.equals(new TextSourceMap(string, expectedSourceMapping)));          }      }  } @@ -285,13 +287,13 @@ function testConvertAlphabeticToKana() {      ];      for (const [string, expected, expectedSourceMapping] of data) { -        const sourceMapping = new Array(string.length).fill(1); +        const sourceMap = new TextSourceMap(string);          const actual1 = jp.convertAlphabeticToKana(string, null); -        const actual2 = jp.convertAlphabeticToKana(string, sourceMapping); +        const actual2 = jp.convertAlphabeticToKana(string, sourceMap);          assert.strictEqual(actual1, expected);          assert.strictEqual(actual2, expected); -        if (Array.isArray(expectedSourceMapping)) { -            vm.assert.deepStrictEqual(sourceMapping, expectedSourceMapping); +        if (typeof expectedSourceMapping !== 'undefined') { +            assert.ok(sourceMap.equals(new TextSourceMap(string, expectedSourceMapping)));          }      }  } @@ -392,6 +394,59 @@ function testDistributeFuriganaInflected() {      }  } +function testIsMoraPitchHigh() { +    const data = [ +        [[0, 0], false], +        [[1, 0], true], +        [[2, 0], true], +        [[3, 0], true], + +        [[0, 1], true], +        [[1, 1], false], +        [[2, 1], false], +        [[3, 1], false], + +        [[0, 2], true], +        [[1, 2], true], +        [[2, 2], false], +        [[3, 2], false], + +        [[0, 3], true], +        [[1, 3], true], +        [[2, 3], true], +        [[3, 3], false], + +        [[0, 4], true], +        [[1, 4], true], +        [[2, 4], true], +        [[3, 4], true] +    ]; + +    for (const [[moraIndex, pitchAccentPosition], expected] of data) { +        const actual = jp.isMoraPitchHigh(moraIndex, pitchAccentPosition); +        assert.strictEqual(actual, expected); +    } +} + +function testGetKanaMorae() { +    const data = [ +        ['かこ', ['か', 'こ']], +        ['かっこ', ['か', 'っ', 'こ']], +        ['カコ', ['カ', 'コ']], +        ['カッコ', ['カ', 'ッ', 'コ']], +        ['コート', ['コ', 'ー', 'ト']], +        ['ちゃんと', ['ちゃ', 'ん', 'と']], +        ['とうきょう', ['と', 'う', 'きょ', 'う']], +        ['ぎゅう', ['ぎゅ', 'う']], +        ['ディスコ', ['ディ', 'ス', 'コ']] +    ]; + +    for (const [text, expected] of data) { +        const actual = jp.getKanaMorae(text); +        vm.assert.deepStrictEqual(actual, expected); +    } +} +  function main() {      testIsCodePointKanji(); @@ -408,6 +463,8 @@ function main() {      testConvertAlphabeticToKana();      testDistributeFurigana();      testDistributeFuriganaInflected(); +    testIsMoraPitchHigh(); +    testGetKanaMorae();  } |