Chromium Code Reviews| Index: chrome/browser/resources/chromeos/chromevox/testing/mock_feedback_test.unitjs |
| diff --git a/chrome/browser/resources/chromeos/chromevox/testing/mock_feedback_test.unitjs b/chrome/browser/resources/chromeos/chromevox/testing/mock_feedback_test.unitjs |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d953d986f35ebff123b090805d88192c415b4e04 |
| --- /dev/null |
| +++ b/chrome/browser/resources/chromeos/chromevox/testing/mock_feedback_test.unitjs |
| @@ -0,0 +1,135 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
|
dmazzoni
2015/08/24 19:05:07
2015?
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Include test fixture. |
| +GEN_INCLUDE(['chromevox_unittest_base.js', |
| + 'mock_feedback.js']); |
| + |
| +function speak(text, opt_endCallback) { |
| + cvox.ChromeVox.tts.speak(text, 0, {endCallback: opt_endCallback}); |
| +} |
| + |
| +function braille(text) { |
| + var navBraille = cvox.NavBraille.fromText(text); |
| + cvox.ChromeVox.braille.write(navBraille); |
| + return navBraille; |
| +} |
| + |
| +/** |
| + * Test fixture. |
| + * @constructor |
| + * @extends {ChromeVoxUnitTestBase} |
| + */ |
| +function MockFeedbackUnitTest() { |
| + ChromeVoxUnitTestBase.call(this); |
| +} |
| + |
| +MockFeedbackUnitTest.prototype = { |
| + __proto__: ChromeVoxUnitTestBase.prototype, |
| + |
| + setUp: function() { |
| + cvox.ChromeVox = cvox.ChromeVox || {}; |
| + }, |
| + |
| + closureModuleDeps: [ |
| + 'cvox.BrailleInterface', |
| + 'cvox.NavBraille', |
| + 'cvox.TtsInterface' |
| + ] |
| +}; |
| + |
| +TEST_F('MockFeedbackUnitTest', 'speechAndCallbacks', function() { |
| + var afterThirdStringCalled = false; |
| + var spruiousStringEndCallbackCalled = false; |
| + var finishCalled = false; |
| + var mock = new MockFeedback(function() { |
| + assertFalse(finishCalled); |
| + finishCalled = true; |
| + |
| + assertTrue(afterThirdStringCalled); |
| + assertTrue(spruiousStringEndCallbackCalled); |
| + }); |
| + mock.install(); |
| + speak('First string'); |
| + speak('Second string'); |
| + mock.expectSpeech('First string', 'Second string') |
| + .expectSpeech('Third string') |
| + .call(function() { |
| + assertFalse(afterThirdStringCalled); |
| + afterThirdStringCalled = true; |
| + speak('Spurious string', function() { |
| + assertFalse(spruiousStringEndCallbackCalled); |
| + spruiousStringEndCallbackCalled = true; |
| + }); |
| + speak('Fourth string'); |
| + }) |
| + .expectSpeech('Fourth string') |
| + .replay(); |
| + assertFalse(finishCalled); |
| + speak('Third string'); |
| + assertTrue(finishCalled); |
| +}); |
| + |
| +TEST_F('MockFeedbackUnitTest', 'SpeechAndBraille', function() { |
| + var secondCallbackCalled = false; |
| + var finishCalled = false; |
| + var mock = new MockFeedback(function() { finishCalled = true; }); |
| + var firstExpectedNavBraille; |
| + mock.install(); |
| + braille('Some braille'); |
| + speak('Some speech'); |
| + mock.call(function() { |
| + assertEquals(null, mock.lastMatchedBraille); |
| + firstExpectedNavBraille = braille('First expected braille'); |
| + speak('First expected speech'); |
| + braille('Some other braille'); |
| + }) |
| + .expectSpeech('First expected speech') |
| + .expectBraille('First expected braille') |
| + .call(function() { |
| + secondCallbackCalled = true; |
| + assertEquals(firstExpectedNavBraille, mock.lastMatchedBraille); |
| + }) |
| + .replay(); |
| + assertTrue(secondCallbackCalled); |
| + assertTrue(finishCalled); |
| +}); |
| + |
| +TEST_F('MockFeedbackUnitTest', 'expectWithRegex', function() { |
| + var done = false; |
| + var mock = new MockFeedback(); |
| + mock.install(); |
| + mock.call(function() { braille('Item 1 of 14'); }) |
| + .expectBraille(/Item \d+ of \d+/) |
| + .call(function() { done = true;}) |
| + .replay(); |
| + assertTrue(done); |
| +}); |
| + |
| +TEST_F('MockFeedbackUnitTest', 'expectAfterGoThrows', function() { |
|
dmazzoni
2015/08/24 19:05:07
Should this be expectAfterReplayThrows?
|
| + var mock = new MockFeedback(); |
| + mock.replay(); |
| + assertException('', function() { |
| + mock.expectSpeech('hello'); |
| + }, 'Error'); |
| +}); |
| + |
| +TEST_F('MockFeedbackUnitTest', 'NoMatchDoesNotFinish', function() { |
| + var firstCallbackCalled = false; |
| + var mock = new MockFeedback(function() { |
| + throw Error('Should not be called'); |
| + }); |
| + mock.install(); |
| + braille('Some string'); |
| + mock.call(function() { |
| + braille('Some other string'); |
| + firstCallbackCalled = true; |
| + }) |
| + .expectBraille('Unmatched string') |
| + .call(function() { |
| + throw Error('Should not be called'); |
| + }) |
| + .replay(); |
| + assertTrue(firstCallbackCalled); |
| +}); |