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// Include test fixture. 6GEN_INCLUDE(['../testing/chromevox_unittest_base.js']); 7 8/** 9 * Test fixture. 10 * @constructor 11 * @extends {ChromeVoxUnitTestBase} 12 */ 13function CvoxMathShifterUnitTest() {} 14 15CvoxMathShifterUnitTest.prototype = { 16 __proto__: ChromeVoxUnitTestBase.prototype, 17 18 closureModuleDeps: [ 19 'cvox.ChromeVoxTester', 20 'cvox.CursorSelection', 21 'cvox.DescriptionUtil', 22 'cvox.MathmlStoreRules' 23 ], 24 25 /** @override */ 26 setUp: function() { 27 cvox.ChromeVoxTester.setUp(document); 28 }, 29 30 /** @override */ 31 tearDown: function() { 32 cvox.ChromeVoxTester.tearDown(document); 33 }, 34 35 /** 36 * Simulates speaking the node (only text, no annotations!). 37 * @param {Node} node The node to be described. 38 * @return {!string} The resulting string. 39 */ 40 getNodeDescription: function(node) { 41 if (node) { 42 var descs = cvox.DescriptionUtil.getMathDescription(node); 43 var descs_str = descs.map(function(desc) {return desc.text;}); 44 return descs_str.filter(function(str) {return str;}).join(' '); 45 } 46 return ''; 47 } 48}; 49 50TEST_F('CvoxMathShifterUnitTest', 'MathmlMtext', function() { 51 this.loadHtml( 52 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m0">' + 53 '<mtext>Quod erat demonstrandum</mtext>' + 54 '</math></div>' 55 ); 56 var node = $('m0'); 57 assertEquals('Quod erat demonstrandum', this.getNodeDescription(node)); 58}); 59 60 61/** Test MathML individual. 62 * @export 63 */ 64TEST_F('CvoxMathShifterUnitTest', 'MathmlMi', function() { 65 this.loadHtml( 66 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m1">' + 67 '<mi>x</mi>' + 68 '</math></div>'); 69 var node = $('m1'); 70 assertEquals('x', this.getNodeDescription(node)); 71}); 72 73 74/** Test MathML numeral. 75 * @export 76 */ 77TEST_F('CvoxMathShifterUnitTest', 'MathmlMn', function() { 78 this.loadHtml( 79 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m2">' + 80 '<mn>123</mn>' + 81 '</math></div>'); 82 var node = $('m2'); 83 assertEquals('123', this.getNodeDescription(node)); 84}); 85 86 87/** Test MathML operator 88 * @export 89 */ 90TEST_F('CvoxMathShifterUnitTest', 'MathmlMo', function() { 91 this.loadHtml( 92 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m3">' + 93 '<mo>+</mo>' + 94 '</math></div>'); 95 var node = $('m3'); 96 assertEquals('+', this.getNodeDescription(node)); 97}); 98 99 100/** Test MathML superscript. 101 * @export 102 */ 103TEST_F('CvoxMathShifterUnitTest', 'MathmlMsup', function() { 104 this.loadHtml( 105 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m4">' + 106 '<msup><mi>x</mi><mn>4</mn></msup>' + 107 '</math></div>'); 108 var node = $('m4'); 109 assertEquals('x super 4', this.getNodeDescription(node)); 110}); 111 112 113/** Test MathML subscript. 114 * @export 115 */ 116TEST_F('CvoxMathShifterUnitTest', 'MathmlMsub', function() { 117 this.loadHtml( 118 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m5">' + 119 '<msub><mi>x</mi><mn>3</mn></msub>' + 120 '</math></div>'); 121 var node = $('m5'); 122 assertEquals('x sub 3', this.getNodeDescription(node)); 123}); 124 125 126/** Test MathML subsupscript. 127 * @export 128 */ 129TEST_F('CvoxMathShifterUnitTest', 'MathmlMsubsup', function() { 130 this.loadHtml( 131 '<div><math xmlns="http://www.w3.org/1998/Math/MathML" id="m6">' + 132 '<msubsup><mi>x</mi><mn>3</mn><mn>4</mn></msubsup>' + 133 '</math></div>'); 134 var node = $('m6'); 135 assertEquals('x sub 3 super 4', this.getNodeDescription(node)); 136}); 137