]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Add test cases for Japanese
authorDaniel Imms <daimms@microsoft.com>
Thu, 14 Jul 2016 04:22:27 +0000 (21:22 -0700)
committerDaniel Imms <daimms@microsoft.com>
Thu, 14 Jul 2016 04:22:27 +0000 (21:22 -0700)
test/composition-helper-test.js

index 558bcdffbd198b2b2126929243a60f7a922ca802..7bc4ee48633fd7ebbfffa1d1351b629cd1bee6b6 100644 (file)
@@ -35,7 +35,6 @@ describe('CompositionHelper', function () {
       },
       handler: function (text) {
         handledText += text;
-        console.log('handler - ' + text);
       }
     }
     handledText = '';
@@ -71,7 +70,7 @@ describe('CompositionHelper', function () {
 
   describe('Input', function () {
     it('Should insert simple characters', function (done) {
-      // First character
+      // First character 'ㅇ'
       compositionHelper.compositionstart();
       compositionHelper.compositionupdate({ data: 'ㅇ' });
       textarea.value = 'ㅇ';
@@ -79,7 +78,7 @@ describe('CompositionHelper', function () {
         compositionHelper.compositionend();
         setTimeout(function() { // wait for any textarea updates
           assert.equal(handledText, 'ㅇ');
-          // Second character
+          // Second character 'ㅇ'
           compositionHelper.compositionstart();
           compositionHelper.compositionupdate({ data: 'ㅇ' });
           textarea.value = 'ㅇㅇ';
@@ -95,7 +94,7 @@ describe('CompositionHelper', function () {
     });
 
     it('Should insert complex characters', function (done) {
-      // First character
+      // First character '앙'
       compositionHelper.compositionstart();
       compositionHelper.compositionupdate({ data: 'ㅇ' });
       textarea.value = 'ㅇ';
@@ -109,7 +108,7 @@ describe('CompositionHelper', function () {
             compositionHelper.compositionend();
             setTimeout(function() { // wait for any textarea updates
               assert.equal(handledText, '앙');
-              // Second character
+              // Second character '앙'
               compositionHelper.compositionstart();
               compositionHelper.compositionupdate({ data: 'ㅇ' });
               textarea.value = '앙ㅇ';
@@ -135,7 +134,7 @@ describe('CompositionHelper', function () {
     });
 
     it('Should insert complex characters that change with following character', function (done) {
-      // First character
+      // First character '아'
       compositionHelper.compositionstart();
       compositionHelper.compositionupdate({ data: 'ㅇ' });
       textarea.value = 'ㅇ';
@@ -143,7 +142,7 @@ describe('CompositionHelper', function () {
         compositionHelper.compositionupdate({ data: '아' });
         textarea.value = '아';
         setTimeout(function() { // wait for any textarea updates
-          // Start second character in first character
+          // Start second character '아' in first character
           compositionHelper.compositionupdate({ data: '앙' });
           textarea.value = '앙';
           setTimeout(function() { // wait for any textarea updates
@@ -163,22 +162,93 @@ describe('CompositionHelper', function () {
       }, 0);
     });
 
-    it('Should insert multi-line charcters', function () {
-      // TODO: Implement a hiragana example
+    it('Should insert multi-characters compositions', function (done) {
+      // First character 'だ'
+      compositionHelper.compositionstart();
+      compositionHelper.compositionupdate({ data: 'd' });
+      textarea.value = 'd';
+      setTimeout(function() { // wait for any textarea updates
+        compositionHelper.compositionupdate({ data: 'だ' });
+        textarea.value = 'だ';
+        setTimeout(function() { // wait for any textarea updates
+          // Second character 'あ'
+          compositionHelper.compositionupdate({ data: 'だあ' });
+          textarea.value = 'だあ';
+          setTimeout(function() { // wait for any textarea updates
+            compositionHelper.compositionend();
+            setTimeout(function() { // wait for any textarea updates
+              assert.equal(handledText, 'だあ');
+              done();
+            }, 0);
+          }, 0);
+        }, 0);
+      }, 0);
     });
 
-    it('Should insert multi-line charcters that are converted to other characters', function () {
-      // TODO: Implement a hiragana -> kanji example
+    it('Should insert multi-character compositions that are converted to other characters with the same length', function (done) {
+      // First character 'だ'
+      compositionHelper.compositionstart();
+      compositionHelper.compositionupdate({ data: 'd' });
+      textarea.value = 'd';
+      setTimeout(function() { // wait for any textarea updates
+        compositionHelper.compositionupdate({ data: 'だ' });
+        textarea.value = 'だ';
+        setTimeout(function() { // wait for any textarea updates
+          // Second character 'ー'
+          compositionHelper.compositionupdate({ data: 'だー' });
+          textarea.value = 'だー';
+          setTimeout(function() { // wait for any textarea updates
+            // Convert to katakana 'ダー'
+            compositionHelper.compositionupdate({ data: 'ダー' });
+            textarea.value = 'ダー';
+            setTimeout(function() { // wait for any textarea updates
+              compositionHelper.compositionend();
+              setTimeout(function() { // wait for any textarea updates
+                assert.equal(handledText, 'ダー');
+                done();
+              }, 0);
+            }, 0);
+          }, 0);
+        }, 0);
+      }, 0);
+    })
+
+    it('Should insert multi-character compositions that are converted to other characters with different lengths', function (done) {
+      // First character 'い'
+      compositionHelper.compositionstart();
+      compositionHelper.compositionupdate({ data: 'い' });
+      textarea.value = 'い';
+      setTimeout(function() { // wait for any textarea updates
+        // Second character 'ま'
+        compositionHelper.compositionupdate({ data: 'いm' });
+        textarea.value = 'いm';
+        setTimeout(function() { // wait for any textarea updates
+          compositionHelper.compositionupdate({ data: 'いま' });
+          textarea.value = 'いま';
+          setTimeout(function() { // wait for any textarea updates
+            // Convert to kanji '今'
+            compositionHelper.compositionupdate({ data: '今' });
+            textarea.value = '今';
+            setTimeout(function() { // wait for any textarea updates
+              compositionHelper.compositionend();
+              setTimeout(function() { // wait for any textarea updates
+                assert.equal(handledText, '今');
+                done();
+              }, 0);
+            }, 0);
+          }, 0);
+        }, 0);
+      }, 0);
     });
 
-    it('Should insert non-composition charcters input immediately after composition characters', function () {
-      // First character
+    it('Should insert non-composition characters input immediately after composition characters', function (done) {
+      // First character 'ㅇ'
       compositionHelper.compositionstart();
       compositionHelper.compositionupdate({ data: 'ㅇ' });
       textarea.value = 'ㅇ';
       setTimeout(function() { // wait for any textarea updates
         compositionHelper.compositionend();
-        // Second character is non-composition character (1)
+        // Second character '1' (a non-composition character)
         textarea.value = 'ㅇ1';
         setTimeout(function() { // wait for any textarea updates
           assert.equal(handledText, 'ㅇ1');