| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Include test fixture. | 5 // Include test fixture. |
| 6 GEN_INCLUDE(['../../testing/chromevox_e2e_test_base.js', | 6 GEN_INCLUDE(['../../testing/chromevox_e2e_test_base.js', |
| 7 '../../testing/assert_additions.js']); | 7 '../../testing/assert_additions.js']); |
| 8 | 8 |
| 9 // E2E tests for TtsBackground. | 9 // E2E tests for TtsBackground. |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 assertEquals('A', preprocess('A')); | 35 assertEquals('A', preprocess('A')); |
| 36 assertEquals('a.', preprocess('a.')); | 36 assertEquals('a.', preprocess('a.')); |
| 37 assertEquals('.a', preprocess('.a')); | 37 assertEquals('.a', preprocess('.a')); |
| 38 | 38 |
| 39 assertEquals('10 equal signs', preprocess('==========')); | 39 assertEquals('10 equal signs', preprocess('==========')); |
| 40 | 40 |
| 41 assertEquals('new line', preprocess('\n')); | 41 assertEquals('new line', preprocess('\n')); |
| 42 assertEquals('return', preprocess('\r')); | 42 assertEquals('return', preprocess('\r')); |
| 43 }); | 43 }); |
| 44 | 44 |
| 45 SYNC_TEST_F('CvoxTtsBackgroundTest', 'UpdateVoice', function() { | 45 TEST_F('CvoxTtsBackgroundTest', 'UpdateVoice', function() { |
| 46 var tts = new cvox.TtsBackground(false); | 46 var tts = new cvox.TtsBackground(false); |
| 47 var voices = [ | 47 var voices = [ |
| 48 {lang: 'zh-CN', voiceName: 'Chinese'}, | 48 {lang: 'zh-CN', voiceName: 'Chinese'}, |
| 49 {lang: 'zh-TW', voiceName: 'Chinese (Taiwan)'}, | 49 {lang: 'zh-TW', voiceName: 'Chinese (Taiwan)'}, |
| 50 {lang: 'es', voiceName: 'Spanish'}, |
| 50 {lang: 'en-US', voiceName: 'U.S. English'} | 51 {lang: 'en-US', voiceName: 'U.S. English'} |
| 51 ]; | 52 ]; |
| 52 | 53 |
| 53 chrome.tts.getVoices = function(callback) { | 54 chrome.tts.getVoices = function(callback) { |
| 54 callback(voices); | 55 callback(voices); |
| 55 }; | 56 }; |
| 56 | 57 |
| 58 // Asks this test to process the next task immediately. |
| 59 var flushNextTask = function() { |
| 60 var task = tasks.shift(); |
| 61 if (!task) return; |
| 62 |
| 63 if (task.setup) |
| 64 task.setup(); |
| 65 tts.updateVoice_(task.testVoice, this.newCallback(function(actualVoice) { |
| 66 assertEquals(task.expectedVoice, actualVoice); |
| 67 flushNextTask(); |
| 68 })); |
| 69 }.bind(this); |
| 70 |
| 57 assertTrue(!tts.currentVoice); | 71 assertTrue(!tts.currentVoice); |
| 58 | |
| 59 tts.updateVoice_(''); | |
| 60 assertEquals('U.S. English', tts.currentVoice); | |
| 61 | 72 |
| 62 voices[2].lang = 'en'; | 73 var tasks = [ |
| 63 tts.updateVoice_(''); | 74 {testVoice: '', expectedVoice: 'U.S. English'}, |
| 64 assertEquals('U.S. English', tts.currentVoice); | |
| 65 | 75 |
| 66 voices[2].lang = 'fr-FR'; | 76 {setup: function() { |
| 67 voices[2].voiceName = 'French'; | 77 voices[3].lang = 'en'; |
| 68 tts.updateVoice_(''); | 78 }, |
| 69 assertEquals('Chinese', tts.currentVoice); | 79 testVoice: '', expectedVoice: 'U.S. English'}, |
| 70 | 80 |
| 71 tts.updateVoice_('French'); | 81 {setup: function() { |
| 72 assertEquals('French', tts.currentVoice); | 82 voices[3].lang = 'fr-FR'; |
| 83 voices[3].voiceName = 'French'; |
| 84 }, |
| 85 testVoice: '', expectedVoice: 'Chinese'}, |
| 86 |
| 87 {testVoice: 'French', expectedVoice: 'French'}, |
| 88 |
| 89 {setup: function() { |
| 90 chrome.i18n.getUILanguage = function() { return 'es-ES'; }; |
| 91 chrome.i18n.getAcceptLanguages = function(callback) { |
| 92 callback([]); |
| 93 }; |
| 94 }, |
| 95 testVoice: '', expectedVoice: 'Spanish'}, |
| 96 |
| 97 {setup: function() { |
| 98 chrome.i18n.getUILanguage = function() { return ''; }; |
| 99 chrome.i18n.getAcceptLanguages = function(callback) { |
| 100 callback(['zh-TW']); |
| 101 }; |
| 102 }, |
| 103 testVoice: '', expectedVoice: 'Chinese (Taiwan)'} |
| 104 ]; |
| 105 |
| 106 flushNextTask(); |
| 73 }); | 107 }); |
| 74 | 108 |
| 75 // This test only works if Google tts is installed. Run it locally. | 109 // This test only works if Google tts is installed. Run it locally. |
| 76 TEST_F( | 110 TEST_F( |
| 77 'CvoxTtsBackgroundTest', 'DISABLED_EmptyStringCallsCallbacks', function() { | 111 'CvoxTtsBackgroundTest', 'DISABLED_EmptyStringCallsCallbacks', function() { |
| 78 var tts = new cvox.TtsBackground(false); | 112 var tts = new cvox.TtsBackground(false); |
| 79 var startCalls = 0, endCalls = 0; | 113 var startCalls = 0, endCalls = 0; |
| 80 assertCallsCallbacks = function(text, speakCalls) { | 114 assertCallsCallbacks = function(text, speakCalls) { |
| 81 tts.speak(text, cvox.QueueMode.QUEUE, | 115 tts.speak(text, cvox.QueueMode.QUEUE, |
| 82 {startCallback: function() { ++startCalls; }, | 116 {startCallback: function() { ++startCalls; }, |
| 83 endCallback: this.newCallback(function() { | 117 endCallback: this.newCallback(function() { |
| 84 ++endCalls; | 118 ++endCalls; |
| 85 assertEquals(speakCalls, endCalls); | 119 assertEquals(speakCalls, endCalls); |
| 86 assertEquals(endCalls, startCalls); | 120 assertEquals(endCalls, startCalls); |
| 87 })} | 121 })} |
| 88 ); | 122 ); |
| 89 }.bind(this); | 123 }.bind(this); |
| 90 | 124 |
| 91 assertCallsCallbacks('', 1); | 125 assertCallsCallbacks('', 1); |
| 92 assertCallsCallbacks(' ', 2); | 126 assertCallsCallbacks(' ', 2); |
| 93 assertCallsCallbacks(' \u00a0 ', 3); | 127 assertCallsCallbacks(' \u00a0 ', 3); |
| 94 }); | 128 }); |
| OLD | NEW |