Home | History | Annotate | Download | only in testing
      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
      3 // found in the LICENSE file.
      4 
      5 /**
      6  * @fileoverview Dummy implementation of TTS for testing.
      7  *
      8  */
      9 
     10 goog.provide('cvox.TestTts');
     11 
     12 goog.require('cvox.AbstractTts');
     13 goog.require('cvox.DomUtil');
     14 goog.require('cvox.HostFactory');
     15 
     16 
     17 
     18 /**
     19  * @constructor
     20  * @extends {cvox.AbstractTts}
     21  */
     22 cvox.TestTts = function() {
     23   cvox.AbstractTts.call(this);
     24   this.utterances_ = [];
     25 };
     26 goog.inherits(cvox.TestTts, cvox.AbstractTts);
     27 
     28 
     29 /**
     30  * @type {string}
     31  * @private
     32  */
     33 cvox.TestTts.prototype.sentinelText_ = '@@@STOP@@@';
     34 
     35 
     36 /**
     37  * @override
     38  */
     39 cvox.TestTts.prototype.speak = function(text, queueMode, opt_properties) {
     40   this.utterances_.push({text: text, queueMode: queueMode});
     41   if (opt_properties && opt_properties['endCallback'] != undefined) {
     42     var len = this.utterances_.length;
     43     // 'After' is a sentinel value in the tests that tells TTS to stop and
     44     // ends callbacks being called.
     45     if (this.utterances_[len - 1].text !=
     46         this.sentinelText_) {
     47       opt_properties['endCallback']();
     48     }
     49   }
     50 };
     51 
     52 
     53 /**
     54  * Creates a sentinel element that indicates when TTS should stop and callbacks
     55  * should stop being called.
     56  * @return {Element} The sentinel element.
     57  */
     58 cvox.TestTts.prototype.createSentinel = function() {
     59   var sentinel = document.createElement('div');
     60   sentinel.textContent = this.sentinelText_;
     61   return sentinel;
     62 };
     63 
     64 
     65 /**
     66  * All calls to tts.speak are saved in an array of utterances.
     67  * Clear any utterances that were saved up to this point.
     68  */
     69 cvox.TestTts.prototype.clearUtterances = function() {
     70   this.utterances_.length = 0;
     71 };
     72 
     73 /**
     74  * Return a string of what was spoken by tts.speak().
     75  * @return {string} A single string containing all utterances spoken
     76  *     since initialization or the last call to clearUtterances,
     77  *     concatenated together with all whitespace collapsed to single
     78  *     spaces.
     79  */
     80 cvox.TestTts.prototype.getUtterancesAsString = function() {
     81   return cvox.DomUtil.collapseWhitespace(this.getUtteranceList().join(' '));
     82 };
     83 
     84 /**
     85  * Return a list of strings of what was spoken by tts.speak().
     86  * @return {Array.<string>} A list of all utterances spoken since
     87  *     initialization or the last call to clearUtterances.
     88  */
     89 cvox.TestTts.prototype.getUtteranceList = function() {
     90   var result = [];
     91   for (var i = 0; i < this.utterances_.length; i++) {
     92     result.push(this.utterances_[i].text);
     93   }
     94   return result;
     95 };
     96 
     97 /**
     98  * Return a list of strings of what was spoken by tts.speak().
     99  * @return {Array.<{text: string, queueMode: number}>}
    100  *     A list of info about all utterances spoken since
    101  *     initialization or the last call to clearUtterances.
    102  */
    103 cvox.TestTts.prototype.getUtteranceInfoList = function() {
    104   return this.utterances_;
    105 };
    106 
    107 /** @override */
    108 cvox.HostFactory.ttsConstructor = cvox.TestTts;
    109