How to use children method in hypothesis

Best Python code snippet using hypothesis

math_semantic_tree_test.js

Source:math_semantic_tree_test.js Github

copy

Full Screen

1/​/​ Copyright 2013 Google Inc.2/​/​3/​/​ Licensed under the Apache License, Version 2.0 (the "License");4/​/​ you may not use this file except in compliance with the License.5/​/​ You may obtain a copy of the License at6/​/​7/​/​ http:/​/​www.apache.org/​licenses/​LICENSE-2.08/​/​9/​/​ Unless required by applicable law or agreed to in writing, software10/​/​ distributed under the License is distributed on an "AS IS" BASIS,11/​/​ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.12/​/​ See the License for the specific language governing permissions and13/​/​ limitations under the License.14/​**15 * @fileoverview Testcases for the semantic tree.16 * @author sorge@google.com (Volker Sorge)17 */​18goog.provide('cvox.SemanticTreeTest');19goog.require('cvox.AbstractTestCase');20goog.require('cvox.ChromeVoxTester');21goog.require('cvox.SemanticAttr');22goog.require('cvox.SemanticTree');23goog.require('cvox.SemanticUtil');24goog.require('cvox.XpathUtil');25/​**26 * @constructor27 * @extends {cvox.AbstractTestCase}28 */​29cvox.SemanticTreeTest = function() {30 goog.base(this);31};32goog.inherits(cvox.SemanticTreeTest, cvox.AbstractTestCase);33/​**34 * @override35 */​36cvox.SemanticTreeTest.prototype.setUpTest = function() {37 this.nodeCounter = 0;38 this.xpathBlacklist = [];39 this.brief = true;40 cvox.SemanticTreeTest.setupAttributes();41};42/​**43 * Adds some unicode characters via hex code to the right category.44 *45 * This method is necessary as the test framework can not handle code containing46 * utf-8 encoded characters.47 */​48cvox.SemanticTreeTest.setupAttributes = function() {49 var attr = cvox.SemanticAttr.getInstance();50 attr.neutralFences.unshift(cvox.SemanticUtil.numberToUnicode(0x00A6));51 attr.dashes.unshift(cvox.SemanticUtil.numberToUnicode(0x2015));52 attr.neutralFences.unshift(cvox.SemanticUtil.numberToUnicode(0x2016));53 attr.arrows.unshift(cvox.SemanticUtil.numberToUnicode(0x2192));54 attr.sumOps.unshift(cvox.SemanticUtil.numberToUnicode(0x2211));55 attr.additions.unshift(cvox.SemanticUtil.numberToUnicode(0x2213));56 attr.multiplications.unshift(cvox.SemanticUtil.numberToUnicode(0x2218));57 attr.intOps.unshift(cvox.SemanticUtil.numberToUnicode(0x222B));58 attr.inequalities.unshift(cvox.SemanticUtil.numberToUnicode(0x2264));59 attr.additions.unshift(cvox.SemanticUtil.numberToUnicode(0x2295));60 var open = cvox.SemanticUtil.numberToUnicode(0x3008);61 var close = cvox.SemanticUtil.numberToUnicode(0x3009);62 attr.openClosePairs[open] = close;63 attr.leftFences.unshift(open);64 attr.rightFences.unshift(close);65};66/​**67 * Removes XML nodes according to the XPath elements in the blacklist.68 * @param {Node} xml Xml representation of the semantic node.69 */​70cvox.SemanticTreeTest.prototype.customizeXml = function(xml) {71 this.xpathBlacklist.forEach(72 function(xpath) {73 var removes = cvox.XpathUtil.evalXPath(xpath, xml);74 removes.forEach(75 function(node) {76 node.parentNode.removeChild(node);77 });78 });79};80/​**81 * Tests if for a given mathml snippet results in a particular semantic tree.82 * @param {string} mml MathML expression.83 * @param {string} sml XML snippet for the semantic tree.84 */​85cvox.SemanticTreeTest.prototype.executeTreeTest = function(mml, sml) {86 var mathMl = '<math id=' + this.nodeCounter + '>' + mml + '';87 this.appendHtml(mathMl);88 var node = document.getElementById((this.nodeCounter++).toString());89 var stree = new cvox.SemanticTree(/​** @type {!Element} */​(node));90 var sxml = stree.xml(this.brief);91 this.customizeXml(sxml);92 var dp = new DOMParser();93 var xml = dp.parseFromString('<stree>' + sml + '</​stree>', 'text/​xml');94 var xmls = new XMLSerializer();95 this.assertEquals(xmls.serializeToString(xml), xmls.serializeToString(sxml));96};97/​/​ Relations.98/​**99 * Test relation trees.100 */​101cvox.SemanticTreeTest.prototype.testStreeRelations = function() {102 this.brief = true;103 this.executeTreeTest(104 '<mo>=</​mo>',105 '<relation>=</​relation>');106 this.executeTreeTest(107 '<mi>a</​mi><mo>=</​mo><mi>b</​mi>',108 '<relseq>=' +109 '<content><relation>=</​relation></​content>' +110 '<children>' +111 '<identifier>a</​identifier>' +112 '<identifier>b</​identifier>' +113 '</​children>' +114 '</​relseq>');115 this.executeTreeTest(116 '<mi>a</​mi><mo>=</​mo><mi>b</​mi><mo>=</​mo><mi>c</​mi>',117 '<relseq>=' +118 '<content><relation>=</​relation><relation>=</​relation></​content>' +119 '<children>' +120 '<identifier>a</​identifier>' +121 '<identifier>b</​identifier>' +122 '<identifier>c</​identifier>' +123 '</​children>' +124 '</​relseq>');125 this.executeTreeTest(126 '<mi>a</​mi><mo>=</​mo><mi>b</​mi><mo>=</​mo><mi>c</​mi>' +127 '<mo>\u2264</​mo><mi>d</​mi>',128 '<multirel>' +129 '<content><relation>=</​relation><relation>=</​relation>' +130 '<relation>\u2264</​relation></​content>' +131 '<children>' +132 '<identifier>a</​identifier>' +133 '<identifier>b</​identifier>' +134 '<identifier>c</​identifier>' +135 '<identifier>d</​identifier>' +136 '</​children>' +137 '</​multirel>');138};139/​/​ Operators.140/​**141 * Test operator trees with pre- and postfixes.142 */​143cvox.SemanticTreeTest.prototype.testStreePrePostfixOperators = function() {144 this.brief = true;145 /​/​ Pathological operator only case.146 this.executeTreeTest(147 '<mo>+</​mo><mo>-</​mo><mo>+</​mo>',148 '<prefixop>+' +149 '<content><operator>+</​operator></​content>' +150 '<children>' +151 '<prefixop>-' +152 '<content><operator>-</​operator></​content>' +153 '<children>' +154 '<operator>+</​operator>' +155 '</​children>' +156 '</​prefixop>' +157 '</​children>' +158 '</​prefixop>');159 /​/​ Single identifier with prefixes.160 this.executeTreeTest(161 '<mo>+</​mo><mo>+</​mo><mi>a</​mi>',162 '<prefixop>+ +' +163 '<content><operator>+</​operator><operator>+</​operator></​content>' +164 '<children>' +165 '<identifier>a</​identifier>' +166 '</​children>' +167 '</​prefixop>');168 /​/​ Single identifier with prefix and negative.169 this.executeTreeTest(170 '<mo>+</​mo><mo>-</​mo><mi>a</​mi>',171 '<prefixop>+' +172 '<content><operator>+</​operator></​content>' +173 '<children>' +174 '<prefixop>-' +175 '<content><operator>-</​operator></​content>' +176 '<children>' +177 '<identifier>a</​identifier>' +178 '</​children>' +179 '</​prefixop>' +180 '</​children>' +181 '</​prefixop>');182 /​/​ Single identifier with postfixes.183 this.executeTreeTest(184 '<mi>a</​mi><mo>+</​mo><mo>-</​mo>',185 '<postfixop>+ -' +186 '<content><operator>+</​operator><operator>-</​operator></​content>' +187 '<children>' +188 '<identifier>a</​identifier>' +189 '</​children>' +190 '</​postfixop>');191 /​/​ Single identifier with pre- and postfixes.192 this.executeTreeTest(193 '<mo>+</​mo><mo>+</​mo><mi>a</​mi><mo>+</​mo><mo>+</​mo>',194 '<postfixop>+ +' +195 '<content><operator>+</​operator><operator>+</​operator></​content>' +196 '<children>' +197 '<prefixop>+ +' +198 '<content><operator>+</​operator><operator>+</​operator></​content>' +199 '<children>' +200 '<identifier>a</​identifier>' +201 '</​children>' +202 '</​prefixop>' +203 '</​children>' +204 '</​postfixop>');205 /​/​ Single identifier with mixed pre- and postfixes.206 this.executeTreeTest(207 '<mo>\u2213</​mo><mo>+</​mo><mi>a</​mi><mo>\u2213</​mo><mo>+</​mo>',208 '<postfixop>\u2213 +' +209 '<content>' +210 '<operator>\u2213</​operator><operator>+</​operator>' +211 '</​content>' +212 '<children>' +213 '<prefixop>\u2213 +' +214 '<content>' +215 '<operator>\u2213</​operator><operator>+</​operator>' +216 '</​content>' +217 '<children>' +218 '<identifier>a</​identifier>' +219 '</​children>' +220 '</​prefixop>' +221 '</​children>' +222 '</​postfixop>');223 /​/​ Two identifiers with pre- and postfixes.224 this.executeTreeTest(225 '<mo>+</​mo><mo>+</​mo><mi>a</​mi><mo>\u2213</​mo><mo>+</​mo>' +226 '<mi>b</​mi><mo>+</​mo>',227 '<infixop>\u2213' +228 '<content><operator>\u2213</​operator></​content>' +229 '<children>' +230 '<prefixop>+ +' +231 '<content><operator>+</​operator><operator>+</​operator></​content>' +232 '<children>' +233 '<identifier>a</​identifier>' +234 '</​children>' +235 '</​prefixop>' +236 '<postfixop>+' +237 '<content><operator>+</​operator></​content>' +238 '<children>' +239 '<prefixop>+' +240 '<content><operator>+</​operator></​content>' +241 '<children>' +242 '<identifier>b</​identifier>' +243 '</​children>' +244 '</​prefixop>' +245 '</​children>' +246 '</​postfixop>' +247 '</​children>' +248 '</​infixop>');249 /​/​ Three identifiers with pre- and postfixes.250 this.executeTreeTest(251 '<mo>+</​mo><mo>+</​mo><mi>a</​mi><mo>\u2213</​mo><mo>+</​mo>' +252 '<mi>b</​mi><mo>+</​mo><mo>\u2213</​mo><mi>c</​mi><mo>+</​mo>',253 '<infixop>+' +254 '<content><operator>+</​operator></​content>' +255 '<children>' +256 '<infixop>\u2213' +257 '<content><operator>\u2213</​operator></​content>' +258 '<children>' +259 '<prefixop>+ +' +260 '<content><operator>+</​operator><operator>+</​operator></​content>' +261 '<children>' +262 '<identifier>a</​identifier>' +263 '</​children>' +264 '</​prefixop>' +265 '<prefixop>+' +266 '<content><operator>+</​operator></​content>' +267 '<children>' +268 '<identifier>b</​identifier>' +269 '</​children>' +270 '</​prefixop>' +271 '</​children>' +272 '</​infixop>' +273 '<postfixop>+' +274 '<content><operator>+</​operator></​content>' +275 '<children>' +276 '<prefixop>\u2213' +277 '<content><operator>\u2213</​operator></​content>' +278 '<children>' +279 '<identifier>c</​identifier>' +280 '</​children>' +281 '</​prefixop>' +282 '</​children>' +283 '</​postfixop>' +284 '</​children>' +285 '</​infixop>');286};287/​**288 * Test operator trees with single operator.289 */​290cvox.SemanticTreeTest.prototype.testStreeSingleOperators = function() {291 this.brief = true;292 /​/​ Single identifier.293 this.executeTreeTest(294 '<mi>a</​mi>',295 '<identifier>a</​identifier>');296 /​/​ Single implicit node.297 this.executeTreeTest(298 '<mi>a</​mi><mi>b</​mi>',299 '<infixop>\u2062' +300 '<content><operator>\u2062</​operator></​content>' +301 '<children>' +302 '<identifier>a</​identifier>' +303 '<identifier>b</​identifier>' +304 '</​children>' +305 '</​infixop>');306 /​/​ Implicit multi node.307 this.executeTreeTest(308 '<mi>a</​mi><mi>b</​mi><mi>c</​mi>',309 '<infixop>\u2062' +310 '<content><operator>\u2062</​operator></​content>' +311 '<children>' +312 '<identifier>a</​identifier>' +313 '<identifier>b</​identifier>' +314 '<identifier>c</​identifier>' +315 '</​children>' +316 '</​infixop>');317 /​/​ Single addition.318 this.executeTreeTest(319 '<mi>a</​mi><mo>+</​mo><mi>b</​mi>',320 '<infixop>+' +321 '<content><operator>+</​operator></​content>' +322 '<children>' +323 '<identifier>a</​identifier>' +324 '<identifier>b</​identifier>' +325 '</​children>' +326 '</​infixop>');327 /​/​ Multi addition.328 this.executeTreeTest(329 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>+</​mo><mi>c</​mi>',330 '<infixop>+' +331 '<content><operator>+</​operator><operator>+</​operator></​content>' +332 '<children>' +333 '<identifier>a</​identifier>' +334 '<identifier>b</​identifier>' +335 '<identifier>c</​identifier>' +336 '</​children>' +337 '</​infixop>');338 /​/​ Multi addition with implicit node.339 this.executeTreeTest(340 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mi>c</​mi><mo>+</​mo><mi>d</​mi>',341 '<infixop>+' +342 '<content><operator>+</​operator><operator>+</​operator></​content>' +343 '<children>' +344 '<identifier>a</​identifier>' +345 '<infixop>\u2062' +346 '<content><operator>\u2062</​operator></​content>' +347 '<children>' +348 '<identifier>b</​identifier>' +349 '<identifier>c</​identifier>' +350 '</​children>' +351 '</​infixop>' +352 '<identifier>d</​identifier>' +353 '</​children>' +354 '</​infixop>');355};356/​**357 * Test operator trees with multiple operators.358 */​359cvox.SemanticTreeTest.prototype.testStreeMultipleOperators = function() {360 this.brief = true;361 /​/​ Addition and subtraction.362 this.executeTreeTest(363 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>-</​mo><mi>c</​mi><mo>+</​mo><mi>d</​mi>',364 '<infixop>+' +365 '<content><operator>+</​operator></​content>' +366 '<children>' +367 '<infixop>-' +368 '<content><operator>-</​operator></​content>' +369 '<children>' +370 '<infixop>+' +371 '<content><operator>+</​operator></​content>' +372 '<children>' +373 '<identifier>a</​identifier>' +374 '<identifier>b</​identifier>' +375 '</​children>' +376 '</​infixop>' +377 '<identifier>c</​identifier>' +378 '</​children>' +379 '</​infixop>' +380 '<identifier>d</​identifier>' +381 '</​children>' +382 '</​infixop>');383 /​/​ Addition and subtraction.384 this.executeTreeTest(385 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>+</​mo><mi>c</​mi><mo>-</​mo>' +386 '<mi>d</​mi><mo>-</​mo><mi>e</​mi>',387 '<infixop>-' +388 '<content><operator>-</​operator><operator>-</​operator></​content>' +389 '<children>' +390 '<infixop>+' +391 '<content><operator>+</​operator><operator>+</​operator></​content>' +392 '<children>' +393 '<identifier>a</​identifier>' +394 '<identifier>b</​identifier>' +395 '<identifier>c</​identifier>' +396 '</​children>' +397 '</​infixop>' +398 '<identifier>d</​identifier>' +399 '<identifier>e</​identifier>' +400 '</​children>' +401 '</​infixop>');402 /​/​ Addition and explicit multiplication.403 this.executeTreeTest(404 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>\u2218</​mo><mi>c</​mi><mo>+</​mo><mi>d</​mi>',405 '<infixop>+' +406 '<content><operator>+</​operator><operator>+</​operator></​content>' +407 '<children>' +408 '<identifier>a</​identifier>' +409 '<infixop>\u2218' +410 '<content><operator>\u2218</​operator></​content>' +411 '<children>' +412 '<identifier>b</​identifier>' +413 '<identifier>c</​identifier>' +414 '</​children>' +415 '</​infixop>' +416 '<identifier>d</​identifier>' +417 '</​children>' +418 '</​infixop>');419 /​/​ Addition with explicit and implicit multiplication.420 this.executeTreeTest(421 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>\u2218</​mo><mi>c</​mi><mi>d</​mi>' +422 '<mo>+</​mo><mi>e</​mi><mo>\u2218</​mo><mi>f</​mi>',423 '<infixop>+' +424 '<content><operator>+</​operator><operator>+</​operator></​content>' +425 '<children>' +426 '<identifier>a</​identifier>' +427 '<infixop>\u2218' +428 '<content><operator>\u2218</​operator></​content>' +429 '<children>' +430 '<identifier>b</​identifier>' +431 '<infixop>\u2062' +432 '<content><operator>\u2062</​operator></​content>' +433 '<children>' +434 '<identifier>c</​identifier>' +435 '<identifier>d</​identifier>' +436 '</​children>' +437 '</​infixop>' +438 '</​children>' +439 '</​infixop>' +440 '<infixop>\u2218' +441 '<content><operator>\u2218</​operator></​content>' +442 '<children>' +443 '<identifier>e</​identifier>' +444 '<identifier>f</​identifier>' +445 '</​children>' +446 '</​infixop>' +447 '</​children>' +448 '</​infixop>');449 /​/​ Two Additions, subtraction plus explicit and implicit multiplication,450 /​/​ one prefix and one postfix.451 this.executeTreeTest(452 '<mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>+</​mo><mi>c</​mi><mi>d</​mi>' +453 '<mo>+</​mo><mi>e</​mi><mo>\u2218</​mo><mi>f</​mi><mo>-</​mo><mi>g</​mi>' +454 '<mo>+</​mo><mo>+</​mo><mi>h</​mi><mo>\u2295</​mo><mi>i</​mi>' +455 '<mo>\u2295</​mo><mi>j</​mi><mo>+</​mo><mo>+</​mo>',456 '<infixop>\u2295' +457 '<content><operator>\u2295</​operator>' +458 '<operator>\u2295</​operator></​content>' +459 '<children>' +460 '<infixop>+' +461 '<content><operator>+</​operator></​content>' +462 '<children>' +463 '<infixop>-' +464 '<content><operator>-</​operator></​content>' +465 '<children>' +466 '<infixop>+' +467 '<content><operator>+</​operator>' +468 '<operator>+</​operator><operator>+</​operator></​content>' +469 '<children>' +470 '<identifier>a</​identifier>' +471 '<identifier>b</​identifier>' +472 '<infixop>\u2062' +473 '<content><operator>\u2062</​operator></​content>' +474 '<children>' +475 '<identifier>c</​identifier>' +476 '<identifier>d</​identifier>' +477 '</​children>' +478 '</​infixop>' +479 '<infixop>\u2218' +480 '<content><operator>\u2218</​operator></​content>' +481 '<children>' +482 '<identifier>e</​identifier>' +483 '<identifier>f</​identifier>' +484 '</​children>' +485 '</​infixop>' +486 '</​children>' +487 '</​infixop>' +488 '<identifier>g</​identifier>' +489 '</​children>' +490 '</​infixop>' +491 '<prefixop>+' +492 '<content><operator>+</​operator></​content>' +493 '<children>' +494 '<identifier>h</​identifier>' +495 '</​children>' +496 '</​prefixop>' +497 '</​children>' +498 '</​infixop>' +499 '<identifier>i</​identifier>' +500 '<postfixop>+ +' +501 '<content><operator>+</​operator><operator>+</​operator></​content>' +502 '<children>' +503 '<identifier>j</​identifier>' +504 '</​children>' +505 '</​postfixop>' +506 '</​children>' +507 '</​infixop>');508};509/​/​ Fences.510/​**511 * Test regular directed fences.512 */​513cvox.SemanticTreeTest.prototype.testStreeRegularFences = function() {514 this.brief = true;515 /​/​ No fence.516 this.executeTreeTest(517 '<mrow><mi>a</​mi><mo>+</​mo><mi>b</​mi></​mrow>',518 '<infixop>+' +519 '<content>' +520 '<operator>+</​operator>' +521 '</​content>' +522 '<children>' +523 '<identifier>a</​identifier>' +524 '<identifier>b</​identifier>' +525 '</​children>' +526 '</​infixop>');527 /​/​ Empty parentheses.528 this.executeTreeTest(529 '<mrow><mo>(</​mo><mo>)</​mo></​mrow>',530 '<fenced>' +531 '<content>' +532 '<fence>(</​fence>' +533 '<fence>)</​fence>' +534 '</​content>' +535 '<children>' +536 '<empty/​>' +537 '</​children>' +538 '</​fenced>');539 /​/​ Single Fenced Expression.540 this.executeTreeTest(541 '<mrow><mo>(</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>)</​mo></​mrow>',542 '<fenced>' +543 '<content>' +544 '<fence>(</​fence>' +545 '<fence>)</​fence>' +546 '</​content>' +547 '<children>' +548 '<infixop>+' +549 '<content>' +550 '<operator>+</​operator>' +551 '</​content>' +552 '<children>' +553 '<identifier>a</​identifier>' +554 '<identifier>b</​identifier>' +555 '</​children>' +556 '</​infixop>' +557 '</​children>' +558 '</​fenced>');559 /​/​ Single Fenced Expression and operators.560 this.executeTreeTest(561 '<mrow><mi>a</​mi><mo>+</​mo><mo>(</​mo><mi>b</​mi><mo>+</​mo><mi>c</​mi>' +562 '<mo>)</​mo><mo>+</​mo><mi>d</​mi></​mrow>',563 '<infixop>+' +564 '<content>' +565 '<operator>+</​operator>' +566 '<operator>+</​operator>' +567 '</​content>' +568 '<children>' +569 '<identifier>a</​identifier>' +570 '<fenced>' +571 '<content>' +572 '<fence>(</​fence>' +573 '<fence>)</​fence>' +574 '</​content>' +575 '<children>' +576 '<infixop>+' +577 '<content>' +578 '<operator>+</​operator>' +579 '</​content>' +580 '<children>' +581 '<identifier>b</​identifier>' +582 '<identifier>c</​identifier>' +583 '</​children>' +584 '</​infixop>' +585 '</​children>' +586 '</​fenced>' +587 '<identifier>d</​identifier>' +588 '</​children>' +589 '</​infixop>');590 /​/​ Parallel Parenthesis.591 this.executeTreeTest(592 '<mrow><mo>(</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>)</​mo><mo>(</​mo>' +593 '<mi>c</​mi><mo>+</​mo><mi>d</​mi><mo>)</​mo></​mrow>',594 '<infixop>\u2062' +595 '<content>' +596 '<operator>\u2062</​operator>' +597 '</​content>' +598 '<children>' +599 '<fenced>' +600 '<content>' +601 '<fence>(</​fence>' +602 '<fence>)</​fence>' +603 '</​content>' +604 '<children>' +605 '<infixop>+' +606 '<content>' +607 '<operator>+</​operator>' +608 '</​content>' +609 '<children>' +610 '<identifier>a</​identifier>' +611 '<identifier>b</​identifier>' +612 '</​children>' +613 '</​infixop>' +614 '</​children>' +615 '</​fenced>' +616 '<fenced>' +617 '<content>' +618 '<fence>(</​fence>' +619 '<fence>)</​fence>' +620 '</​content>' +621 '<children>' +622 '<infixop>+' +623 '<content>' +624 '<operator>+</​operator>' +625 '</​content>' +626 '<children>' +627 '<identifier>c</​identifier>' +628 '<identifier>d</​identifier>' +629 '</​children>' +630 '</​infixop>' +631 '</​children>' +632 '</​fenced>' +633 '</​children>' +634 '</​infixop>');635 /​/​ Nested Parenthesis.636 this.executeTreeTest(637 '<mrow><mo>(</​mo><mo>(</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>)</​mo>' +638 '<mo>(</​mo><mi>c</​mi><mo>+</​mo><mi>d</​mi><mo>)</​mo><mo>)</​mo></​mrow>',639 '<fenced>' +640 '<content>' +641 '<fence>(</​fence>' +642 '<fence>)</​fence>' +643 '</​content>' +644 '<children>' +645 '<infixop>\u2062' +646 '<content>' +647 '<operator>\u2062</​operator>' +648 '</​content>' +649 '<children>' +650 '<fenced>' +651 '<content>' +652 '<fence>(</​fence>' +653 '<fence>)</​fence>' +654 '</​content>' +655 '<children>' +656 '<infixop>+' +657 '<content>' +658 '<operator>+</​operator>' +659 '</​content>' +660 '<children>' +661 '<identifier>a</​identifier>' +662 '<identifier>b</​identifier>' +663 '</​children>' +664 '</​infixop>' +665 '</​children>' +666 '</​fenced>' +667 '<fenced>' +668 '<content>' +669 '<fence>(</​fence>' +670 '<fence>)</​fence>' +671 '</​content>' +672 '<children>' +673 '<infixop>+' +674 '<content>' +675 '<operator>+</​operator>' +676 '</​content>' +677 '<children>' +678 '<identifier>c</​identifier>' +679 '<identifier>d</​identifier>' +680 '</​children>' +681 '</​infixop>' +682 '</​children>' +683 '</​fenced>' +684 '</​children>' +685 '</​infixop>' +686 '</​children>' +687 '</​fenced>');688 /​/​ Nested parenthesis and brackets.689 this.executeTreeTest(690 '<mrow><mo>(</​mo><mo>[</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>+</​mo>' +691 '<mi>c</​mi><mo>]</​mo><mo>+</​mo><mi>d</​mi><mo>)</​mo></​mrow>',692 '<fenced>' +693 '<content>' +694 '<fence>(</​fence>' +695 '<fence>)</​fence>' +696 '</​content>' +697 '<children>' +698 '<infixop>+' +699 '<content>' +700 '<operator>+</​operator>' +701 '</​content>' +702 '<children>' +703 '<fenced>' +704 '<content>' +705 '<fence>[</​fence>' +706 '<fence>]</​fence>' +707 '</​content>' +708 '<children>' +709 '<infixop>+' +710 '<content>' +711 '<operator>+</​operator>' +712 '<operator>+</​operator>' +713 '</​content>' +714 '<children>' +715 '<identifier>a</​identifier>' +716 '<identifier>b</​identifier>' +717 '<identifier>c</​identifier>' +718 '</​children>' +719 '</​infixop>' +720 '</​children>' +721 '</​fenced>' +722 '<identifier>d</​identifier>' +723 '</​children>' +724 '</​infixop>' +725 '</​children>' +726 '</​fenced>');727 /​/​ Nested parenthesis, brackets, braces and superscript operator.728 this.executeTreeTest(729 '<mrow><mo>(</​mo><msup><mi>a</​mi><mrow><mn>2</​mn><mo>[</​mo><mi>i</​mi>' +730 '<mo>+</​mo><mi>n</​mi><mo>]</​mo></​mrow></​msup><mo>+</​mo><mi>b</​mi>' +731 '<mo>)</​mo><mo>+</​mo><mo>{</​mo><mi>c</​mi><mi>d</​mi><mo>-</​mo><mo>[</​mo>' +732 '<mi>e</​mi><mo>+</​mo><mi>f</​mi><mo>]</​mo><mo>}</​mo></​mrow>',733 '<infixop>+' +734 '<content>' +735 '<operator>+</​operator>' +736 '</​content>' +737 '<children>' +738 '<fenced>' +739 '<content>' +740 '<fence>(</​fence>' +741 '<fence>)</​fence>' +742 '</​content>' +743 '<children>' +744 '<infixop>+' +745 '<content>' +746 '<operator>+</​operator>' +747 '</​content>' +748 '<children>' +749 '<superscript>' +750 '<children>' +751 '<identifier>a</​identifier>' +752 '<infixop>\u2062' +753 '<content>' +754 '<operator>\u2062</​operator>' +755 '</​content>' +756 '<children>' +757 '<number>2</​number>' +758 '<fenced>' +759 '<content>' +760 '<fence>[</​fence>' +761 '<fence>]</​fence>' +762 '</​content>' +763 '<children>' +764 '<infixop>+' +765 '<content>' +766 '<operator>+</​operator>' +767 '</​content>' +768 '<children>' +769 '<identifier>i</​identifier>' +770 '<identifier>n</​identifier>' +771 '</​children>' +772 '</​infixop>' +773 '</​children>' +774 '</​fenced>' +775 '</​children>' +776 '</​infixop>' +777 '</​children>' +778 '</​superscript>' +779 '<identifier>b</​identifier>' +780 '</​children>' +781 '</​infixop>' +782 '</​children>' +783 '</​fenced>' +784 '<fenced>' +785 '<content>' +786 '<fence>{</​fence>' +787 '<fence>}</​fence>' +788 '</​content>' +789 '<children>' +790 '<infixop>-' +791 '<content>' +792 '<operator>-</​operator>' +793 '</​content>' +794 '<children>' +795 '<infixop>\u2062' +796 '<content>' +797 '<operator>\u2062</​operator>' +798 '</​content>' +799 '<children>' +800 '<identifier>c</​identifier>' +801 '<identifier>d</​identifier>' +802 '</​children>' +803 '</​infixop>' +804 '<fenced>' +805 '<content>' +806 '<fence>[</​fence>' +807 '<fence>]</​fence>' +808 '</​content>' +809 '<children>' +810 '<infixop>+' +811 '<content>' +812 '<operator>+</​operator>' +813 '</​content>' +814 '<children>' +815 '<identifier>e</​identifier>' +816 '<identifier>f</​identifier>' +817 '</​children>' +818 '</​infixop>' +819 '</​children>' +820 '</​fenced>' +821 '</​children>' +822 '</​infixop>' +823 '</​children>' +824 '</​fenced>' +825 '</​children>' +826 '</​infixop>');827};828/​**829 * Test neutral fences.830 */​831cvox.SemanticTreeTest.prototype.testStreeNeutralFences = function() {832 this.brief = true;833 /​/​ Empty bars.834 this.executeTreeTest(835 '<mrow><mo>|</​mo><mo>|</​mo></​mrow>',836 '<fenced>' +837 '<content>' +838 '<fence>|</​fence>' +839 '<fence>|</​fence>' +840 '</​content>' +841 '<children>' +842 '<empty/​>' +843 '</​children>' +844 '</​fenced>');845 /​/​ Simple bar fence.846 this.executeTreeTest(847 '<mrow><mo>|</​mo><mi>a</​mi><mo>|</​mo></​mrow>',848 '<fenced>' +849 '<content>' +850 '<fence>|</​fence>' +851 '<fence>|</​fence>' +852 '</​content>' +853 '<children>' +854 '<identifier>a</​identifier>' +855 '</​children>' +856 '</​fenced>');857 /​/​ Parallel bar fences.858 this.executeTreeTest(859 '<mrow><mo>|</​mo><mi>a</​mi><mo>|</​mo><mi>b</​mi><mo>+</​mo>' +860 '<mo>\u00A6</​mo><mi>c</​mi><mo>\u00A6</​mo></​mrow>',861 '<infixop>+' +862 '<content>' +863 '<operator>+</​operator>' +864 '</​content>' +865 '<children>' +866 '<infixop>\u2062' +867 '<content>' +868 '<operator>\u2062</​operator>' +869 '</​content>' +870 '<children>' +871 '<fenced>' +872 '<content>' +873 '<fence>|</​fence>' +874 '<fence>|</​fence>' +875 '</​content>' +876 '<children>' +877 '<identifier>a</​identifier>' +878 '</​children>' +879 '</​fenced>' +880 '<identifier>b</​identifier>' +881 '</​children>' +882 '</​infixop>' +883 '<fenced>' +884 '<content>' +885 '<fence>\u00A6</​fence>' +886 '<fence>\u00A6</​fence>' +887 '</​content>' +888 '<children>' +889 '<identifier>c</​identifier>' +890 '</​children>' +891 '</​fenced>' +892 '</​children>' +893 '</​infixop>');894 /​/​ Nested bar fences.895 this.executeTreeTest(896 '<mrow><mo>\u00A6</​mo><mo>|</​mo><mi>a</​mi><mo>|</​mo><mi>b</​mi>' +897 '<mo>+</​mo><mi>c</​mi><mo>\u00A6</​mo></​mrow>',898 '<fenced>' +899 '<content>' +900 '<fence>\u00A6</​fence>' +901 '<fence>\u00A6</​fence>' +902 '</​content>' +903 '<children>' +904 '<infixop>+' +905 '<content>' +906 '<operator>+</​operator>' +907 '</​content>' +908 '<children>' +909 '<infixop>\u2062' +910 '<content>' +911 '<operator>\u2062</​operator>' +912 '</​content>' +913 '<children>' +914 '<fenced>' +915 '<content>' +916 '<fence>|</​fence>' +917 '<fence>|</​fence>' +918 '</​content>' +919 '<children>' +920 '<identifier>a</​identifier>' +921 '</​children>' +922 '</​fenced>' +923 '<identifier>b</​identifier>' +924 '</​children>' +925 '</​infixop>' +926 '<identifier>c</​identifier>' +927 '</​children>' +928 '</​infixop>' +929 '</​children>' +930 '</​fenced>');931};932/​**933 * Mixed neutral and regular fences.934 */​935cvox.SemanticTreeTest.prototype.testStreeMixedFences = function() {936 this.brief = true;937 /​/​ Empty parenthsis inside bars.938 this.executeTreeTest(939 '<mrow><mo>|</​mo><mo>(</​mo><mo>)</​mo><mo>|</​mo></​mrow>',940 '<fenced>' +941 '<content>' +942 '<fence>|</​fence>' +943 '<fence>|</​fence>' +944 '</​content>' +945 '<children>' +946 '<fenced>' +947 '<content>' +948 '<fence>(</​fence>' +949 '<fence>)</​fence>' +950 '</​content>' +951 '<children>' +952 '<empty/​>' +953 '</​children>' +954 '</​fenced>' +955 '</​children>' +956 '</​fenced>');957 /​/​ Bars inside parentheses.958 this.executeTreeTest(959 '<mrow><mo>(</​mo><mo>|</​mo><mi>a</​mi><mo>|</​mo><mi>b</​mi>' +960 '<mo>&#x00A6;</​mo><mi>c</​mi><mo>&#x00A6;</​mo><mi>d</​mi>' +961 '<mo>)</​mo></​mrow>',962 '<fenced>' +963 '<content>' +964 '<fence>(</​fence>' +965 '<fence>)</​fence>' +966 '</​content>' +967 '<children>' +968 '<infixop>\u2062' +969 '<content>' +970 '<operator>\u2062</​operator>' +971 '</​content>' +972 '<children>' +973 '<fenced>' +974 '<content>' +975 '<fence>|</​fence>' +976 '<fence>|</​fence>' +977 '</​content>' +978 '<children>' +979 '<identifier>a</​identifier>' +980 '</​children>' +981 '</​fenced>' +982 '<identifier>b</​identifier>' +983 '<fenced>' +984 '<content>' +985 '<fence>\u00A6</​fence>' +986 '<fence>\u00A6</​fence>' +987 '</​content>' +988 '<children>' +989 '<identifier>c</​identifier>' +990 '</​children>' +991 '</​fenced>' +992 '<identifier>d</​identifier>' +993 '</​children>' +994 '</​infixop>' +995 '</​children>' +996 '</​fenced>');997 /​/​ Parentheses inside bards.998 this.executeTreeTest(999 '<mrow><mo>|</​mo><mo>(</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>)</​mo>' +1000 '<mo>&#x00A6;</​mo><mi>c</​mi><mo>&#x00A6;</​mo><mi>d</​mi><mo>|</​mo></​mrow>',1001 '<fenced>' +1002 '<content>' +1003 '<fence>|</​fence>' +1004 '<fence>|</​fence>' +1005 '</​content>' +1006 '<children>' +1007 '<infixop>\u2062' +1008 '<content>' +1009 '<operator>\u2062</​operator>' +1010 '</​content>' +1011 '<children>' +1012 '<fenced>' +1013 '<content>' +1014 '<fence>(</​fence>' +1015 '<fence>)</​fence>' +1016 '</​content>' +1017 '<children>' +1018 '<infixop>+' +1019 '<content>' +1020 '<operator>+</​operator>' +1021 '</​content>' +1022 '<children>' +1023 '<identifier>a</​identifier>' +1024 '<identifier>b</​identifier>' +1025 '</​children>' +1026 '</​infixop>' +1027 '</​children>' +1028 '</​fenced>' +1029 '<fenced>' +1030 '<content>' +1031 '<fence>\u00A6</​fence>' +1032 '<fence>\u00A6</​fence>' +1033 '</​content>' +1034 '<children>' +1035 '<identifier>c</​identifier>' +1036 '</​children>' +1037 '</​fenced>' +1038 '<identifier>d</​identifier>' +1039 '</​children>' +1040 '</​infixop>' +1041 '</​children>' +1042 '</​fenced>');1043 /​/​ Parentheses inside bards.1044 this.executeTreeTest(1045 '<mrow><mo>[</​mo><mo>|</​mo><mi>a</​mi><mo>+</​mo><mi>b</​mi><mo>|</​mo>' +1046 '<mo>+</​mo><mi>c</​mi><mo>]</​mo><mo>+</​mo><mo>\u00A6</​mo><mi>d</​mi>' +1047 '<mo>+</​mo><mo>(</​mo><mi>e</​mi><mo>+</​mo><mi>f</​mi><mo>)</​mo>' +1048 '<mo>\u00A6</​mo></​mrow>',1049 '<infixop>+' +1050 '<content>' +1051 '<operator>+</​operator>' +1052 '</​content>' +1053 '<children>' +1054 '<fenced>' +1055 '<content>' +1056 '<fence>[</​fence>' +1057 '<fence>]</​fence>' +1058 '</​content>' +1059 '<children>' +1060 '<infixop>+' +1061 '<content>' +1062 '<operator>+</​operator>' +1063 '</​content>' +1064 '<children>' +1065 '<fenced>' +1066 '<content>' +1067 '<fence>|</​fence>' +1068 '<fence>|</​fence>' +1069 '</​content>' +1070 '<children>' +1071 '<infixop>+' +1072 '<content>' +1073 '<operator>+</​operator>' +1074 '</​content>' +1075 '<children>' +1076 '<identifier>a</​identifier>' +1077 '<identifier>b</​identifier>' +1078 '</​children>' +1079 '</​infixop>' +1080 '</​children>' +1081 '</​fenced>' +1082 '<identifier>c</​identifier>' +1083 '</​children>' +1084 '</​infixop>' +1085 '</​children>' +1086 '</​fenced>' +1087 '<fenced>' +1088 '<content>' +1089 '<fence>\u00A6</​fence>' +1090 '<fence>\u00A6</​fence>' +1091 '</​content>' +1092 '<children>' +1093 '<infixop>+' +1094 '<content>' +1095 '<operator>+</​operator>' +1096 '</​content>' +1097 '<children>' +1098 '<identifier>d</​identifier>' +1099 '<fenced>' +1100 '<content>' +1101 '<fence>(</​fence>' +1102 '<fence>)</​fence>' +1103 '</​content>' +1104 '<children>' +1105 '<infixop>+' +1106 '<content>' +1107 '<operator>+</​operator>' +1108 '</​content>' +1109 '<children>' +1110 '<identifier>e</​identifier>' +1111 '<identifier>f</​identifier>' +1112 '</​children>' +1113 '</​infixop>' +1114 '</​children>' +1115 '</​fenced>' +1116 '</​children>' +1117 '</​infixop>' +1118 '</​children>' +1119 '</​fenced>' +1120 '</​children>' +1121 '</​infixop>');1122};1123/​**1124 * Mixed with isolated bars.1125 */​1126cvox.SemanticTreeTest.prototype.testStreeMixedFencesWithBars = function() {1127 this.brief = true;1128 this.xpathBlacklist = ['descendant::punctuated/​content'];1129 /​/​ Set notation.1130 this.executeTreeTest(1131 '<mrow><mo>{</​mo><mo>(</​mo><mi>x</​mi><mo>,</​mo><mi>y</​mi><mo>,</​mo>' +1132 '<mi>z</​mi><mo>)</​mo><mo>|</​mo><mi>x</​mi><mi>y</​mi><mo>=</​mo>' +1133 '<mo>z</​mo><mo>}</​mo></​mrow>',1134 '<fenced>' +1135 '<content>' +1136 '<fence>{</​fence>' +1137 '<fence>}</​fence>' +1138 '</​content>' +1139 '<children>' +1140 '<punctuated>' +1141 '<children>' +1142 '<fenced>' +1143 '<content>' +1144 '<fence>(</​fence>' +1145 '<fence>)</​fence>' +1146 '</​content>' +1147 '<children>' +1148 '<punctuated>' +1149 '<children>' +1150 '<identifier>x</​identifier>' +1151 '<punctuation>,</​punctuation>' +1152 '<identifier>y</​identifier>' +1153 '<punctuation>,</​punctuation>' +1154 '<identifier>z</​identifier>' +1155 '</​children>' +1156 '</​punctuated>' +1157 '</​children>' +1158 '</​fenced>' +1159 '<punctuation>|</​punctuation>' +1160 '<relseq>=' +1161 '<content>' +1162 '<relation>=</​relation>' +1163 '</​content>' +1164 '<children>' +1165 '<infixop>\u2062' +1166 '<content>' +1167 '<operator>\u2062</​operator>' +1168 '</​content>' +1169 '<children>' +1170 '<identifier>x</​identifier>' +1171 '<identifier>y</​identifier>' +1172 '</​children>' +1173 '</​infixop>' +1174 '<identifier>z</​identifier>' +1175 '</​children>' +1176 '</​relseq>' +1177 '</​children>' +1178 '</​punctuated>' +1179 '</​children>' +1180 '</​fenced>');1181 /​/​ Disjunction of bracketed parallel statements.1182 this.executeTreeTest(1183 '<mrow><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi><mo>]</​mo>' +1184 '<mo>|</​mo><mo>[</​mo><mi>x</​mi><mo>&#x2016;</​mo><mi>y</​mi><mo>]</​mo>' +1185 '</​mrow>',1186 '<punctuated>' +1187 '<children>' +1188 '<fenced>' +1189 '<content>' +1190 '<fence>[</​fence>' +1191 '<fence>]</​fence>' +1192 '</​content>' +1193 '<children>' +1194 '<punctuated>' +1195 '<children>' +1196 '<identifier>a</​identifier>' +1197 '<punctuation>\u2016</​punctuation>' +1198 '<identifier>b</​identifier>' +1199 '</​children>' +1200 '</​punctuated>' +1201 '</​children>' +1202 '</​fenced>' +1203 '<punctuation>|</​punctuation>' +1204 '<fenced>' +1205 '<content>' +1206 '<fence>[</​fence>' +1207 '<fence>]</​fence>' +1208 '</​content>' +1209 '<children>' +1210 '<punctuated>' +1211 '<children>' +1212 '<identifier>x</​identifier>' +1213 '<punctuation>\u2016</​punctuation>' +1214 '<identifier>y</​identifier>' +1215 '</​children>' +1216 '</​punctuated>' +1217 '</​children>' +1218 '</​fenced>' +1219 '</​children>' +1220 '</​punctuated>'1221 );1222 /​/​ Metric over the above.1223 this.executeTreeTest(1224 '<mrow><mo>&#x2016;</​mo><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo>' +1225 '<mi>b</​mi><mo>]</​mo><mo>|</​mo><mo>[</​mo><mi>x</​mi><mo>&#x2016;</​mo>' +1226 '<mi>y</​mi><mo>]</​mo><mo>&#x2016;</​mo></​mrow>',1227 '<fenced>' +1228 '<content>' +1229 '<fence>\u2016</​fence>' +1230 '<fence>\u2016</​fence>' +1231 '</​content>' +1232 '<children>' +1233 '<punctuated>' +1234 '<children>' +1235 '<fenced>' +1236 '<content>' +1237 '<fence>[</​fence>' +1238 '<fence>]</​fence>' +1239 '</​content>' +1240 '<children>' +1241 '<punctuated>' +1242 '<children>' +1243 '<identifier>a</​identifier>' +1244 '<punctuation>\u2016</​punctuation>' +1245 '<identifier>b</​identifier>' +1246 '</​children>' +1247 '</​punctuated>' +1248 '</​children>' +1249 '</​fenced>' +1250 '<punctuation>|</​punctuation>' +1251 '<fenced>' +1252 '<content>' +1253 '<fence>[</​fence>' +1254 '<fence>]</​fence>' +1255 '</​content>' +1256 '<children>' +1257 '<punctuated>' +1258 '<children>' +1259 '<identifier>x</​identifier>' +1260 '<punctuation>\u2016</​punctuation>' +1261 '<identifier>y</​identifier>' +1262 '</​children>' +1263 '</​punctuated>' +1264 '</​children>' +1265 '</​fenced>' +1266 '</​children>' +1267 '</​punctuated>' +1268 '</​children>' +1269 '</​fenced>');1270 /​/​ Mix of metrics and bracketed expression and single bars.1271 this.executeTreeTest(1272 '<mrow><mo>&#x2016;</​mo><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi>' +1273 '<mo>]</​mo><mo>|</​mo><mo>[</​mo><mi>c</​mi><mo>&#x2016;</​mo>' +1274 '<mo>&#x00A6;</​mo><mi>d</​mi><mo>]</​mo><mo>&#x2016;</​mo><mo>[</​mo>' +1275 '<mi>u</​mi><mo>&#x2016;</​mo><mi>v</​mi><mo>]</​mo><mo>|</​mo><mi>x</​mi>' +1276 '<mo>&#x2016;</​mo><mi>y</​mi><mo>&#x00A6;</​mo><mi>z</​mi></​mrow>',1277 '<punctuated>' +1278 '<children>' +1279 '<infixop>\u2062' +1280 '<content>' +1281 '<operator>\u2062</​operator>' +1282 '</​content>' +1283 '<children>' +1284 '<fenced>' +1285 '<content>' +1286 '<fence>\u2016</​fence>' +1287 '<fence>\u2016</​fence>' +1288 '</​content>' +1289 '<children>' +1290 '<punctuated>' +1291 '<children>' +1292 '<fenced>' +1293 '<content>' +1294 '<fence>[</​fence>' +1295 '<fence>]</​fence>' +1296 '</​content>' +1297 '<children>' +1298 '<punctuated>' +1299 '<children>' +1300 '<identifier>a</​identifier>' +1301 '<punctuation>\u2016</​punctuation>' +1302 '<identifier>b</​identifier>' +1303 '</​children>' +1304 '</​punctuated>' +1305 '</​children>' +1306 '</​fenced>' +1307 '<punctuation>|</​punctuation>' +1308 '<fenced>' +1309 '<content>' +1310 '<fence>[</​fence>' +1311 '<fence>]</​fence>' +1312 '</​content>' +1313 '<children>' +1314 '<punctuated>' +1315 '<children>' +1316 '<identifier>c</​identifier>' +1317 '<punctuation>\u2016</​punctuation>' +1318 '<punctuation>\u00A6</​punctuation>' +1319 '<identifier>d</​identifier>' +1320 '</​children>' +1321 '</​punctuated>' +1322 '</​children>' +1323 '</​fenced>' +1324 '</​children>' +1325 '</​punctuated>' +1326 '</​children>' +1327 '</​fenced>' +1328 '<fenced>' +1329 '<content>' +1330 '<fence>[</​fence>' +1331 '<fence>]</​fence>' +1332 '</​content>' +1333 '<children>' +1334 '<punctuated>' +1335 '<children>' +1336 '<identifier>u</​identifier>' +1337 '<punctuation>\u2016</​punctuation>' +1338 '<identifier>v</​identifier>' +1339 '</​children>' +1340 '</​punctuated>' +1341 '</​children>' +1342 '</​fenced>' +1343 '</​children>' +1344 '</​infixop>' +1345 '<punctuation>|</​punctuation>' +1346 '<identifier>x</​identifier>' +1347 '<punctuation>\u2016</​punctuation>' +1348 '<identifier>y</​identifier>' +1349 '<punctuation>\u00A6</​punctuation>' +1350 '<identifier>z</​identifier>' +1351 '</​children>' +1352 '</​punctuated>');1353 this.xpathBlacklist = [];1354};1355/​**1356 * Pathological cases with only opening fences.1357 */​1358cvox.SemanticTreeTest.prototype.testStreeOpeningFencesOnly = function() {1359 this.brief = true;1360 this.xpathBlacklist = ['descendant::punctuated/​content'];1361 /​/​ Single.1362 this.executeTreeTest(1363 '<mrow><mo>[</​mo></​mrow>',1364 '<fence>[</​fence>');1365 /​/​ Single right.1366 this.executeTreeTest(1367 '<mrow><mi>a</​mi><mo>[</​mo></​mrow>',1368 '<punctuated>' +1369 '<children>' +1370 '<identifier>a</​identifier>' +1371 '<punctuation>[</​punctuation>' +1372 '</​children>' +1373 '</​punctuated>');1374 /​/​ Single middle.1375 this.executeTreeTest(1376 '<mrow><mi>a</​mi><mo>[</​mo><mi>b</​mi></​mrow>',1377 '<punctuated>' +1378 '<children>' +1379 '<identifier>a</​identifier>' +1380 '<punctuation>[</​punctuation>' +1381 '<identifier>b</​identifier>' +1382 '</​children>' +1383 '</​punctuated>');1384 /​/​ Single left.1385 this.executeTreeTest(1386 '<mrow><mo>[</​mo><mi>b</​mi></​mrow>',1387 '<punctuated>' +1388 '<children>' +1389 '<punctuation>[</​punctuation>' +1390 '<identifier>b</​identifier>' +1391 '</​children>' +1392 '</​punctuated>');1393 /​/​ Multiple.1394 this.executeTreeTest(1395 '<mrow><mi>a</​mi><mo>[</​mo><mi>b</​mi><mi>c</​mi><mo>(</​mo><mi>d</​mi>' +1396 '<mo>{</​mo><mi>e</​mi><mo>&#x3008;</​mo><mi>f</​mi></​mrow>',1397 '<punctuated>' +1398 '<children>' +1399 '<identifier>a</​identifier>' +1400 '<punctuation>[</​punctuation>' +1401 '<infixop>\u2062' +1402 '<content>' +1403 '<operator>\u2062</​operator>' +1404 '</​content>' +1405 '<children>' +1406 '<identifier>b</​identifier>' +1407 '<identifier>c</​identifier>' +1408 '</​children>' +1409 '</​infixop>' +1410 '<punctuation>(</​punctuation>' +1411 '<identifier>d</​identifier>' +1412 '<punctuation>{</​punctuation>' +1413 '<identifier>e</​identifier>' +1414 '<punctuation>\u3008</​punctuation>' +1415 '<identifier>f</​identifier>' +1416 '</​children>' +1417 '</​punctuated>');1418 /​/​ Multiple plus inner fenced.1419 this.executeTreeTest(1420 '<mrow><mi>a</​mi><mo>[</​mo><mi>b</​mi><mo>[</​mo><mo>(</​mo><mo>(</​mo>' +1421 '<mi>c</​mi><mo>)</​mo><mi>d</​mi><mo>{</​mo><mi>e</​mi><mo>&#x3008;</​mo>' +1422 '<mi>f</​mi></​mrow>',1423 '<punctuated>' +1424 '<children>' +1425 '<identifier>a</​identifier>' +1426 '<punctuation>[</​punctuation>' +1427 '<identifier>b</​identifier>' +1428 '<punctuation>[</​punctuation>' +1429 '<punctuation>(</​punctuation>' +1430 '<infixop>\u2062' +1431 '<content>' +1432 '<operator>\u2062</​operator>' +1433 '</​content>' +1434 '<children>' +1435 '<fenced>' +1436 '<content>' +1437 '<fence>(</​fence>' +1438 '<fence>)</​fence>' +1439 '</​content>' +1440 '<children>' +1441 '<identifier>c</​identifier>' +1442 '</​children>' +1443 '</​fenced>' +1444 '<identifier>d</​identifier>' +1445 '</​children>' +1446 '</​infixop>' +1447 '<punctuation>{</​punctuation>' +1448 '<identifier>e</​identifier>' +1449 '<punctuation>\u3008</​punctuation>' +1450 '<identifier>f</​identifier>' +1451 '</​children>' +1452 '</​punctuated>');1453 this.xpathBlacklist = [];1454};1455/​**1456 * Pathological cases with only closing fences.1457 */​1458cvox.SemanticTreeTest.prototype.testStreeClosingFencesOnly = function() {1459 this.brief = true;1460 this.xpathBlacklist = ['descendant::punctuated/​content'];1461 /​/​ Single.1462 this.executeTreeTest(1463 '<mrow><mo>]</​mo></​mrow>',1464 '<fence>]</​fence>');1465 /​/​ Single right.1466 this.executeTreeTest(1467 '<mrow><mi>a</​mi><mo>]</​mo></​mrow>',1468 '<punctuated>' +1469 '<children>' +1470 '<identifier>a</​identifier>' +1471 '<punctuation>]</​punctuation>' +1472 '</​children>' +1473 '</​punctuated>');1474 /​/​ Single middle.1475 this.executeTreeTest(1476 '<mrow><mi>a</​mi><mo>]</​mo><mi>b</​mi></​mrow>',1477 '<punctuated>' +1478 '<children>' +1479 '<identifier>a</​identifier>' +1480 '<punctuation>]</​punctuation>' +1481 '<identifier>b</​identifier>' +1482 '</​children>' +1483 '</​punctuated>');1484 /​/​ Single left.1485 this.executeTreeTest(1486 '<mrow><mo>]</​mo><mi>b</​mi></​mrow>',1487 '<punctuated>' +1488 '<children>' +1489 '<punctuation>]</​punctuation>' +1490 '<identifier>b</​identifier>' +1491 '</​children>' +1492 '</​punctuated>');1493 /​/​ Multiple.1494 this.executeTreeTest(1495 '<mrow><mi>a</​mi><mo>]</​mo><mi>b</​mi><mi>c</​mi><mo>)</​mo><mi>d</​mi>' +1496 '<mo>}</​mo><mi>e</​mi><mo>&#x3009;</​mo><mi>f</​mi></​mrow>',1497 '<punctuated>' +1498 '<children>' +1499 '<identifier>a</​identifier>' +1500 '<punctuation>]</​punctuation>' +1501 '<infixop>\u2062' +1502 '<content>' +1503 '<operator>\u2062</​operator>' +1504 '</​content>' +1505 '<children>' +1506 '<identifier>b</​identifier>' +1507 '<identifier>c</​identifier>' +1508 '</​children>' +1509 '</​infixop>' +1510 '<punctuation>)</​punctuation>' +1511 '<identifier>d</​identifier>' +1512 '<punctuation>}</​punctuation>' +1513 '<identifier>e</​identifier>' +1514 '<punctuation>\u3009</​punctuation>' +1515 '<identifier>f</​identifier>' +1516 '</​children>' +1517 '</​punctuated>');1518 /​/​ Multiple plus inner fenced.1519 this.executeTreeTest(1520 '<mrow><mi>a</​mi><mo>]</​mo><mi>b</​mi><mo>]</​mo><mo>(</​mo><mi>c</​mi>' +1521 '<mo>)</​mo><mo>)</​mo><mi>d</​mi><mo>}</​mo><mi>e</​mi><mo>&#x3009;</​mo>' +1522 '<mi>f</​mi></​mrow>',1523 '<punctuated>' +1524 '<children>' +1525 '<identifier>a</​identifier>' +1526 '<punctuation>]</​punctuation>' +1527 '<identifier>b</​identifier>' +1528 '<punctuation>]</​punctuation>' +1529 '<fenced>' +1530 '<content>' +1531 '<fence>(</​fence>' +1532 '<fence>)</​fence>' +1533 '</​content>' +1534 '<children>' +1535 '<identifier>c</​identifier>' +1536 '</​children>' +1537 '</​fenced>' +1538 '<punctuation>)</​punctuation>' +1539 '<identifier>d</​identifier>' +1540 '<punctuation>}</​punctuation>' +1541 '<identifier>e</​identifier>' +1542 '<punctuation>\u3009</​punctuation>' +1543 '<identifier>f</​identifier>' +1544 '</​children>' +1545 '</​punctuated>');1546 this.xpathBlacklist = [];1547};1548/​**1549 * Pathological cases with only neutral fences.1550 */​1551cvox.SemanticTreeTest.prototype.testStreeNeutralFencesOnly = function() {1552 this.brief = true;1553 this.xpathBlacklist = ['descendant::punctuated/​content'];1554 /​/​ Single.1555 this.executeTreeTest(1556 '<mrow><mo>|</​mo></​mrow>',1557 '<fence>|</​fence>');1558 /​/​ Single right.1559 this.executeTreeTest(1560 '<mrow><mi>a</​mi><mo>|</​mo></​mrow>',1561 '<punctuated>' +1562 '<children>' +1563 '<identifier>a</​identifier>' +1564 '<punctuation>|</​punctuation>' +1565 '</​children>' +1566 '</​punctuated>');1567 /​/​ Single middle.1568 this.executeTreeTest(1569 '<mrow><mi>a</​mi><mo>|</​mo><mi>b</​mi></​mrow>',1570 '<punctuated>' +1571 '<children>' +1572 '<identifier>a</​identifier>' +1573 '<punctuation>|</​punctuation>' +1574 '<identifier>b</​identifier>' +1575 '</​children>' +1576 '</​punctuated>');1577 /​/​ Single left.1578 this.executeTreeTest(1579 '<mrow><mo>|</​mo><mi>b</​mi></​mrow>',1580 '<punctuated>' +1581 '<children>' +1582 '<punctuation>|</​punctuation>' +1583 '<identifier>b</​identifier>' +1584 '</​children>' +1585 '</​punctuated>');1586 /​/​ Two different bars.1587 this.executeTreeTest(1588 '<mrow><mi>a</​mi><mo>|</​mo><mi>b</​mi><mo>&#x00A6;</​mo><mi>c</​mi></​mrow>',1589 '<punctuated>' +1590 '<children>' +1591 '<identifier>a</​identifier>' +1592 '<punctuation>|</​punctuation>' +1593 '<identifier>b</​identifier>' +1594 '<punctuation>\u00A6</​punctuation>' +1595 '<identifier>c</​identifier>' +1596 '</​children>' +1597 '</​punctuated>');1598 /​/​ Three different bars.1599 this.executeTreeTest(1600 '<mrow><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi><mo>|</​mo><mi>c</​mi>' +1601 '<mo>&#x00A6;</​mo><mi>d</​mi></​mrow>',1602 '<punctuated>' +1603 '<children>' +1604 '<identifier>a</​identifier>' +1605 '<punctuation>\u2016</​punctuation>' +1606 '<identifier>b</​identifier>' +1607 '<punctuation>|</​punctuation>' +1608 '<identifier>c</​identifier>' +1609 '<punctuation>\u00A6</​punctuation>' +1610 '<identifier>d</​identifier>' +1611 '</​children>' +1612 '</​punctuated>');1613 /​/​ Multiple plus inner fenced.1614 this.executeTreeTest(1615 '<mrow><mo>&#x2016;</​mo><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi>' +1616 '<mo>]</​mo><mo>&#x2016;</​mo><mo>|</​mo><mi>x</​mi><mo>&#x2016;</​mo>' +1617 '<mi>y</​mi><mo>&#x00A6;</​mo><mi>z</​mi></​mrow>',1618 '<punctuated>' +1619 '<children>' +1620 '<fenced>' +1621 '<content>' +1622 '<fence>\u2016</​fence>' +1623 '<fence>\u2016</​fence>' +1624 '</​content>' +1625 '<children>' +1626 '<fenced>' +1627 '<content>' +1628 '<fence>[</​fence>' +1629 '<fence>]</​fence>' +1630 '</​content>' +1631 '<children>' +1632 '<punctuated>' +1633 '<children>' +1634 '<identifier>a</​identifier>' +1635 '<punctuation>\u2016</​punctuation>' +1636 '<identifier>b</​identifier>' +1637 '</​children>' +1638 '</​punctuated>' +1639 '</​children>' +1640 '</​fenced>' +1641 '</​children>' +1642 '</​fenced>' +1643 '<punctuation>|</​punctuation>' +1644 '<identifier>x</​identifier>' +1645 '<punctuation>\u2016</​punctuation>' +1646 '<identifier>y</​identifier>' +1647 '<punctuation>\u00A6</​punctuation>' +1648 '<identifier>z</​identifier>' +1649 '</​children>' +1650 '</​punctuated>');1651 this.xpathBlacklist = [];1652};1653/​**1654 * Pathological cases with mixed fences.1655 */​1656cvox.SemanticTreeTest.prototype.testStreeMixedUnmatchedFences = function() {1657 this.brief = true;1658 this.xpathBlacklist = ['descendant::punctuated/​content'];1659 /​/​ Close, neutral, open.1660 this.executeTreeTest(1661 '<mrow><mo>]</​mo><mo>&#x2016;</​mo><mi>b</​mi><mo>|</​mo><mi>c</​mi>' +1662 '<mo>(</​mo></​mrow>',1663 '<punctuated>' +1664 '<children>' +1665 '<punctuation>]</​punctuation>' +1666 '<punctuation>\u2016</​punctuation>' +1667 '<identifier>b</​identifier>' +1668 '<punctuation>|</​punctuation>' +1669 '<identifier>c</​identifier>' +1670 '<punctuation>(</​punctuation>' +1671 '</​children>' +1672 '</​punctuated>');1673 /​/​ Neutrals and close.1674 this.executeTreeTest(1675 '<mrow><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi><mo>|</​mo><mi>c</​mi>' +1676 '<mo>&#x00A6;</​mo><mi>d</​mi><mo>]</​mo><mi>e</​mi></​mrow>',1677 '<punctuated>' +1678 '<children>' +1679 '<identifier>a</​identifier>' +1680 '<punctuation>\u2016</​punctuation>' +1681 '<identifier>b</​identifier>' +1682 '<punctuation>|</​punctuation>' +1683 '<identifier>c</​identifier>' +1684 '<punctuation>\u00A6</​punctuation>' +1685 '<identifier>d</​identifier>' +1686 '<punctuation>]</​punctuation>' +1687 '<identifier>e</​identifier>' +1688 '</​children>' +1689 '</​punctuated>');1690 /​/​ Neutrals and open.1691 this.executeTreeTest(1692 '<mrow><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi><mo>|</​mo>' +1693 '<mi>c</​mi><mo>&#x00A6;</​mo><mi>d</​mi></​mrow>',1694 '<punctuated>' +1695 '<children>' +1696 '<punctuation>[</​punctuation>' +1697 '<identifier>a</​identifier>' +1698 '<punctuation>\u2016</​punctuation>' +1699 '<identifier>b</​identifier>' +1700 '<punctuation>|</​punctuation>' +1701 '<identifier>c</​identifier>' +1702 '<punctuation>\u00A6</​punctuation>' +1703 '<identifier>d</​identifier>' +1704 '</​children>' +1705 '</​punctuated>');1706 /​/​ Multiple fences, fenced and operations1707 this.executeTreeTest(1708 '<mrow><mo>&#x2016;</​mo><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi>' +1709 '<mo>]</​mo><mo>|</​mo><mo>[</​mo><mi>c</​mi><mo>&#x2016;</​mo>' +1710 '<mo>&#x00A6;</​mo><mi>d</​mi><mo>]</​mo><mo>&#x2016;</​mo><mo>|</​mo>' +1711 '<mi>x</​mi><mo>&#x2016;</​mo><mi>y</​mi><mo>&#x00A6;</​mo><mi>z</​mi>' +1712 '<mo>]</​mo></​mrow>',1713 '<punctuated>' +1714 '<children>' +1715 '<fenced>' +1716 '<content>' +1717 '<fence>\u2016</​fence>' +1718 '<fence>\u2016</​fence>' +1719 '</​content>' +1720 '<children>' +1721 '<punctuated>' +1722 '<children>' +1723 '<fenced>' +1724 '<content>' +1725 '<fence>[</​fence>' +1726 '<fence>]</​fence>' +1727 '</​content>' +1728 '<children>' +1729 '<punctuated>' +1730 '<children>' +1731 '<identifier>a</​identifier>' +1732 '<punctuation>\u2016</​punctuation>' +1733 '<identifier>b</​identifier>' +1734 '</​children>' +1735 '</​punctuated>' +1736 '</​children>' +1737 '</​fenced>' +1738 '<punctuation>|</​punctuation>' +1739 '<fenced>' +1740 '<content>' +1741 '<fence>[</​fence>' +1742 '<fence>]</​fence>' +1743 '</​content>' +1744 '<children>' +1745 '<punctuated>' +1746 '<children>' +1747 '<identifier>c</​identifier>' +1748 '<punctuation>\u2016</​punctuation>' +1749 '<punctuation>\u00A6</​punctuation>' +1750 '<identifier>d</​identifier>' +1751 '</​children>' +1752 '</​punctuated>' +1753 '</​children>' +1754 '</​fenced>' +1755 '</​children>' +1756 '</​punctuated>' +1757 '</​children>' +1758 '</​fenced>' +1759 '<punctuation>|</​punctuation>' +1760 '<identifier>x</​identifier>' +1761 '<punctuation>\u2016</​punctuation>' +1762 '<identifier>y</​identifier>' +1763 '<punctuation>\u00A6</​punctuation>' +1764 '<identifier>z</​identifier>' +1765 '<punctuation>]</​punctuation>' +1766 '</​children>' +1767 '</​punctuated>');1768 /​/​ Multiple fences, fenced and operations1769 this.executeTreeTest(1770 '<mrow><mo>&#x2016;</​mo><mo>]</​mo><mo>&#x00A6;</​mo><mo>&#x2016;</​mo>' +1771 '<mo>[</​mo><mo>|</​mo><mo>[</​mo><mi>a</​mi><mo>&#x2016;</​mo><mi>b</​mi>' +1772 '<mo>]</​mo><mo>&#x2016;</​mo><mo>|</​mo><mi>[</​mi><mo>&#x2016;</​mo>' +1773 '<mi>y</​mi><mo>&#x00A6;</​mo><mi>z</​mi></​mrow>',1774 '<punctuated>' +1775 '<children>' +1776 '<fenced>' +1777 '<content>' +1778 '<fence>\u2016</​fence>' +1779 '<fence>\u2016</​fence>' +1780 '</​content>' +1781 '<children>' +1782 '<punctuated>' +1783 '<children>' +1784 '<punctuation>]</​punctuation>' +1785 '<punctuation>\u00A6</​punctuation>' +1786 '</​children>' +1787 '</​punctuated>' +1788 '</​children>' +1789 '</​fenced>' +1790 '<punctuation>[</​punctuation>' +1791 '<fenced>' +1792 '<content>' +1793 '<fence>|</​fence>' +1794 '<fence>|</​fence>' +1795 '</​content>' +1796 '<children>' +1797 '<punctuated>' +1798 '<children>' +1799 '<fenced>' +1800 '<content>' +1801 '<fence>[</​fence>' +1802 '<fence>]</​fence>' +1803 '</​content>' +1804 '<children>' +1805 '<punctuated>' +1806 '<children>' +1807 '<identifier>a</​identifier>' +1808 '<punctuation>\u2016</​punctuation>' +1809 '<identifier>b</​identifier>' +1810 '</​children>' +1811 '</​punctuated>' +1812 '</​children>' +1813 '</​fenced>' +1814 '<punctuation>\u2016</​punctuation>' +1815 '</​children>' +1816 '</​punctuated>' +1817 '</​children>' +1818 '</​fenced>' +1819 '<punctuation>[</​punctuation>' +1820 '<punctuation>\u2016</​punctuation>' +1821 '<identifier>y</​identifier>' +1822 '<punctuation>\u00A6</​punctuation>' +1823 '<identifier>z</​identifier>' +1824 '</​children>' +1825 '</​punctuated>');1826 /​/​ Multiple fences, fenced and operations1827 this.executeTreeTest(1828 '<mrow><mo>&#x2016;</​mo><mo>[</​mo><mi>a</​mi><mo>&#x00A6;</​mo>' +1829 '<mo>&#x2016;</​mo><mo>[</​mo><mo>+</​mo><mo>[</​mo><mi>b</​mi>' +1830 '<mo>&#x2016;</​mo><mi>c</​mi><mo>]</​mo><mo>+</​mo><mo>&#x2016;</​mo>' +1831 '<mo>|</​mo><mi>d</​mi><mo>+</​mo><mi>e</​mi><mi>[</​mi><mo>&#x2016;</​mo>' +1832 '<mi>y</​mi><mo>&#x00A6;</​mo><mo>+</​mo><mi>z</​mi></​mrow>',1833 '<punctuated>' +1834 '<children>' +1835 '<punctuation>\u2016</​punctuation>' +1836 '<punctuation>[</​punctuation>' +1837 '<identifier>a</​identifier>' +1838 '<punctuation>\u00A6</​punctuation>' +1839 '<punctuation>\u2016</​punctuation>' +1840 '<punctuation>[</​punctuation>' +1841 '<postfixop>+' +1842 '<content>' +1843 '<operator>+</​operator>' +1844 '</​content>' +1845 '<children>' +1846 '<prefixop>+' +1847 '<content>' +1848 '<operator>+</​operator>' +1849 '</​content>' +1850 '<children>' +1851 '<fenced>' +1852 '<content>' +1853 '<fence>[</​fence>' +1854 '<fence>]</​fence>' +1855 '</​content>' +1856 '<children>' +1857 '<punctuated>' +1858 '<children>' +1859 '<identifier>b</​identifier>' +1860 '<punctuation>\u2016</​punctuation>' +1861 '<identifier>c</​identifier>' +1862 '</​children>' +1863 '</​punctuated>' +1864 '</​children>' +1865 '</​fenced>' +1866 '</​children>' +1867 '</​prefixop>' +1868 '</​children>' +1869 '</​postfixop>' +1870 '<punctuation>\u2016</​punctuation>' +1871 '<punctuation>|</​punctuation>' +1872 '<infixop>+' +1873 '<content>' +1874 '<operator>+</​operator>' +1875 '</​content>' +1876 '<children>' +1877 '<identifier>d</​identifier>' +1878 '<identifier>e</​identifier>' +1879 '</​children>' +1880 '</​infixop>' +1881 '<punctuation>[</​punctuation>' +1882 '<punctuation>\u2016</​punctuation>' +1883 '<identifier>y</​identifier>' +1884 '<punctuation>\u00A6</​punctuation>' +1885 '<prefixop>+' +1886 '<content>' +1887 '<operator>+</​operator>' +1888 '</​content>' +1889 '<children>' +1890 '<identifier>z</​identifier>' +1891 '</​children>' +1892 '</​prefixop>' +1893 '</​children>' +1894 '</​punctuated>');1895 this.xpathBlacklist = [];1896};1897/​**1898 * Simple function applications1899 */​1900cvox.SemanticTreeTest.prototype.testStreeSimpleFuncsSingle = function() {1901 this.brief = true;1902 this.executeTreeTest(1903 '<mrow><mi>f</​mi></​mrow>',1904 '<identifier>f</​identifier>');1905 this.executeTreeTest(1906 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo></​mrow>',1907 '<appl>' +1908 '<content>' +1909 '<punctuation>\u2061</​punctuation>' +1910 '</​content>' +1911 '<children>' +1912 '<identifier>f</​identifier>' +1913 '<fenced>' +1914 '<content>' +1915 '<fence>(</​fence>' +1916 '<fence>)</​fence>' +1917 '</​content>' +1918 '<children>' +1919 '<identifier>x</​identifier>' +1920 '</​children>' +1921 '</​fenced>' +1922 '</​children>' +1923 '</​appl>');1924 this.executeTreeTest(1925 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mi>y</​mi><mo>)</​mo></​mrow>',1926 '<appl>' +1927 '<content>' +1928 '<punctuation>\u2061</​punctuation>' +1929 '</​content>' +1930 '<children>' +1931 '<identifier>f</​identifier>' +1932 '<fenced>' +1933 '<content>' +1934 '<fence>(</​fence>' +1935 '<fence>)</​fence>' +1936 '</​content>' +1937 '<children>' +1938 '<infixop>\u2062' +1939 '<content>' +1940 '<operator>\u2062</​operator>' +1941 '</​content>' +1942 '<children>' +1943 '<identifier>x</​identifier>' +1944 '<identifier>y</​identifier>' +1945 '</​children>' +1946 '</​infixop>' +1947 '</​children>' +1948 '</​fenced>' +1949 '</​children>' +1950 '</​appl>');1951 this.executeTreeTest(1952 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>,</​mo><mi>y</​mi>' +1953 '<mo>,</​mo><mi>z</​mi><mo>)</​mo></​mrow>',1954 '<appl>' +1955 '<content>' +1956 '<punctuation>\u2061</​punctuation>' +1957 '</​content>' +1958 '<children>' +1959 '<identifier>f</​identifier>' +1960 '<fenced>' +1961 '<content>' +1962 '<fence>(</​fence>' +1963 '<fence>)</​fence>' +1964 '</​content>' +1965 '<children>' +1966 '<punctuated>' +1967 '<content>' +1968 '<punctuation>,</​punctuation>' +1969 '<punctuation>,</​punctuation>' +1970 '</​content>' +1971 '<children>' +1972 '<identifier>x</​identifier>' +1973 '<punctuation>,</​punctuation>' +1974 '<identifier>y</​identifier>' +1975 '<punctuation>,</​punctuation>' +1976 '<identifier>z</​identifier>' +1977 '</​children>' +1978 '</​punctuated>' +1979 '</​children>' +1980 '</​fenced>' +1981 '</​children>' +1982 '</​appl>');1983 this.executeTreeTest(1984 '<mrow><mi>f</​mi><mo>(</​mo><msup><mi>x</​mi><mn>2</​mn></​msup>' +1985 '<mo>)</​mo></​mrow>',1986 '<appl>' +1987 '<content>' +1988 '<punctuation>\u2061</​punctuation>' +1989 '</​content>' +1990 '<children>' +1991 '<identifier>f</​identifier>' +1992 '<fenced>' +1993 '<content>' +1994 '<fence>(</​fence>' +1995 '<fence>)</​fence>' +1996 '</​content>' +1997 '<children>' +1998 '<superscript>' +1999 '<children>' +2000 '<identifier>x</​identifier>' +2001 '<number>2</​number>' +2002 '</​children>' +2003 '</​superscript>' +2004 '</​children>' +2005 '</​fenced>' +2006 '</​children>' +2007 '</​appl>');2008 this.executeTreeTest(2009 '<mrow><mi>f</​mi><mo>(</​mo><msub><mi>x</​mi><mn>2</​mn></​msub>' +2010 '<mo>)</​mo></​mrow>',2011 '<appl>' +2012 '<content>' +2013 '<punctuation>\u2061</​punctuation>' +2014 '</​content>' +2015 '<children>' +2016 '<identifier>f</​identifier>' +2017 '<fenced>' +2018 '<content>' +2019 '<fence>(</​fence>' +2020 '<fence>)</​fence>' +2021 '</​content>' +2022 '<children>' +2023 '<subscript>' +2024 '<children>' +2025 '<identifier>x</​identifier>' +2026 '<number>2</​number>' +2027 '</​children>' +2028 '</​subscript>' +2029 '</​children>' +2030 '</​fenced>' +2031 '</​children>' +2032 '</​appl>');2033 this.executeTreeTest(2034 '<mrow><mi>f</​mi><mo>(</​mo><msubsup><mi>x</​mi><mn>2</​mn>' +2035 '<mn>1</​mn></​msubsup><mo>)</​mo></​mrow>',2036 '<appl>' +2037 '<content>' +2038 '<punctuation>\u2061</​punctuation>' +2039 '</​content>' +2040 '<children>' +2041 '<identifier>f</​identifier>' +2042 '<fenced>' +2043 '<content>' +2044 '<fence>(</​fence>' +2045 '<fence>)</​fence>' +2046 '</​content>' +2047 '<children>' +2048 '<superscript>' +2049 '<children>' +2050 '<subscript>' +2051 '<children>' +2052 '<identifier>x</​identifier>' +2053 '<number>2</​number>' +2054 '</​children>' +2055 '</​subscript>' +2056 '<number>1</​number>' +2057 '</​children>' +2058 '</​superscript>' +2059 '</​children>' +2060 '</​fenced>' +2061 '</​children>' +2062 '</​appl>');2063 this.executeTreeTest(2064 '<mrow><mi>f</​mi><mo>(</​mo><mover><mi>x</​mi><mn>2</​mn></​mover>' +2065 '<mo>)</​mo></​mrow>',2066 '<appl>' +2067 '<content>' +2068 '<punctuation>\u2061</​punctuation>' +2069 '</​content>' +2070 '<children>' +2071 '<identifier>f</​identifier>' +2072 '<fenced>' +2073 '<content>' +2074 '<fence>(</​fence>' +2075 '<fence>)</​fence>' +2076 '</​content>' +2077 '<children>' +2078 '<overscore>' +2079 '<children>' +2080 '<identifier>x</​identifier>' +2081 '<number>2</​number>' +2082 '</​children>' +2083 '</​overscore>' +2084 '</​children>' +2085 '</​fenced>' +2086 '</​children>' +2087 '</​appl>');2088 this.executeTreeTest(2089 '<mrow><mi>f</​mi><mo>(</​mo><munder><mi>x</​mi><mn>2</​mn></​munder>' +2090 '<mo>)</​mo></​mrow>',2091 '<appl>' +2092 '<content>' +2093 '<punctuation>\u2061</​punctuation>' +2094 '</​content>' +2095 '<children>' +2096 '<identifier>f</​identifier>' +2097 '<fenced>' +2098 '<content>' +2099 '<fence>(</​fence>' +2100 '<fence>)</​fence>' +2101 '</​content>' +2102 '<children>' +2103 '<underscore>' +2104 '<children>' +2105 '<identifier>x</​identifier>' +2106 '<number>2</​number>' +2107 '</​children>' +2108 '</​underscore>' +2109 '</​children>' +2110 '</​fenced>' +2111 '</​children>' +2112 '</​appl>');2113 this.executeTreeTest(2114 '<mrow><mi>f</​mi><mo>(</​mo><munderover><mi>x</​mi><mn>2</​mn>' +2115 '<mn>1</​mn></​munderover><mo>)</​mo></​mrow>',2116 '<appl>' +2117 '<content>' +2118 '<punctuation>\u2061</​punctuation>' +2119 '</​content>' +2120 '<children>' +2121 '<identifier>f</​identifier>' +2122 '<fenced>' +2123 '<content>' +2124 '<fence>(</​fence>' +2125 '<fence>)</​fence>' +2126 '</​content>' +2127 '<children>' +2128 '<overscore>' +2129 '<children>' +2130 '<underscore>' +2131 '<children>' +2132 '<identifier>x</​identifier>' +2133 '<number>2</​number>' +2134 '</​children>' +2135 '</​underscore>' +2136 '<number>1</​number>' +2137 '</​children>' +2138 '</​overscore>' +2139 '</​children>' +2140 '</​fenced>' +2141 '</​children>' +2142 '</​appl>');2143 this.executeTreeTest(2144 '<mrow><mi>f</​mi><mo>(</​mo><mfrac><mn>1</​mn><mn>2</​mn></​mfrac>' +2145 '<mo>)</​mo></​mrow>',2146 '<appl>' +2147 '<content>' +2148 '<punctuation>\u2061</​punctuation>' +2149 '</​content>' +2150 '<children>' +2151 '<identifier>f</​identifier>' +2152 '<fenced>' +2153 '<content>' +2154 '<fence>(</​fence>' +2155 '<fence>)</​fence>' +2156 '</​content>' +2157 '<children>' +2158 '<fraction>' +2159 '<children>' +2160 '<number>1</​number>' +2161 '<number>2</​number>' +2162 '</​children>' +2163 '</​fraction>' +2164 '</​children>' +2165 '</​fenced>' +2166 '</​children>' +2167 '</​appl>');2168 this.executeTreeTest(2169 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi>' +2170 '<mo>)</​mo></​mrow>',2171 '<infixop>\u2062' +2172 '<content>' +2173 '<operator>\u2062</​operator>' +2174 '</​content>' +2175 '<children>' +2176 '<identifier>f</​identifier>' +2177 '<fenced>' +2178 '<content>' +2179 '<fence>(</​fence>' +2180 '<fence>)</​fence>' +2181 '</​content>' +2182 '<children>' +2183 '<infixop>+' +2184 '<content>' +2185 '<operator>+</​operator>' +2186 '</​content>' +2187 '<children>' +2188 '<identifier>x</​identifier>' +2189 '<identifier>y</​identifier>' +2190 '</​children>' +2191 '</​infixop>' +2192 '</​children>' +2193 '</​fenced>' +2194 '</​children>' +2195 '</​infixop>');2196};2197/​**2198 * Simple functions with surrounding operators.2199 */​2200cvox.SemanticTreeTest.prototype.testStreeSimpleFuncsWithOps = function() {2201 this.brief = true;2202 this.executeTreeTest(2203 '<mrow><mn>1</​mn><mo>+</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi>' +2204 '<mo>)</​mo></​mrow>',2205 '<infixop>+' +2206 '<content>' +2207 '<operator>+</​operator>' +2208 '</​content>' +2209 '<children>' +2210 '<number>1</​number>' +2211 '<appl>' +2212 '<content>' +2213 '<punctuation>\u2061</​punctuation>' +2214 '</​content>' +2215 '<children>' +2216 '<identifier>f</​identifier>' +2217 '<fenced>' +2218 '<content>' +2219 '<fence>(</​fence>' +2220 '<fence>)</​fence>' +2221 '</​content>' +2222 '<children>' +2223 '<identifier>x</​identifier>' +2224 '</​children>' +2225 '</​fenced>' +2226 '</​children>' +2227 '</​appl>' +2228 '</​children>' +2229 '</​infixop>');2230 this.executeTreeTest(2231 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo>' +2232 '<mn>2</​mn></​mrow>',2233 '<infixop>+' +2234 '<content>' +2235 '<operator>+</​operator>' +2236 '</​content>' +2237 '<children>' +2238 '<appl>' +2239 '<content>' +2240 '<punctuation>\u2061</​punctuation>' +2241 '</​content>' +2242 '<children>' +2243 '<identifier>f</​identifier>' +2244 '<fenced>' +2245 '<content>' +2246 '<fence>(</​fence>' +2247 '<fence>)</​fence>' +2248 '</​content>' +2249 '<children>' +2250 '<identifier>x</​identifier>' +2251 '</​children>' +2252 '</​fenced>' +2253 '</​children>' +2254 '</​appl>' +2255 '<number>2</​number>' +2256 '</​children>' +2257 '</​infixop>');2258 this.executeTreeTest(2259 '<mrow><mn>1</​mn><mo>+</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2260 '<mo>+</​mo><mn>2</​mn></​mrow>',2261 '<infixop>+' +2262 '<content>' +2263 '<operator>+</​operator>' +2264 '<operator>+</​operator>' +2265 '</​content>' +2266 '<children>' +2267 '<number>1</​number>' +2268 '<appl>' +2269 '<content>' +2270 '<punctuation>\u2061</​punctuation>' +2271 '</​content>' +2272 '<children>' +2273 '<identifier>f</​identifier>' +2274 '<fenced>' +2275 '<content>' +2276 '<fence>(</​fence>' +2277 '<fence>)</​fence>' +2278 '</​content>' +2279 '<children>' +2280 '<identifier>x</​identifier>' +2281 '</​children>' +2282 '</​fenced>' +2283 '</​children>' +2284 '</​appl>' +2285 '<number>2</​number>' +2286 '</​children>' +2287 '</​infixop>');2288 this.executeTreeTest(2289 '<mrow><mo>a</​mo><mo>+</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi>' +2290 '<mo>)</​mo></​mrow>',2291 '<infixop>+' +2292 '<content>' +2293 '<operator>+</​operator>' +2294 '</​content>' +2295 '<children>' +2296 '<identifier>a</​identifier>' +2297 '<appl>' +2298 '<content>' +2299 '<punctuation>\u2061</​punctuation>' +2300 '</​content>' +2301 '<children>' +2302 '<identifier>f</​identifier>' +2303 '<fenced>' +2304 '<content>' +2305 '<fence>(</​fence>' +2306 '<fence>)</​fence>' +2307 '</​content>' +2308 '<children>' +2309 '<identifier>x</​identifier>' +2310 '</​children>' +2311 '</​fenced>' +2312 '</​children>' +2313 '</​appl>' +2314 '</​children>' +2315 '</​infixop>');2316 this.executeTreeTest(2317 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo>' +2318 '<mo>b</​mo></​mrow>',2319 '<infixop>+' +2320 '<content>' +2321 '<operator>+</​operator>' +2322 '</​content>' +2323 '<children>' +2324 '<appl>' +2325 '<content>' +2326 '<punctuation>\u2061</​punctuation>' +2327 '</​content>' +2328 '<children>' +2329 '<identifier>f</​identifier>' +2330 '<fenced>' +2331 '<content>' +2332 '<fence>(</​fence>' +2333 '<fence>)</​fence>' +2334 '</​content>' +2335 '<children>' +2336 '<identifier>x</​identifier>' +2337 '</​children>' +2338 '</​fenced>' +2339 '</​children>' +2340 '</​appl>' +2341 '<identifier>b</​identifier>' +2342 '</​children>' +2343 '</​infixop>');2344 this.executeTreeTest(2345 '<mrow><mo>a</​mo><mo>+</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2346 '<mo>+</​mo><mo>b</​mo></​mrow>',2347 '<infixop>+' +2348 '<content>' +2349 '<operator>+</​operator>' +2350 '<operator>+</​operator>' +2351 '</​content>' +2352 '<children>' +2353 '<identifier>a</​identifier>' +2354 '<appl>' +2355 '<content>' +2356 '<punctuation>\u2061</​punctuation>' +2357 '</​content>' +2358 '<children>' +2359 '<identifier>f</​identifier>' +2360 '<fenced>' +2361 '<content>' +2362 '<fence>(</​fence>' +2363 '<fence>)</​fence>' +2364 '</​content>' +2365 '<children>' +2366 '<identifier>x</​identifier>' +2367 '</​children>' +2368 '</​fenced>' +2369 '</​children>' +2370 '</​appl>' +2371 '<identifier>b</​identifier>' +2372 '</​children>' +2373 '</​infixop>');2374 this.executeTreeTest(2375 '<mrow><mo>a</​mo><mo>=</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi>' +2376 '<mo>)</​mo></​mrow>',2377 '<relseq>=' +2378 '<content>' +2379 '<relation>=</​relation>' +2380 '</​content>' +2381 '<children>' +2382 '<identifier>a</​identifier>' +2383 '<appl>' +2384 '<content>' +2385 '<punctuation>\u2061</​punctuation>' +2386 '</​content>' +2387 '<children>' +2388 '<identifier>f</​identifier>' +2389 '<fenced>' +2390 '<content>' +2391 '<fence>(</​fence>' +2392 '<fence>)</​fence>' +2393 '</​content>' +2394 '<children>' +2395 '<identifier>x</​identifier>' +2396 '</​children>' +2397 '</​fenced>' +2398 '</​children>' +2399 '</​appl>' +2400 '</​children>' +2401 '</​relseq>');2402 this.executeTreeTest(2403 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>=</​mo>' +2404 '<mo>b</​mo></​mrow>',2405 '<relseq>=' +2406 '<content>' +2407 '<relation>=</​relation>' +2408 '</​content>' +2409 '<children>' +2410 '<appl>' +2411 '<content>' +2412 '<punctuation>\u2061</​punctuation>' +2413 '</​content>' +2414 '<children>' +2415 '<identifier>f</​identifier>' +2416 '<fenced>' +2417 '<content>' +2418 '<fence>(</​fence>' +2419 '<fence>)</​fence>' +2420 '</​content>' +2421 '<children>' +2422 '<identifier>x</​identifier>' +2423 '</​children>' +2424 '</​fenced>' +2425 '</​children>' +2426 '</​appl>' +2427 '<identifier>b</​identifier>' +2428 '</​children>' +2429 '</​relseq>');2430 this.executeTreeTest(2431 '<mrow><mo>a</​mo><mo>=</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2432 '<mo>=</​mo><mo>b</​mo></​mrow>',2433 '<relseq>=' +2434 '<content>' +2435 '<relation>=</​relation>' +2436 '<relation>=</​relation>' +2437 '</​content>' +2438 '<children>' +2439 '<identifier>a</​identifier>' +2440 '<appl>' +2441 '<content>' +2442 '<punctuation>\u2061</​punctuation>' +2443 '</​content>' +2444 '<children>' +2445 '<identifier>f</​identifier>' +2446 '<fenced>' +2447 '<content>' +2448 '<fence>(</​fence>' +2449 '<fence>)</​fence>' +2450 '</​content>' +2451 '<children>' +2452 '<identifier>x</​identifier>' +2453 '</​children>' +2454 '</​fenced>' +2455 '</​children>' +2456 '</​appl>' +2457 '<identifier>b</​identifier>' +2458 '</​children>' +2459 '</​relseq>');2460};2461/​**2462 * Multiple simple functions.2463 */​2464cvox.SemanticTreeTest.prototype.testStreeSimpleFuncsMulti = function() {2465 this.brief = true;2466 this.executeTreeTest(2467 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>g</​mi>' +2468 '<mo>(</​mo><mi>x</​mi><mo>)</​mo></​mrow>',2469 '<infixop>+' +2470 '<content>' +2471 '<operator>+</​operator>' +2472 '</​content>' +2473 '<children>' +2474 '<appl>' +2475 '<content>' +2476 '<punctuation>\u2061</​punctuation>' +2477 '</​content>' +2478 '<children>' +2479 '<identifier>f</​identifier>' +2480 '<fenced>' +2481 '<content>' +2482 '<fence>(</​fence>' +2483 '<fence>)</​fence>' +2484 '</​content>' +2485 '<children>' +2486 '<identifier>x</​identifier>' +2487 '</​children>' +2488 '</​fenced>' +2489 '</​children>' +2490 '</​appl>' +2491 '<appl>' +2492 '<content>' +2493 '<punctuation>\u2061</​punctuation>' +2494 '</​content>' +2495 '<children>' +2496 '<identifier>g</​identifier>' +2497 '<fenced>' +2498 '<content>' +2499 '<fence>(</​fence>' +2500 '<fence>)</​fence>' +2501 '</​content>' +2502 '<children>' +2503 '<identifier>x</​identifier>' +2504 '</​children>' +2505 '</​fenced>' +2506 '</​children>' +2507 '</​appl>' +2508 '</​children>' +2509 '</​infixop>');2510 this.executeTreeTest(2511 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>g</​mi>' +2512 '<mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>=</​mo><mi>h</​mi><mo>(</​mo>' +2513 '<mi>x</​mi><mo>)</​mo></​mrow>',2514 '<relseq>=' +2515 '<content>' +2516 '<relation>=</​relation>' +2517 '</​content>' +2518 '<children>' +2519 '<infixop>+' +2520 '<content>' +2521 '<operator>+</​operator>' +2522 '</​content>' +2523 '<children>' +2524 '<appl>' +2525 '<content>' +2526 '<punctuation>\u2061</​punctuation>' +2527 '</​content>' +2528 '<children>' +2529 '<identifier>f</​identifier>' +2530 '<fenced>' +2531 '<content>' +2532 '<fence>(</​fence>' +2533 '<fence>)</​fence>' +2534 '</​content>' +2535 '<children>' +2536 '<identifier>x</​identifier>' +2537 '</​children>' +2538 '</​fenced>' +2539 '</​children>' +2540 '</​appl>' +2541 '<appl>' +2542 '<content>' +2543 '<punctuation>\u2061</​punctuation>' +2544 '</​content>' +2545 '<children>' +2546 '<identifier>g</​identifier>' +2547 '<fenced>' +2548 '<content>' +2549 '<fence>(</​fence>' +2550 '<fence>)</​fence>' +2551 '</​content>' +2552 '<children>' +2553 '<identifier>x</​identifier>' +2554 '</​children>' +2555 '</​fenced>' +2556 '</​children>' +2557 '</​appl>' +2558 '</​children>' +2559 '</​infixop>' +2560 '<appl>' +2561 '<content>' +2562 '<punctuation>\u2061</​punctuation>' +2563 '</​content>' +2564 '<children>' +2565 '<identifier>h</​identifier>' +2566 '<fenced>' +2567 '<content>' +2568 '<fence>(</​fence>' +2569 '<fence>)</​fence>' +2570 '</​content>' +2571 '<children>' +2572 '<identifier>x</​identifier>' +2573 '</​children>' +2574 '</​fenced>' +2575 '</​children>' +2576 '</​appl>' +2577 '</​children>' +2578 '</​relseq>');2579 this.executeTreeTest(2580 '<mrow><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>g</​mi>' +2581 '<mo>(</​mo><mi>y</​mi><mo>)</​mo><mo>=</​mo><mi>h</​mi><mo>(</​mo>' +2582 '<mi>x</​mi><mi>y</​mi><mo>)</​mo></​mrow>',2583 '<relseq>=' +2584 '<content>' +2585 '<relation>=</​relation>' +2586 '</​content>' +2587 '<children>' +2588 '<infixop>+' +2589 '<content>' +2590 '<operator>+</​operator>' +2591 '</​content>' +2592 '<children>' +2593 '<appl>' +2594 '<content>' +2595 '<punctuation>\u2061</​punctuation>' +2596 '</​content>' +2597 '<children>' +2598 '<identifier>f</​identifier>' +2599 '<fenced>' +2600 '<content>' +2601 '<fence>(</​fence>' +2602 '<fence>)</​fence>' +2603 '</​content>' +2604 '<children>' +2605 '<identifier>x</​identifier>' +2606 '</​children>' +2607 '</​fenced>' +2608 '</​children>' +2609 '</​appl>' +2610 '<appl>' +2611 '<content>' +2612 '<punctuation>\u2061</​punctuation>' +2613 '</​content>' +2614 '<children>' +2615 '<identifier>g</​identifier>' +2616 '<fenced>' +2617 '<content>' +2618 '<fence>(</​fence>' +2619 '<fence>)</​fence>' +2620 '</​content>' +2621 '<children>' +2622 '<identifier>y</​identifier>' +2623 '</​children>' +2624 '</​fenced>' +2625 '</​children>' +2626 '</​appl>' +2627 '</​children>' +2628 '</​infixop>' +2629 '<appl>' +2630 '<content>' +2631 '<punctuation>\u2061</​punctuation>' +2632 '</​content>' +2633 '<children>' +2634 '<identifier>h</​identifier>' +2635 '<fenced>' +2636 '<content>' +2637 '<fence>(</​fence>' +2638 '<fence>)</​fence>' +2639 '</​content>' +2640 '<children>' +2641 '<infixop>\u2062' +2642 '<content>' +2643 '<operator>\u2062</​operator>' +2644 '</​content>' +2645 '<children>' +2646 '<identifier>x</​identifier>' +2647 '<identifier>y</​identifier>' +2648 '</​children>' +2649 '</​infixop>' +2650 '</​children>' +2651 '</​fenced>' +2652 '</​children>' +2653 '</​appl>' +2654 '</​children>' +2655 '</​relseq>');2656};2657/​**2658 * Nested simple functions.2659 */​2660cvox.SemanticTreeTest.prototype.testStreeSimpleFuncsNested = function() {2661 this.brief = true;2662 this.executeTreeTest(2663 '<mrow><mi>g</​mi><mo>(</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2664 '<mo>)</​mo></​mrow>',2665 '<appl>' +2666 '<content>' +2667 '<punctuation>\u2061</​punctuation>' +2668 '</​content>' +2669 '<children>' +2670 '<identifier>g</​identifier>' +2671 '<fenced>' +2672 '<content>' +2673 '<fence>(</​fence>' +2674 '<fence>)</​fence>' +2675 '</​content>' +2676 '<children>' +2677 '<appl>' +2678 '<content>' +2679 '<punctuation>\u2061</​punctuation>' +2680 '</​content>' +2681 '<children>' +2682 '<identifier>f</​identifier>' +2683 '<fenced>' +2684 '<content>' +2685 '<fence>(</​fence>' +2686 '<fence>)</​fence>' +2687 '</​content>' +2688 '<children>' +2689 '<identifier>x</​identifier>' +2690 '</​children>' +2691 '</​fenced>' +2692 '</​children>' +2693 '</​appl>' +2694 '</​children>' +2695 '</​fenced>' +2696 '</​children>' +2697 '</​appl>');2698 this.executeTreeTest(2699 '<mrow><mi>h</​mi><mo>(</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2700 '<mi>g</​mi><mo>(</​mo><mi>y</​mi><mo>)</​mo><mo>)</​mo></​mrow>',2701 '<appl>' +2702 '<content>' +2703 '<punctuation>\u2061</​punctuation>' +2704 '</​content>' +2705 '<children>' +2706 '<identifier>h</​identifier>' +2707 '<fenced>' +2708 '<content>' +2709 '<fence>(</​fence>' +2710 '<fence>)</​fence>' +2711 '</​content>' +2712 '<children>' +2713 '<infixop>\u2062' +2714 '<content>' +2715 '<operator>\u2062</​operator>' +2716 '</​content>' +2717 '<children>' +2718 '<appl>' +2719 '<content>' +2720 '<punctuation>\u2061</​punctuation>' +2721 '</​content>' +2722 '<children>' +2723 '<identifier>f</​identifier>' +2724 '<fenced>' +2725 '<content>' +2726 '<fence>(</​fence>' +2727 '<fence>)</​fence>' +2728 '</​content>' +2729 '<children>' +2730 '<identifier>x</​identifier>' +2731 '</​children>' +2732 '</​fenced>' +2733 '</​children>' +2734 '</​appl>' +2735 '<appl>' +2736 '<content>' +2737 '<punctuation>\u2061</​punctuation>' +2738 '</​content>' +2739 '<children>' +2740 '<identifier>g</​identifier>' +2741 '<fenced>' +2742 '<content>' +2743 '<fence>(</​fence>' +2744 '<fence>)</​fence>' +2745 '</​content>' +2746 '<children>' +2747 '<identifier>y</​identifier>' +2748 '</​children>' +2749 '</​fenced>' +2750 '</​children>' +2751 '</​appl>' +2752 '</​children>' +2753 '</​infixop>' +2754 '</​children>' +2755 '</​fenced>' +2756 '</​children>' +2757 '</​appl>');2758 this.executeTreeTest(2759 '<mrow><mi>h</​mi><mo>(</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +2760 '<mo>+</​mo><mi>g</​mi><mo>(</​mo><mi>y</​mi><mo>)</​mo><mo>)</​mo></​mrow>',2761 '<infixop>\u2062' +2762 '<content>' +2763 '<operator>\u2062</​operator>' +2764 '</​content>' +2765 '<children>' +2766 '<identifier>h</​identifier>' +2767 '<fenced>' +2768 '<content>' +2769 '<fence>(</​fence>' +2770 '<fence>)</​fence>' +2771 '</​content>' +2772 '<children>' +2773 '<infixop>+' +2774 '<content>' +2775 '<operator>+</​operator>' +2776 '</​content>' +2777 '<children>' +2778 '<appl>' +2779 '<content>' +2780 '<punctuation>\u2061</​punctuation>' +2781 '</​content>' +2782 '<children>' +2783 '<identifier>f</​identifier>' +2784 '<fenced>' +2785 '<content>' +2786 '<fence>(</​fence>' +2787 '<fence>)</​fence>' +2788 '</​content>' +2789 '<children>' +2790 '<identifier>x</​identifier>' +2791 '</​children>' +2792 '</​fenced>' +2793 '</​children>' +2794 '</​appl>' +2795 '<appl>' +2796 '<content>' +2797 '<punctuation>\u2061</​punctuation>' +2798 '</​content>' +2799 '<children>' +2800 '<identifier>g</​identifier>' +2801 '<fenced>' +2802 '<content>' +2803 '<fence>(</​fence>' +2804 '<fence>)</​fence>' +2805 '</​content>' +2806 '<children>' +2807 '<identifier>y</​identifier>' +2808 '</​children>' +2809 '</​fenced>' +2810 '</​children>' +2811 '</​appl>' +2812 '</​children>' +2813 '</​infixop>' +2814 '</​children>' +2815 '</​fenced>' +2816 '</​children>' +2817 '</​infixop>');2818 this.executeTreeTest(2819 '<mi>P</​mi><mo>[</​mo><mi>x</​mi><mo>=</​mo><mn>2</​mn><mo>]</​mo>',2820 '<appl>' +2821 '<content>' +2822 '<punctuation>\u2061</​punctuation>' +2823 '</​content>' +2824 '<children>' +2825 '<identifier>P</​identifier>' +2826 '<fenced>' +2827 '<content>' +2828 '<fence>[</​fence>' +2829 '<fence>]</​fence>' +2830 '</​content>' +2831 '<children>' +2832 '<relseq>=' +2833 '<content>' +2834 '<relation>=</​relation>' +2835 '</​content>' +2836 '<children>' +2837 '<identifier>x</​identifier>' +2838 '<number>2</​number>' +2839 '</​children>' +2840 '</​relseq>' +2841 '</​children>' +2842 '</​fenced>' +2843 '</​children>' +2844 '</​appl>');2845};2846/​**2847 * Simple functions with explicit function application.2848 */​2849cvox.SemanticTreeTest.prototype.testStreeSimpleFuncsExplicitApp = function() {2850 this.brief = true;2851 this.executeTreeTest(2852 '<mi>f</​mi><mo>\u2061</​mo><mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi>' +2853 '<mo>)</​mo>',2854 '<appl>' +2855 '<content>' +2856 '<punctuation>\u2061</​punctuation>' +2857 '</​content>' +2858 '<children>' +2859 '<identifier>f</​identifier>' +2860 '<fenced>' +2861 '<content>' +2862 '<fence>(</​fence>' +2863 '<fence>)</​fence>' +2864 '</​content>' +2865 '<children>' +2866 '<infixop>+' +2867 '<content>' +2868 '<operator>+</​operator>' +2869 '</​content>' +2870 '<children>' +2871 '<identifier>x</​identifier>' +2872 '<identifier>y</​identifier>' +2873 '</​children>' +2874 '</​infixop>' +2875 '</​children>' +2876 '</​fenced>' +2877 '</​children>' +2878 '</​appl>');2879 this.executeTreeTest(2880 '<mi>f</​mi><mo>\u2061</​mo><mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi>' +2881 '<mo>)</​mo><mo>+</​mo><mi>f</​mi><mo>(</​mo><mi>x</​mi><mo>+</​mo>' +2882 '<mi>y</​mi><mo>)</​mo>',2883 '<infixop>+' +2884 '<content>' +2885 '<operator>+</​operator>' +2886 '</​content>' +2887 '<children>' +2888 '<appl>' +2889 '<content>' +2890 '<punctuation>\u2061</​punctuation>' +2891 '</​content>' +2892 '<children>' +2893 '<identifier>f</​identifier>' +2894 '<fenced>' +2895 '<content>' +2896 '<fence>(</​fence>' +2897 '<fence>)</​fence>' +2898 '</​content>' +2899 '<children>' +2900 '<infixop>+' +2901 '<content>' +2902 '<operator>+</​operator>' +2903 '</​content>' +2904 '<children>' +2905 '<identifier>x</​identifier>' +2906 '<identifier>y</​identifier>' +2907 '</​children>' +2908 '</​infixop>' +2909 '</​children>' +2910 '</​fenced>' +2911 '</​children>' +2912 '</​appl>' +2913 '<infixop>\u2062' +2914 '<content>' +2915 '<operator>\u2062</​operator>' +2916 '</​content>' +2917 '<children>' +2918 '<identifier>f</​identifier>' +2919 '<fenced>' +2920 '<content>' +2921 '<fence>(</​fence>' +2922 '<fence>)</​fence>' +2923 '</​content>' +2924 '<children>' +2925 '<infixop>+' +2926 '<content>' +2927 '<operator>+</​operator>' +2928 '</​content>' +2929 '<children>' +2930 '<identifier>x</​identifier>' +2931 '<identifier>y</​identifier>' +2932 '</​children>' +2933 '</​infixop>' +2934 '</​children>' +2935 '</​fenced>' +2936 '</​children>' +2937 '</​infixop>' +2938 '</​children>' +2939 '</​infixop>');2940 this.executeTreeTest(2941 '<msub><mi>f</​mi><mn>1</​mn></​msub><mo>\u2061</​mo><mo>(</​mo><mi>x</​mi>' +2942 '<mo>+</​mo><mi>y</​mi><mo>)</​mo>',2943 '<appl>' +2944 '<content>' +2945 '<punctuation>\u2061</​punctuation>' +2946 '</​content>' +2947 '<children>' +2948 '<subscript>' +2949 '<children>' +2950 '<identifier>f</​identifier>' +2951 '<number>1</​number>' +2952 '</​children>' +2953 '</​subscript>' +2954 '<fenced>' +2955 '<content>' +2956 '<fence>(</​fence>' +2957 '<fence>)</​fence>' +2958 '</​content>' +2959 '<children>' +2960 '<infixop>+' +2961 '<content>' +2962 '<operator>+</​operator>' +2963 '</​content>' +2964 '<children>' +2965 '<identifier>x</​identifier>' +2966 '<identifier>y</​identifier>' +2967 '</​children>' +2968 '</​infixop>' +2969 '</​children>' +2970 '</​fenced>' +2971 '</​children>' +2972 '</​appl>');2973 this.executeTreeTest(2974 '<msup><msub><mi>f</​mi><mn>n</​mn></​msub><mn>2</​mn></​msup>' +2975 '<mo>\u2061</​mo><mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi><mo>)</​mo>' +2976 '<mo>+</​mo><msup><msub><mi>f</​mi><mn>m</​mn></​msub><mn>2</​mn></​msup>' +2977 '<mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi><mo>)</​mo>',2978 '<infixop>+' +2979 '<content>' +2980 '<operator>+</​operator>' +2981 '</​content>' +2982 '<children>' +2983 '<appl>' +2984 '<content>' +2985 '<punctuation>\u2061</​punctuation>' +2986 '</​content>' +2987 '<children>' +2988 '<superscript>' +2989 '<children>' +2990 '<subscript>' +2991 '<children>' +2992 '<identifier>f</​identifier>' +2993 '<identifier>n</​identifier>' +2994 '</​children>' +2995 '</​subscript>' +2996 '<number>2</​number>' +2997 '</​children>' +2998 '</​superscript>' +2999 '<fenced>' +3000 '<content>' +3001 '<fence>(</​fence>' +3002 '<fence>)</​fence>' +3003 '</​content>' +3004 '<children>' +3005 '<infixop>+' +3006 '<content>' +3007 '<operator>+</​operator>' +3008 '</​content>' +3009 '<children>' +3010 '<identifier>x</​identifier>' +3011 '<identifier>y</​identifier>' +3012 '</​children>' +3013 '</​infixop>' +3014 '</​children>' +3015 '</​fenced>' +3016 '</​children>' +3017 '</​appl>' +3018 '<infixop>\u2062' +3019 '<content>' +3020 '<operator>\u2062</​operator>' +3021 '</​content>' +3022 '<children>' +3023 '<superscript>' +3024 '<children>' +3025 '<subscript>' +3026 '<children>' +3027 '<identifier>f</​identifier>' +3028 '<identifier>m</​identifier>' +3029 '</​children>' +3030 '</​subscript>' +3031 '<number>2</​number>' +3032 '</​children>' +3033 '</​superscript>' +3034 '<fenced>' +3035 '<content>' +3036 '<fence>(</​fence>' +3037 '<fence>)</​fence>' +3038 '</​content>' +3039 '<children>' +3040 '<infixop>+' +3041 '<content>' +3042 '<operator>+</​operator>' +3043 '</​content>' +3044 '<children>' +3045 '<identifier>x</​identifier>' +3046 '<identifier>y</​identifier>' +3047 '</​children>' +3048 '</​infixop>' +3049 '</​children>' +3050 '</​fenced>' +3051 '</​children>' +3052 '</​infixop>' +3053 '</​children>' +3054 '</​infixop>');3055};3056/​**3057 * Prefix function applications3058 */​3059cvox.SemanticTreeTest.prototype.testStreePrefixFuncsSingle = function() {3060 this.brief = true;3061 this.executeTreeTest(3062 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo></​mrow>',3063 '<appl>' +3064 '<content>' +3065 '<punctuation>\u2061</​punctuation>' +3066 '</​content>' +3067 '<children>' +3068 '<function>sin</​function>' +3069 '<fenced>' +3070 '<content>' +3071 '<fence>(</​fence>' +3072 '<fence>)</​fence>' +3073 '</​content>' +3074 '<children>' +3075 '<identifier>x</​identifier>' +3076 '</​children>' +3077 '</​fenced>' +3078 '</​children>' +3079 '</​appl>');3080 this.executeTreeTest(3081 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mi>y</​mi><mo>)</​mo></​mrow>',3082 '<appl>' +3083 '<content>' +3084 '<punctuation>\u2061</​punctuation>' +3085 '</​content>' +3086 '<children>' +3087 '<function>sin</​function>' +3088 '<fenced>' +3089 '<content>' +3090 '<fence>(</​fence>' +3091 '<fence>)</​fence>' +3092 '</​content>' +3093 '<children>' +3094 '<infixop>\u2062' +3095 '<content>' +3096 '<operator>\u2062</​operator>' +3097 '</​content>' +3098 '<children>' +3099 '<identifier>x</​identifier>' +3100 '<identifier>y</​identifier>' +3101 '</​children>' +3102 '</​infixop>' +3103 '</​children>' +3104 '</​fenced>' +3105 '</​children>' +3106 '</​appl>');3107 this.executeTreeTest(3108 '<mrow><mi>sin</​mi><mo>(</​mo><msup><mi>x</​mi><mn>2</​mn></​msup>' +3109 '<mo>)</​mo></​mrow>',3110 '<appl>' +3111 '<content>' +3112 '<punctuation>\u2061</​punctuation>' +3113 '</​content>' +3114 '<children>' +3115 '<function>sin</​function>' +3116 '<fenced>' +3117 '<content>' +3118 '<fence>(</​fence>' +3119 '<fence>)</​fence>' +3120 '</​content>' +3121 '<children>' +3122 '<superscript>' +3123 '<children>' +3124 '<identifier>x</​identifier>' +3125 '<number>2</​number>' +3126 '</​children>' +3127 '</​superscript>' +3128 '</​children>' +3129 '</​fenced>' +3130 '</​children>' +3131 '</​appl>');3132 this.executeTreeTest(3133 '<mrow><mi>sin</​mi><mo>(</​mo><msub><mi>x</​mi><mn>2</​mn></​msub>' +3134 '<mo>)</​mo></​mrow>',3135 '<appl>' +3136 '<content>' +3137 '<punctuation>\u2061</​punctuation>' +3138 '</​content>' +3139 '<children>' +3140 '<function>sin</​function>' +3141 '<fenced>' +3142 '<content>' +3143 '<fence>(</​fence>' +3144 '<fence>)</​fence>' +3145 '</​content>' +3146 '<children>' +3147 '<subscript>' +3148 '<children>' +3149 '<identifier>x</​identifier>' +3150 '<number>2</​number>' +3151 '</​children>' +3152 '</​subscript>' +3153 '</​children>' +3154 '</​fenced>' +3155 '</​children>' +3156 '</​appl>');3157 this.executeTreeTest(3158 '<mrow><mi>sin</​mi><mo>(</​mo><msubsup><mi>x</​mi><mn>2</​mn>' +3159 '<mn>1</​mn></​msubsup><mo>)</​mo></​mrow>',3160 '<appl>' +3161 '<content>' +3162 '<punctuation>\u2061</​punctuation>' +3163 '</​content>' +3164 '<children>' +3165 '<function>sin</​function>' +3166 '<fenced>' +3167 '<content>' +3168 '<fence>(</​fence>' +3169 '<fence>)</​fence>' +3170 '</​content>' +3171 '<children>' +3172 '<superscript>' +3173 '<children>' +3174 '<subscript>' +3175 '<children>' +3176 '<identifier>x</​identifier>' +3177 '<number>2</​number>' +3178 '</​children>' +3179 '</​subscript>' +3180 '<number>1</​number>' +3181 '</​children>' +3182 '</​superscript>' +3183 '</​children>' +3184 '</​fenced>' +3185 '</​children>' +3186 '</​appl>');3187 this.executeTreeTest(3188 '<mrow><mi>sin</​mi><mo>(</​mo><mover><mi>x</​mi><mn>2</​mn></​mover>' +3189 '<mo>)</​mo></​mrow>',3190 '<appl>' +3191 '<content>' +3192 '<punctuation>\u2061</​punctuation>' +3193 '</​content>' +3194 '<children>' +3195 '<function>sin</​function>' +3196 '<fenced>' +3197 '<content>' +3198 '<fence>(</​fence>' +3199 '<fence>)</​fence>' +3200 '</​content>' +3201 '<children>' +3202 '<overscore>' +3203 '<children>' +3204 '<identifier>x</​identifier>' +3205 '<number>2</​number>' +3206 '</​children>' +3207 '</​overscore>' +3208 '</​children>' +3209 '</​fenced>' +3210 '</​children>' +3211 '</​appl>');3212 this.executeTreeTest(3213 '<mrow><mi>sin</​mi><mo>(</​mo><munder><mi>x</​mi><mn>2</​mn></​munder>' +3214 '<mo>)</​mo></​mrow>',3215 '<appl>' +3216 '<content>' +3217 '<punctuation>\u2061</​punctuation>' +3218 '</​content>' +3219 '<children>' +3220 '<function>sin</​function>' +3221 '<fenced>' +3222 '<content>' +3223 '<fence>(</​fence>' +3224 '<fence>)</​fence>' +3225 '</​content>' +3226 '<children>' +3227 '<underscore>' +3228 '<children>' +3229 '<identifier>x</​identifier>' +3230 '<number>2</​number>' +3231 '</​children>' +3232 '</​underscore>' +3233 '</​children>' +3234 '</​fenced>' +3235 '</​children>' +3236 '</​appl>');3237 this.executeTreeTest(3238 '<mrow><mi>sin</​mi><mo>(</​mo><munderover><mi>x</​mi><mn>2</​mn>' +3239 '<mn>1</​mn></​munderover><mo>)</​mo></​mrow>',3240 '<appl>' +3241 '<content>' +3242 '<punctuation>\u2061</​punctuation>' +3243 '</​content>' +3244 '<children>' +3245 '<function>sin</​function>' +3246 '<fenced>' +3247 '<content>' +3248 '<fence>(</​fence>' +3249 '<fence>)</​fence>' +3250 '</​content>' +3251 '<children>' +3252 '<overscore>' +3253 '<children>' +3254 '<underscore>' +3255 '<children>' +3256 '<identifier>x</​identifier>' +3257 '<number>2</​number>' +3258 '</​children>' +3259 '</​underscore>' +3260 '<number>1</​number>' +3261 '</​children>' +3262 '</​overscore>' +3263 '</​children>' +3264 '</​fenced>' +3265 '</​children>' +3266 '</​appl>');3267 this.executeTreeTest(3268 '<mrow><mi>sin</​mi><mo>(</​mo><mfrac><mn>1</​mn><mn>2</​mn></​mfrac>' +3269 '<mo>)</​mo></​mrow>',3270 '<appl>' +3271 '<content>' +3272 '<punctuation>\u2061</​punctuation>' +3273 '</​content>' +3274 '<children>' +3275 '<function>sin</​function>' +3276 '<fenced>' +3277 '<content>' +3278 '<fence>(</​fence>' +3279 '<fence>)</​fence>' +3280 '</​content>' +3281 '<children>' +3282 '<fraction>' +3283 '<children>' +3284 '<number>1</​number>' +3285 '<number>2</​number>' +3286 '</​children>' +3287 '</​fraction>' +3288 '</​children>' +3289 '</​fenced>' +3290 '</​children>' +3291 '</​appl>');3292 this.executeTreeTest(3293 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>+</​mo><mi>y</​mi>' +3294 '<mo>)</​mo></​mrow>',3295 '<appl>' +3296 '<content>' +3297 '<punctuation>\u2061</​punctuation>' +3298 '</​content>' +3299 '<children>' +3300 '<function>sin</​function>' +3301 '<fenced>' +3302 '<content>' +3303 '<fence>(</​fence>' +3304 '<fence>)</​fence>' +3305 '</​content>' +3306 '<children>' +3307 '<infixop>+' +3308 '<content>' +3309 '<operator>+</​operator>' +3310 '</​content>' +3311 '<children>' +3312 '<identifier>x</​identifier>' +3313 '<identifier>y</​identifier>' +3314 '</​children>' +3315 '</​infixop>' +3316 '</​children>' +3317 '</​fenced>' +3318 '</​children>' +3319 '</​appl>');3320};3321/​**3322 * Prefix functions applications with surrounding operators.3323 */​3324cvox.SemanticTreeTest.prototype.testStreePrefixFuncsWithOps = function() {3325 this.brief = true;3326 this.executeTreeTest(3327 '<mrow><mn>1</​mn><mo>+</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi>' +3328 '<mo>)</​mo></​mrow>',3329 '<infixop>+' +3330 '<content>' +3331 '<operator>+</​operator>' +3332 '</​content>' +3333 '<children>' +3334 '<number>1</​number>' +3335 '<appl>' +3336 '<content>' +3337 '<punctuation>\u2061</​punctuation>' +3338 '</​content>' +3339 '<children>' +3340 '<function>sin</​function>' +3341 '<fenced>' +3342 '<content>' +3343 '<fence>(</​fence>' +3344 '<fence>)</​fence>' +3345 '</​content>' +3346 '<children>' +3347 '<identifier>x</​identifier>' +3348 '</​children>' +3349 '</​fenced>' +3350 '</​children>' +3351 '</​appl>' +3352 '</​children>' +3353 '</​infixop>');3354 this.executeTreeTest(3355 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo>' +3356 '<mn>2</​mn></​mrow>',3357 '<infixop>+' +3358 '<content>' +3359 '<operator>+</​operator>' +3360 '</​content>' +3361 '<children>' +3362 '<appl>' +3363 '<content>' +3364 '<punctuation>\u2061</​punctuation>' +3365 '</​content>' +3366 '<children>' +3367 '<function>sin</​function>' +3368 '<fenced>' +3369 '<content>' +3370 '<fence>(</​fence>' +3371 '<fence>)</​fence>' +3372 '</​content>' +3373 '<children>' +3374 '<identifier>x</​identifier>' +3375 '</​children>' +3376 '</​fenced>' +3377 '</​children>' +3378 '</​appl>' +3379 '<number>2</​number>' +3380 '</​children>' +3381 '</​infixop>');3382 this.executeTreeTest(3383 '<mrow><mn>1</​mn><mo>+</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +3384 '<mo>+</​mo><mn>2</​mn></​mrow>',3385 '<infixop>+' +3386 '<content>' +3387 '<operator>+</​operator>' +3388 '<operator>+</​operator>' +3389 '</​content>' +3390 '<children>' +3391 '<number>1</​number>' +3392 '<appl>' +3393 '<content>' +3394 '<punctuation>\u2061</​punctuation>' +3395 '</​content>' +3396 '<children>' +3397 '<function>sin</​function>' +3398 '<fenced>' +3399 '<content>' +3400 '<fence>(</​fence>' +3401 '<fence>)</​fence>' +3402 '</​content>' +3403 '<children>' +3404 '<identifier>x</​identifier>' +3405 '</​children>' +3406 '</​fenced>' +3407 '</​children>' +3408 '</​appl>' +3409 '<number>2</​number>' +3410 '</​children>' +3411 '</​infixop>');3412 this.executeTreeTest(3413 '<mrow><mo>a</​mo><mo>+</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi>' +3414 '<mo>)</​mo></​mrow>',3415 '<infixop>+' +3416 '<content>' +3417 '<operator>+</​operator>' +3418 '</​content>' +3419 '<children>' +3420 '<identifier>a</​identifier>' +3421 '<appl>' +3422 '<content>' +3423 '<punctuation>\u2061</​punctuation>' +3424 '</​content>' +3425 '<children>' +3426 '<function>sin</​function>' +3427 '<fenced>' +3428 '<content>' +3429 '<fence>(</​fence>' +3430 '<fence>)</​fence>' +3431 '</​content>' +3432 '<children>' +3433 '<identifier>x</​identifier>' +3434 '</​children>' +3435 '</​fenced>' +3436 '</​children>' +3437 '</​appl>' +3438 '</​children>' +3439 '</​infixop>');3440 this.executeTreeTest(3441 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo>' +3442 '<mo>b</​mo></​mrow>',3443 '<infixop>+' +3444 '<content>' +3445 '<operator>+</​operator>' +3446 '</​content>' +3447 '<children>' +3448 '<appl>' +3449 '<content>' +3450 '<punctuation>\u2061</​punctuation>' +3451 '</​content>' +3452 '<children>' +3453 '<function>sin</​function>' +3454 '<fenced>' +3455 '<content>' +3456 '<fence>(</​fence>' +3457 '<fence>)</​fence>' +3458 '</​content>' +3459 '<children>' +3460 '<identifier>x</​identifier>' +3461 '</​children>' +3462 '</​fenced>' +3463 '</​children>' +3464 '</​appl>' +3465 '<identifier>b</​identifier>' +3466 '</​children>' +3467 '</​infixop>');3468 this.executeTreeTest(3469 '<mrow><mo>a</​mo><mo>+</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi>' +3470 '<mo>)</​mo><mo>+</​mo><mo>b</​mo></​mrow>',3471 '<infixop>+' +3472 '<content>' +3473 '<operator>+</​operator>' +3474 '<operator>+</​operator>' +3475 '</​content>' +3476 '<children>' +3477 '<identifier>a</​identifier>' +3478 '<appl>' +3479 '<content>' +3480 '<punctuation>\u2061</​punctuation>' +3481 '</​content>' +3482 '<children>' +3483 '<function>sin</​function>' +3484 '<fenced>' +3485 '<content>' +3486 '<fence>(</​fence>' +3487 '<fence>)</​fence>' +3488 '</​content>' +3489 '<children>' +3490 '<identifier>x</​identifier>' +3491 '</​children>' +3492 '</​fenced>' +3493 '</​children>' +3494 '</​appl>' +3495 '<identifier>b</​identifier>' +3496 '</​children>' +3497 '</​infixop>');3498 this.executeTreeTest(3499 '<mrow><mo>a</​mo><mo>=</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi>' +3500 '<mo>)</​mo></​mrow>',3501 '<relseq>=' +3502 '<content>' +3503 '<relation>=</​relation>' +3504 '</​content>' +3505 '<children>' +3506 '<identifier>a</​identifier>' +3507 '<appl>' +3508 '<content>' +3509 '<punctuation>\u2061</​punctuation>' +3510 '</​content>' +3511 '<children>' +3512 '<function>sin</​function>' +3513 '<fenced>' +3514 '<content>' +3515 '<fence>(</​fence>' +3516 '<fence>)</​fence>' +3517 '</​content>' +3518 '<children>' +3519 '<identifier>x</​identifier>' +3520 '</​children>' +3521 '</​fenced>' +3522 '</​children>' +3523 '</​appl>' +3524 '</​children>' +3525 '</​relseq>');3526 this.executeTreeTest(3527 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>=</​mo>' +3528 '<mo>b</​mo></​mrow>',3529 '<relseq>=' +3530 '<content>' +3531 '<relation>=</​relation>' +3532 '</​content>' +3533 '<children>' +3534 '<appl>' +3535 '<content>' +3536 '<punctuation>\u2061</​punctuation>' +3537 '</​content>' +3538 '<children>' +3539 '<function>sin</​function>' +3540 '<fenced>' +3541 '<content>' +3542 '<fence>(</​fence>' +3543 '<fence>)</​fence>' +3544 '</​content>' +3545 '<children>' +3546 '<identifier>x</​identifier>' +3547 '</​children>' +3548 '</​fenced>' +3549 '</​children>' +3550 '</​appl>' +3551 '<identifier>b</​identifier>' +3552 '</​children>' +3553 '</​relseq>');3554 this.executeTreeTest(3555 '<mrow><mo>a</​mo><mo>=</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +3556 '<mo>=</​mo><mo>b</​mo></​mrow>',3557 '<relseq>=' +3558 '<content>' +3559 '<relation>=</​relation>' +3560 '<relation>=</​relation>' +3561 '</​content>' +3562 '<children>' +3563 '<identifier>a</​identifier>' +3564 '<appl>' +3565 '<content>' +3566 '<punctuation>\u2061</​punctuation>' +3567 '</​content>' +3568 '<children>' +3569 '<function>sin</​function>' +3570 '<fenced>' +3571 '<content>' +3572 '<fence>(</​fence>' +3573 '<fence>)</​fence>' +3574 '</​content>' +3575 '<children>' +3576 '<identifier>x</​identifier>' +3577 '</​children>' +3578 '</​fenced>' +3579 '</​children>' +3580 '</​appl>' +3581 '<identifier>b</​identifier>' +3582 '</​children>' +3583 '</​relseq>');3584};3585/​**3586 * Multiple prefix function applications.3587 */​3588cvox.SemanticTreeTest.prototype.testStreePrefixFuncsMulti = function() {3589 this.brief = true;3590 this.executeTreeTest(3591 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>cos</​mi>' +3592 '<mo>(</​mo><mi>x</​mi><mo>)</​mo></​mrow>',3593 '<infixop>+' +3594 '<content>' +3595 '<operator>+</​operator>' +3596 '</​content>' +3597 '<children>' +3598 '<appl>' +3599 '<content>' +3600 '<punctuation>\u2061</​punctuation>' +3601 '</​content>' +3602 '<children>' +3603 '<function>sin</​function>' +3604 '<fenced>' +3605 '<content>' +3606 '<fence>(</​fence>' +3607 '<fence>)</​fence>' +3608 '</​content>' +3609 '<children>' +3610 '<identifier>x</​identifier>' +3611 '</​children>' +3612 '</​fenced>' +3613 '</​children>' +3614 '</​appl>' +3615 '<appl>' +3616 '<content>' +3617 '<punctuation>\u2061</​punctuation>' +3618 '</​content>' +3619 '<children>' +3620 '<function>cos</​function>' +3621 '<fenced>' +3622 '<content>' +3623 '<fence>(</​fence>' +3624 '<fence>)</​fence>' +3625 '</​content>' +3626 '<children>' +3627 '<identifier>x</​identifier>' +3628 '</​children>' +3629 '</​fenced>' +3630 '</​children>' +3631 '</​appl>' +3632 '</​children>' +3633 '</​infixop>');3634 this.executeTreeTest(3635 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>cos</​mi>' +3636 '<mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>=</​mo><mi>tan</​mi><mo>(</​mo>' +3637 '<mi>x</​mi><mo>)</​mo></​mrow>',3638 '<relseq>=' +3639 '<content>' +3640 '<relation>=</​relation>' +3641 '</​content>' +3642 '<children>' +3643 '<infixop>+' +3644 '<content>' +3645 '<operator>+</​operator>' +3646 '</​content>' +3647 '<children>' +3648 '<appl>' +3649 '<content>' +3650 '<punctuation>\u2061</​punctuation>' +3651 '</​content>' +3652 '<children>' +3653 '<function>sin</​function>' +3654 '<fenced>' +3655 '<content>' +3656 '<fence>(</​fence>' +3657 '<fence>)</​fence>' +3658 '</​content>' +3659 '<children>' +3660 '<identifier>x</​identifier>' +3661 '</​children>' +3662 '</​fenced>' +3663 '</​children>' +3664 '</​appl>' +3665 '<appl>' +3666 '<content>' +3667 '<punctuation>\u2061</​punctuation>' +3668 '</​content>' +3669 '<children>' +3670 '<function>cos</​function>' +3671 '<fenced>' +3672 '<content>' +3673 '<fence>(</​fence>' +3674 '<fence>)</​fence>' +3675 '</​content>' +3676 '<children>' +3677 '<identifier>x</​identifier>' +3678 '</​children>' +3679 '</​fenced>' +3680 '</​children>' +3681 '</​appl>' +3682 '</​children>' +3683 '</​infixop>' +3684 '<appl>' +3685 '<content>' +3686 '<punctuation>\u2061</​punctuation>' +3687 '</​content>' +3688 '<children>' +3689 '<function>tan</​function>' +3690 '<fenced>' +3691 '<content>' +3692 '<fence>(</​fence>' +3693 '<fence>)</​fence>' +3694 '</​content>' +3695 '<children>' +3696 '<identifier>x</​identifier>' +3697 '</​children>' +3698 '</​fenced>' +3699 '</​children>' +3700 '</​appl>' +3701 '</​children>' +3702 '</​relseq>');3703 this.executeTreeTest(3704 '<mrow><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>+</​mo><mi>cos</​mi>' +3705 '<mo>(</​mo><mi>y</​mi><mo>)</​mo><mo>=</​mo><mi>tan</​mi><mo>(</​mo>' +3706 '<mi>x</​mi><mi>y</​mi><mo>)</​mo></​mrow>',3707 '<relseq>=' +3708 '<content>' +3709 '<relation>=</​relation>' +3710 '</​content>' +3711 '<children>' +3712 '<infixop>+' +3713 '<content>' +3714 '<operator>+</​operator>' +3715 '</​content>' +3716 '<children>' +3717 '<appl>' +3718 '<content>' +3719 '<punctuation>\u2061</​punctuation>' +3720 '</​content>' +3721 '<children>' +3722 '<function>sin</​function>' +3723 '<fenced>' +3724 '<content>' +3725 '<fence>(</​fence>' +3726 '<fence>)</​fence>' +3727 '</​content>' +3728 '<children>' +3729 '<identifier>x</​identifier>' +3730 '</​children>' +3731 '</​fenced>' +3732 '</​children>' +3733 '</​appl>' +3734 '<appl>' +3735 '<content>' +3736 '<punctuation>\u2061</​punctuation>' +3737 '</​content>' +3738 '<children>' +3739 '<function>cos</​function>' +3740 '<fenced>' +3741 '<content>' +3742 '<fence>(</​fence>' +3743 '<fence>)</​fence>' +3744 '</​content>' +3745 '<children>' +3746 '<identifier>y</​identifier>' +3747 '</​children>' +3748 '</​fenced>' +3749 '</​children>' +3750 '</​appl>' +3751 '</​children>' +3752 '</​infixop>' +3753 '<appl>' +3754 '<content>' +3755 '<punctuation>\u2061</​punctuation>' +3756 '</​content>' +3757 '<children>' +3758 '<function>tan</​function>' +3759 '<fenced>' +3760 '<content>' +3761 '<fence>(</​fence>' +3762 '<fence>)</​fence>' +3763 '</​content>' +3764 '<children>' +3765 '<infixop>\u2062' +3766 '<content>' +3767 '<operator>\u2062</​operator>' +3768 '</​content>' +3769 '<children>' +3770 '<identifier>x</​identifier>' +3771 '<identifier>y</​identifier>' +3772 '</​children>' +3773 '</​infixop>' +3774 '</​children>' +3775 '</​fenced>' +3776 '</​children>' +3777 '</​appl>' +3778 '</​children>' +3779 '</​relseq>');3780};3781/​**3782 * Prefix function applications with sub- and superscripts.3783 */​3784cvox.SemanticTreeTest.prototype.testStreePrefixFuncsScripts = function() {3785 this.brief = true;3786 this.executeTreeTest(3787 '<mrow><msup><mi>sin</​mi><mn>2</​mn></​msup><mo>(</​mo><mi>x</​mi>' +3788 '<mo>)</​mo></​mrow>',3789 '<appl>' +3790 '<content>' +3791 '<punctuation>\u2061</​punctuation>' +3792 '</​content>' +3793 '<children>' +3794 '<superscript>' +3795 '<children>' +3796 '<function>sin</​function>' +3797 '<number>2</​number>' +3798 '</​children>' +3799 '</​superscript>' +3800 '<fenced>' +3801 '<content>' +3802 '<fence>(</​fence>' +3803 '<fence>)</​fence>' +3804 '</​content>' +3805 '<children>' +3806 '<identifier>x</​identifier>' +3807 '</​children>' +3808 '</​fenced>' +3809 '</​children>' +3810 '</​appl>');3811 this.executeTreeTest(3812 '<mrow><msub><mi>sin</​mi><mn>1</​mn></​msub><mo>(</​mo><mi>x</​mi>' +3813 '<mo>)</​mo></​mrow>',3814 '<appl>' +3815 '<content>' +3816 '<punctuation>\u2061</​punctuation>' +3817 '</​content>' +3818 '<children>' +3819 '<subscript>' +3820 '<children>' +3821 '<function>sin</​function>' +3822 '<number>1</​number>' +3823 '</​children>' +3824 '</​subscript>' +3825 '<fenced>' +3826 '<content>' +3827 '<fence>(</​fence>' +3828 '<fence>)</​fence>' +3829 '</​content>' +3830 '<children>' +3831 '<identifier>x</​identifier>' +3832 '</​children>' +3833 '</​fenced>' +3834 '</​children>' +3835 '</​appl>');3836 this.executeTreeTest(3837 '<mrow><msubsup><mi>sin</​mi><mn>2</​mn><mn>1</​mn></​msubsup><mo>(</​mo>' +3838 '<mi>x</​mi><mo>)</​mo></​mrow>',3839 '<appl>' +3840 '<content>' +3841 '<punctuation>\u2061</​punctuation>' +3842 '</​content>' +3843 '<children>' +3844 '<superscript>' +3845 '<children>' +3846 '<subscript>' +3847 '<children>' +3848 '<function>sin</​function>' +3849 '<number>2</​number>' +3850 '</​children>' +3851 '</​subscript>' +3852 '<number>1</​number>' +3853 '</​children>' +3854 '</​superscript>' +3855 '<fenced>' +3856 '<content>' +3857 '<fence>(</​fence>' +3858 '<fence>)</​fence>' +3859 '</​content>' +3860 '<children>' +3861 '<identifier>x</​identifier>' +3862 '</​children>' +3863 '</​fenced>' +3864 '</​children>' +3865 '</​appl>');3866 this.executeTreeTest(3867 '<mrow><msup><mi>sin</​mi><mn>2</​mn></​msup><mo>(</​mo><mi>x</​mi>' +3868 '<mo>)</​mo><mo>+</​mo><msup><mi>cos</​mi><mn>2</​mn></​msup><mo>(</​mo>' +3869 '<mi>y</​mi><mo>)</​mo><mo>=</​mo><mn>1</​mn></​mrow>',3870 '<relseq>=' +3871 '<content>' +3872 '<relation>=</​relation>' +3873 '</​content>' +3874 '<children>' +3875 '<infixop>+' +3876 '<content>' +3877 '<operator>+</​operator>' +3878 '</​content>' +3879 '<children>' +3880 '<appl>' +3881 '<content>' +3882 '<punctuation>\u2061</​punctuation>' +3883 '</​content>' +3884 '<children>' +3885 '<superscript>' +3886 '<children>' +3887 '<function>sin</​function>' +3888 '<number>2</​number>' +3889 '</​children>' +3890 '</​superscript>' +3891 '<fenced>' +3892 '<content>' +3893 '<fence>(</​fence>' +3894 '<fence>)</​fence>' +3895 '</​content>' +3896 '<children>' +3897 '<identifier>x</​identifier>' +3898 '</​children>' +3899 '</​fenced>' +3900 '</​children>' +3901 '</​appl>' +3902 '<appl>' +3903 '<content>' +3904 '<punctuation>\u2061</​punctuation>' +3905 '</​content>' +3906 '<children>' +3907 '<superscript>' +3908 '<children>' +3909 '<function>cos</​function>' +3910 '<number>2</​number>' +3911 '</​children>' +3912 '</​superscript>' +3913 '<fenced>' +3914 '<content>' +3915 '<fence>(</​fence>' +3916 '<fence>)</​fence>' +3917 '</​content>' +3918 '<children>' +3919 '<identifier>y</​identifier>' +3920 '</​children>' +3921 '</​fenced>' +3922 '</​children>' +3923 '</​appl>' +3924 '</​children>' +3925 '</​infixop>' +3926 '<number>1</​number>' +3927 '</​children>' +3928 '</​relseq>');3929};3930/​**3931 * Prefix function applications with unfenced arguments.3932 */​3933cvox.SemanticTreeTest.prototype.testStreePrefixFuncsUnfenced = function() {3934 this.brief = true;3935 this.executeTreeTest(3936 '<mrow><mi>sin</​mi><mi>x</​mi></​mrow>',3937 '<appl>' +3938 '<content>' +3939 '<punctuation>\u2061</​punctuation>' +3940 '</​content>' +3941 '<children>' +3942 '<function>sin</​function>' +3943 '<identifier>x</​identifier>' +3944 '</​children>' +3945 '</​appl>');3946 this.executeTreeTest(3947 '<mrow><mi>sin</​mi><mi>x</​mi><mi>y</​mi></​mrow>',3948 '<appl>' +3949 '<content>' +3950 '<punctuation>\u2061</​punctuation>' +3951 '</​content>' +3952 '<children>' +3953 '<function>sin</​function>' +3954 '<infixop>\u2062' +3955 '<content>' +3956 '<operator>\u2062</​operator>' +3957 '</​content>' +3958 '<children>' +3959 '<identifier>x</​identifier>' +3960 '<identifier>y</​identifier>' +3961 '</​children>' +3962 '</​infixop>' +3963 '</​children>' +3964 '</​appl>');3965 this.executeTreeTest(3966 '<mrow><mi>sin</​mi><msup><mi>x</​mi><mn>2</​mn></​msup></​mrow>',3967 '<appl>' +3968 '<content>' +3969 '<punctuation>\u2061</​punctuation>' +3970 '</​content>' +3971 '<children>' +3972 '<function>sin</​function>' +3973 '<superscript>' +3974 '<children>' +3975 '<identifier>x</​identifier>' +3976 '<number>2</​number>' +3977 '</​children>' +3978 '</​superscript>' +3979 '</​children>' +3980 '</​appl>');3981 this.executeTreeTest(3982 '<mrow><mi>sin</​mi><msub><mi>x</​mi><mn>2</​mn></​msub></​mrow>',3983 '<appl>' +3984 '<content>' +3985 '<punctuation>\u2061</​punctuation>' +3986 '</​content>' +3987 '<children>' +3988 '<function>sin</​function>' +3989 '<subscript>' +3990 '<children>' +3991 '<identifier>x</​identifier>' +3992 '<number>2</​number>' +3993 '</​children>' +3994 '</​subscript>' +3995 '</​children>' +3996 '</​appl>');3997 this.executeTreeTest(3998 '<mrow><mi>sin</​mi><msubsup><mi>x</​mi><mn>2</​mn><mn>1</​mn>' +3999 '</​msubsup></​mrow>',4000 '<appl>' +4001 '<content>' +4002 '<punctuation>\u2061</​punctuation>' +4003 '</​content>' +4004 '<children>' +4005 '<function>sin</​function>' +4006 '<superscript>' +4007 '<children>' +4008 '<subscript>' +4009 '<children>' +4010 '<identifier>x</​identifier>' +4011 '<number>2</​number>' +4012 '</​children>' +4013 '</​subscript>' +4014 '<number>1</​number>' +4015 '</​children>' +4016 '</​superscript>' +4017 '</​children>' +4018 '</​appl>');4019 this.executeTreeTest(4020 '<mrow><mi>sin</​mi><mover><mi>x</​mi><mn>2</​mn></​mover></​mrow>',4021 '<appl>' +4022 '<content>' +4023 '<punctuation>\u2061</​punctuation>' +4024 '</​content>' +4025 '<children>' +4026 '<function>sin</​function>' +4027 '<overscore>' +4028 '<children>' +4029 '<identifier>x</​identifier>' +4030 '<number>2</​number>' +4031 '</​children>' +4032 '</​overscore>' +4033 '</​children>' +4034 '</​appl>');4035 this.executeTreeTest(4036 '<mrow><mi>sin</​mi><munder><mi>x</​mi><mn>2</​mn></​munder></​mrow>',4037 '<appl>' +4038 '<content>' +4039 '<punctuation>\u2061</​punctuation>' +4040 '</​content>' +4041 '<children>' +4042 '<function>sin</​function>' +4043 '<underscore>' +4044 '<children>' +4045 '<identifier>x</​identifier>' +4046 '<number>2</​number>' +4047 '</​children>' +4048 '</​underscore>' +4049 '</​children>' +4050 '</​appl>');4051 this.executeTreeTest(4052 '<mrow><mi>sin</​mi><munderover><mi>x</​mi><mn>2</​mn><mn>1</​mn>' +4053 '</​munderover></​mrow>',4054 '<appl>' +4055 '<content>' +4056 '<punctuation>\u2061</​punctuation>' +4057 '</​content>' +4058 '<children>' +4059 '<function>sin</​function>' +4060 '<overscore>' +4061 '<children>' +4062 '<underscore>' +4063 '<children>' +4064 '<identifier>x</​identifier>' +4065 '<number>2</​number>' +4066 '</​children>' +4067 '</​underscore>' +4068 '<number>1</​number>' +4069 '</​children>' +4070 '</​overscore>' +4071 '</​children>' +4072 '</​appl>');4073 this.executeTreeTest(4074 '<mrow><mi>sin</​mi><mfrac><mn>1</​mn><mn>2</​mn></​mfrac></​mrow>',4075 '<appl>' +4076 '<content>' +4077 '<punctuation>\u2061</​punctuation>' +4078 '</​content>' +4079 '<children>' +4080 '<function>sin</​function>' +4081 '<fraction>' +4082 '<children>' +4083 '<number>1</​number>' +4084 '<number>2</​number>' +4085 '</​children>' +4086 '</​fraction>' +4087 '</​children>' +4088 '</​appl>');4089};4090/​**4091 * Prefix function applications with unfenced arguments in an operator4092 * expression.4093 */​4094cvox.SemanticTreeTest.prototype.testStreePrefixFuncsUnfencedOps = function() {4095 this.brief = true;4096 this.executeTreeTest(4097 '<mrow><mn>1</​mn><mo>+</​mo><mi>sin</​mi><mi>x</​mi></​mrow>',4098 '<infixop>+' +4099 '<content>' +4100 '<operator>+</​operator>' +4101 '</​content>' +4102 '<children>' +4103 '<number>1</​number>' +4104 '<appl>' +4105 '<content>' +4106 '<punctuation>\u2061</​punctuation>' +4107 '</​content>' +4108 '<children>' +4109 '<function>sin</​function>' +4110 '<identifier>x</​identifier>' +4111 '</​children>' +4112 '</​appl>' +4113 '</​children>' +4114 '</​infixop>');4115 this.executeTreeTest(4116 '<mrow><mi>sin</​mi><mi>x</​mi><mo>+</​mo><mn>2</​mn></​mrow>',4117 '<infixop>+' +4118 '<content>' +4119 '<operator>+</​operator>' +4120 '</​content>' +4121 '<children>' +4122 '<appl>' +4123 '<content>' +4124 '<punctuation>\u2061</​punctuation>' +4125 '</​content>' +4126 '<children>' +4127 '<function>sin</​function>' +4128 '<identifier>x</​identifier>' +4129 '</​children>' +4130 '</​appl>' +4131 '<number>2</​number>' +4132 '</​children>' +4133 '</​infixop>');4134 this.executeTreeTest(4135 '<mrow><mn>1</​mn><mo>+</​mo><mi>sin</​mi><mi>x</​mi><mo>+</​mo>' +4136 '<mn>2</​mn></​mrow>',4137 '<infixop>+' +4138 '<content>' +4139 '<operator>+</​operator>' +4140 '<operator>+</​operator>' +4141 '</​content>' +4142 '<children>' +4143 '<number>1</​number>' +4144 '<appl>' +4145 '<content>' +4146 '<punctuation>\u2061</​punctuation>' +4147 '</​content>' +4148 '<children>' +4149 '<function>sin</​function>' +4150 '<identifier>x</​identifier>' +4151 '</​children>' +4152 '</​appl>' +4153 '<number>2</​number>' +4154 '</​children>' +4155 '</​infixop>');4156 this.executeTreeTest(4157 '<mrow><mo>a</​mo><mo>+</​mo><mi>sin</​mi><mi>x</​mi></​mrow>',4158 '<infixop>+' +4159 '<content>' +4160 '<operator>+</​operator>' +4161 '</​content>' +4162 '<children>' +4163 '<identifier>a</​identifier>' +4164 '<appl>' +4165 '<content>' +4166 '<punctuation>\u2061</​punctuation>' +4167 '</​content>' +4168 '<children>' +4169 '<function>sin</​function>' +4170 '<identifier>x</​identifier>' +4171 '</​children>' +4172 '</​appl>' +4173 '</​children>' +4174 '</​infixop>');4175 this.executeTreeTest(4176 '<mrow><mi>sin</​mi><mi>x</​mi><mo>+</​mo><mo>b</​mo></​mrow>',4177 '<infixop>+' +4178 '<content>' +4179 '<operator>+</​operator>' +4180 '</​content>' +4181 '<children>' +4182 '<appl>' +4183 '<content>' +4184 '<punctuation>\u2061</​punctuation>' +4185 '</​content>' +4186 '<children>' +4187 '<function>sin</​function>' +4188 '<identifier>x</​identifier>' +4189 '</​children>' +4190 '</​appl>' +4191 '<identifier>b</​identifier>' +4192 '</​children>' +4193 '</​infixop>');4194 this.executeTreeTest(4195 '<mrow><mo>a</​mo><mo>+</​mo><mi>sin</​mi><mi>x</​mi><mo>+</​mo>' +4196 '<mo>b</​mo></​mrow>',4197 '<infixop>+' +4198 '<content>' +4199 '<operator>+</​operator>' +4200 '<operator>+</​operator>' +4201 '</​content>' +4202 '<children>' +4203 '<identifier>a</​identifier>' +4204 '<appl>' +4205 '<content>' +4206 '<punctuation>\u2061</​punctuation>' +4207 '</​content>' +4208 '<children>' +4209 '<function>sin</​function>' +4210 '<identifier>x</​identifier>' +4211 '</​children>' +4212 '</​appl>' +4213 '<identifier>b</​identifier>' +4214 '</​children>' +4215 '</​infixop>');4216 this.executeTreeTest(4217 '<mrow><mo>a</​mo><mo>=</​mo><mi>sin</​mi><mi>x</​mi></​mrow>',4218 '<relseq>=' +4219 '<content>' +4220 '<relation>=</​relation>' +4221 '</​content>' +4222 '<children>' +4223 '<identifier>a</​identifier>' +4224 '<appl>' +4225 '<content>' +4226 '<punctuation>\u2061</​punctuation>' +4227 '</​content>' +4228 '<children>' +4229 '<function>sin</​function>' +4230 '<identifier>x</​identifier>' +4231 '</​children>' +4232 '</​appl>' +4233 '</​children>' +4234 '</​relseq>');4235 this.executeTreeTest(4236 '<mrow><mi>sin</​mi><mi>x</​mi><mo>=</​mo><mo>b</​mo></​mrow>',4237 '<relseq>=' +4238 '<content>' +4239 '<relation>=</​relation>' +4240 '</​content>' +4241 '<children>' +4242 '<appl>' +4243 '<content>' +4244 '<punctuation>\u2061</​punctuation>' +4245 '</​content>' +4246 '<children>' +4247 '<function>sin</​function>' +4248 '<identifier>x</​identifier>' +4249 '</​children>' +4250 '</​appl>' +4251 '<identifier>b</​identifier>' +4252 '</​children>' +4253 '</​relseq>');4254 this.executeTreeTest(4255 '<mrow><mo>a</​mo><mo>=</​mo><mi>sin</​mi><mi>x</​mi><mo>=</​mo>' +4256 '<mo>b</​mo></​mrow>',4257 '<relseq>=' +4258 '<content>' +4259 '<relation>=</​relation>' +4260 '<relation>=</​relation>' +4261 '</​content>' +4262 '<children>' +4263 '<identifier>a</​identifier>' +4264 '<appl>' +4265 '<content>' +4266 '<punctuation>\u2061</​punctuation>' +4267 '</​content>' +4268 '<children>' +4269 '<function>sin</​function>' +4270 '<identifier>x</​identifier>' +4271 '</​children>' +4272 '</​appl>' +4273 '<identifier>b</​identifier>' +4274 '</​children>' +4275 '</​relseq>');4276};4277/​**4278 * Multiple prefix function applications with unfenced arguments.4279 */​4280cvox.SemanticTreeTest.prototype.testStreePrefixFuncsMultiUnfenced = function() {4281 this.brief = true;4282 this.executeTreeTest(4283 '<mrow><mi>sin</​mi><mi>x</​mi><mo>+</​mo><mi>cos</​mi><mi>x</​mi></​mrow>',4284 '<infixop>+' +4285 '<content>' +4286 '<operator>+</​operator>' +4287 '</​content>' +4288 '<children>' +4289 '<appl>' +4290 '<content>' +4291 '<punctuation>\u2061</​punctuation>' +4292 '</​content>' +4293 '<children>' +4294 '<function>sin</​function>' +4295 '<identifier>x</​identifier>' +4296 '</​children>' +4297 '</​appl>' +4298 '<appl>' +4299 '<content>' +4300 '<punctuation>\u2061</​punctuation>' +4301 '</​content>' +4302 '<children>' +4303 '<function>cos</​function>' +4304 '<identifier>x</​identifier>' +4305 '</​children>' +4306 '</​appl>' +4307 '</​children>' +4308 '</​infixop>');4309 this.executeTreeTest(4310 '<mrow><mi>sin</​mi><mi>x</​mi><mo>+</​mo><mi>cos</​mi><mi>x</​mi><mo>=</​mo>' +4311 '<mi>tan</​mi><mi>x</​mi></​mrow>',4312 '<relseq>=' +4313 '<content>' +4314 '<relation>=</​relation>' +4315 '</​content>' +4316 '<children>' +4317 '<infixop>+' +4318 '<content>' +4319 '<operator>+</​operator>' +4320 '</​content>' +4321 '<children>' +4322 '<appl>' +4323 '<content>' +4324 '<punctuation>\u2061</​punctuation>' +4325 '</​content>' +4326 '<children>' +4327 '<function>sin</​function>' +4328 '<identifier>x</​identifier>' +4329 '</​children>' +4330 '</​appl>' +4331 '<appl>' +4332 '<content>' +4333 '<punctuation>\u2061</​punctuation>' +4334 '</​content>' +4335 '<children>' +4336 '<function>cos</​function>' +4337 '<identifier>x</​identifier>' +4338 '</​children>' +4339 '</​appl>' +4340 '</​children>' +4341 '</​infixop>' +4342 '<appl>' +4343 '<content>' +4344 '<punctuation>\u2061</​punctuation>' +4345 '</​content>' +4346 '<children>' +4347 '<function>tan</​function>' +4348 '<identifier>x</​identifier>' +4349 '</​children>' +4350 '</​appl>' +4351 '</​children>' +4352 '</​relseq>');4353 this.executeTreeTest(4354 '<mrow><mi>sin</​mi><mi>x</​mi><mo>+</​mo><mi>cos</​mi><mi>y</​mi><mo>=</​mo>' +4355 '<mi>tan</​mi><mi>x</​mi><mi>y</​mi></​mrow>',4356 '<relseq>=' +4357 '<content>' +4358 '<relation>=</​relation>' +4359 '</​content>' +4360 '<children>' +4361 '<infixop>+' +4362 '<content>' +4363 '<operator>+</​operator>' +4364 '</​content>' +4365 '<children>' +4366 '<appl>' +4367 '<content>' +4368 '<punctuation>\u2061</​punctuation>' +4369 '</​content>' +4370 '<children>' +4371 '<function>sin</​function>' +4372 '<identifier>x</​identifier>' +4373 '</​children>' +4374 '</​appl>' +4375 '<appl>' +4376 '<content>' +4377 '<punctuation>\u2061</​punctuation>' +4378 '</​content>' +4379 '<children>' +4380 '<function>cos</​function>' +4381 '<identifier>y</​identifier>' +4382 '</​children>' +4383 '</​appl>' +4384 '</​children>' +4385 '</​infixop>' +4386 '<appl>' +4387 '<content>' +4388 '<punctuation>\u2061</​punctuation>' +4389 '</​content>' +4390 '<children>' +4391 '<function>tan</​function>' +4392 '<infixop>\u2062' +4393 '<content>' +4394 '<operator>\u2062</​operator>' +4395 '</​content>' +4396 '<children>' +4397 '<identifier>x</​identifier>' +4398 '<identifier>y</​identifier>' +4399 '</​children>' +4400 '</​infixop>' +4401 '</​children>' +4402 '</​appl>' +4403 '</​children>' +4404 '</​relseq>');4405};4406/​**4407 * Prefix function applications with sub- and superscripts and unfenced4408 * arguments.4409 */​4410cvox.SemanticTreeTest.prototype.testStreePrefixFuncsScriptUnfenced =4411 function() {4412 this.brief = true;4413 this.executeTreeTest(4414 '<mrow><msup><mi>sin</​mi><mn>2</​mn></​msup><mi>x</​mi></​mrow>',4415 '<appl>' +4416 '<content>' +4417 '<punctuation>\u2061</​punctuation>' +4418 '</​content>' +4419 '<children>' +4420 '<superscript>' +4421 '<children>' +4422 '<function>sin</​function>' +4423 '<number>2</​number>' +4424 '</​children>' +4425 '</​superscript>' +4426 '<identifier>x</​identifier>' +4427 '</​children>' +4428 '</​appl>');4429 this.executeTreeTest(4430 '<mrow><msub><mi>sin</​mi><mn>1</​mn></​msub><mi>x</​mi></​mrow>',4431 '<appl>' +4432 '<content>' +4433 '<punctuation>\u2061</​punctuation>' +4434 '</​content>' +4435 '<children>' +4436 '<subscript>' +4437 '<children>' +4438 '<function>sin</​function>' +4439 '<number>1</​number>' +4440 '</​children>' +4441 '</​subscript>' +4442 '<identifier>x</​identifier>' +4443 '</​children>' +4444 '</​appl>');4445 this.executeTreeTest(4446 '<mrow><msubsup><mi>sin</​mi><mn>2</​mn><mn>1</​mn></​msubsup>' +4447 '<mi>x</​mi></​mrow>',4448 '<appl>' +4449 '<content>' +4450 '<punctuation>\u2061</​punctuation>' +4451 '</​content>' +4452 '<children>' +4453 '<superscript>' +4454 '<children>' +4455 '<subscript>' +4456 '<children>' +4457 '<function>sin</​function>' +4458 '<number>2</​number>' +4459 '</​children>' +4460 '</​subscript>' +4461 '<number>1</​number>' +4462 '</​children>' +4463 '</​superscript>' +4464 '<identifier>x</​identifier>' +4465 '</​children>' +4466 '</​appl>');4467 this.executeTreeTest(4468 '<mrow><msup><mi>sin</​mi><mn>2</​mn></​msup><mi>x</​mi><mo>+</​mo><msup>' +4469 '<mi>cos</​mi><mn>2</​mn></​msup><mi>y</​mi><mo>=</​mo><mn>1</​mn></​mrow>',4470 '<relseq>=' +4471 '<content>' +4472 '<relation>=</​relation>' +4473 '</​content>' +4474 '<children>' +4475 '<infixop>+' +4476 '<content>' +4477 '<operator>+</​operator>' +4478 '</​content>' +4479 '<children>' +4480 '<appl>' +4481 '<content>' +4482 '<punctuation>\u2061</​punctuation>' +4483 '</​content>' +4484 '<children>' +4485 '<superscript>' +4486 '<children>' +4487 '<function>sin</​function>' +4488 '<number>2</​number>' +4489 '</​children>' +4490 '</​superscript>' +4491 '<identifier>x</​identifier>' +4492 '</​children>' +4493 '</​appl>' +4494 '<appl>' +4495 '<content>' +4496 '<punctuation>\u2061</​punctuation>' +4497 '</​content>' +4498 '<children>' +4499 '<superscript>' +4500 '<children>' +4501 '<function>cos</​function>' +4502 '<number>2</​number>' +4503 '</​children>' +4504 '</​superscript>' +4505 '<identifier>y</​identifier>' +4506 '</​children>' +4507 '</​appl>' +4508 '</​children>' +4509 '</​infixop>' +4510 '<number>1</​number>' +4511 '</​children>' +4512 '</​relseq>');4513 this.executeTreeTest(4514 '<mrow><msubsup><msubsup><mi>sin</​mi><mn>2</​mn><mn>1</​mn>' +4515 '</​msubsup><mi>n</​mi><mi>m</​mi></​msubsup><mi>x</​mi></​mrow>',4516 '<appl>' +4517 '<content>' +4518 '<punctuation>\u2061</​punctuation>' +4519 '</​content>' +4520 '<children>' +4521 '<superscript>' +4522 '<children>' +4523 '<subscript>' +4524 '<children>' +4525 '<superscript>' +4526 '<children>' +4527 '<subscript>' +4528 '<children>' +4529 '<function>sin</​function>' +4530 '<number>2</​number>' +4531 '</​children>' +4532 '</​subscript>' +4533 '<number>1</​number>' +4534 '</​children>' +4535 '</​superscript>' +4536 '<identifier>n</​identifier>' +4537 '</​children>' +4538 '</​subscript>' +4539 '<identifier>m</​identifier>' +4540 '</​children>' +4541 '</​superscript>' +4542 '<identifier>x</​identifier>' +4543 '</​children>' +4544 '</​appl>');4545};4546/​**4547 * Prefix functions without arguments.4548 */​4549cvox.SemanticTreeTest.prototype.testStreePrefixFuncsNoArgs = function() {4550 this.brief = true;4551 this.executeTreeTest(4552 '<mi>sin</​mi>',4553 '<function>sin</​function>');4554 this.executeTreeTest(4555 '<msup><mi>sin</​mi><mn>2</​mn></​msup>',4556 '<superscript>' +4557 '<children>' +4558 '<function>sin</​function>' +4559 '<number>2</​number>' +4560 '</​children>' +4561 '</​superscript>');4562 this.executeTreeTest(4563 '<msup><mi>sin</​mi><mn>2</​mn></​msup><mo>+</​mo><msup><mi>cos</​mi>' +4564 '<mn>2</​mn></​msup>',4565 '<infixop>+' +4566 '<content>' +4567 '<operator>+</​operator>' +4568 '</​content>' +4569 '<children>' +4570 '<appl>' +4571 '<content>' +4572 '<punctuation>\u2061</​punctuation>' +4573 '</​content>' +4574 '<children>' +4575 '<superscript>' +4576 '<children>' +4577 '<function>sin</​function>' +4578 '<number>2</​number>' +4579 '</​children>' +4580 '</​superscript>' +4581 '<empty/​>' +4582 '</​children>' +4583 '</​appl>' +4584 '<appl>' +4585 '<content>' +4586 '<punctuation>\u2061</​punctuation>' +4587 '</​content>' +4588 '<children>' +4589 '<superscript>' +4590 '<children>' +4591 '<function>cos</​function>' +4592 '<number>2</​number>' +4593 '</​children>' +4594 '</​superscript>' +4595 '<empty/​>' +4596 '</​children>' +4597 '</​appl>' +4598 '</​children>' +4599 '</​infixop>');4600 this.executeTreeTest(4601 '<mrow><msup><mi>sin</​mi><mn>2</​mn></​msup><mo>+</​mo>' +4602 '<msup><mi>cos</​mi><mn>2</​mn></​msup><mo>=</​mo><mn>1</​mn></​mrow>',4603 '<relseq>=' +4604 '<content>' +4605 '<relation>=</​relation>' +4606 '</​content>' +4607 '<children>' +4608 '<infixop>+' +4609 '<content>' +4610 '<operator>+</​operator>' +4611 '</​content>' +4612 '<children>' +4613 '<appl>' +4614 '<content>' +4615 '<punctuation>\u2061</​punctuation>' +4616 '</​content>' +4617 '<children>' +4618 '<superscript>' +4619 '<children>' +4620 '<function>sin</​function>' +4621 '<number>2</​number>' +4622 '</​children>' +4623 '</​superscript>' +4624 '<empty/​>' +4625 '</​children>' +4626 '</​appl>' +4627 '<appl>' +4628 '<content>' +4629 '<punctuation>\u2061</​punctuation>' +4630 '</​content>' +4631 '<children>' +4632 '<superscript>' +4633 '<children>' +4634 '<function>cos</​function>' +4635 '<number>2</​number>' +4636 '</​children>' +4637 '</​superscript>' +4638 '<empty/​>' +4639 '</​children>' +4640 '</​appl>' +4641 '</​children>' +4642 '</​infixop>' +4643 '<number>1</​number>' +4644 '</​children>' +4645 '</​relseq>');4646 this.executeTreeTest(4647 '<mrow><mi>sin</​mi><mo>=</​mo><mfrac><mn>1</​mn>' +4648 '<mi>csc</​mi></​mfrac></​mrow>',4649 '<relseq>=' +4650 '<content>' +4651 '<relation>=</​relation>' +4652 '</​content>' +4653 '<children>' +4654 '<appl>' +4655 '<content>' +4656 '<punctuation>\u2061</​punctuation>' +4657 '</​content>' +4658 '<children>' +4659 '<function>sin</​function>' +4660 '<empty/​>' +4661 '</​children>' +4662 '</​appl>' +4663 '<fraction>' +4664 '<children>' +4665 '<number>1</​number>' +4666 '<function>csc</​function>' +4667 '</​children>' +4668 '</​fraction>' +4669 '</​children>' +4670 '</​relseq>');4671};4672/​**4673 * Nested prefix function applications, both with and without fenced arguments.4674 */​4675cvox.SemanticTreeTest.prototype.testStreePrefixFuncsNested = function() {4676 this.brief = true;4677 this.executeTreeTest(4678 '<mrow><mi>log</​mi><mi>cos</​mi><mi>x</​mi></​mrow>',4679 '<appl>' +4680 '<content>' +4681 '<punctuation>\u2061</​punctuation>' +4682 '</​content>' +4683 '<children>' +4684 '<function>log</​function>' +4685 '<appl>' +4686 '<content>' +4687 '<punctuation>\u2061</​punctuation>' +4688 '</​content>' +4689 '<children>' +4690 '<function>cos</​function>' +4691 '<identifier>x</​identifier>' +4692 '</​children>' +4693 '</​appl>' +4694 '</​children>' +4695 '</​appl>');4696 this.executeTreeTest(4697 '<mrow><mi>ln</​mi><mo>(</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>)</​mo></​mrow>',4698 '<appl>' +4699 '<content>' +4700 '<punctuation>\u2061</​punctuation>' +4701 '</​content>' +4702 '<children>' +4703 '<function>ln</​function>' +4704 '<fenced>' +4705 '<content>' +4706 '<fence>(</​fence>' +4707 '<fence>)</​fence>' +4708 '</​content>' +4709 '<children>' +4710 '<appl>' +4711 '<content>' +4712 '<punctuation>\u2061</​punctuation>' +4713 '</​content>' +4714 '<children>' +4715 '<function>sin</​function>' +4716 '<fenced>' +4717 '<content>' +4718 '<fence>(</​fence>' +4719 '<fence>)</​fence>' +4720 '</​content>' +4721 '<children>' +4722 '<identifier>x</​identifier>' +4723 '</​children>' +4724 '</​fenced>' +4725 '</​children>' +4726 '</​appl>' +4727 '</​children>' +4728 '</​fenced>' +4729 '</​children>' +4730 '</​appl>');4731 this.executeTreeTest(4732 '<mrow><mi>log</​mi><mi>cos</​mi><mi>x</​mi><mo>=</​mo><mi>ln</​mi><mo>(</​mo><mi>sin</​mi><mo>(</​mo><mi>x</​mi><mo>)</​mo><mo>)</​mo></​mrow>',4733 '<relseq>=' +4734 '<content>' +4735 '<relation>=</​relation>' +4736 '</​content>' +4737 '<children>' +4738 '<appl>' +4739 '<content>' +4740 '<punctuation>\u2061</​punctuation>' +4741 '</​content>' +4742 '<children>' +4743 '<function>log</​function>' +4744 '<appl>' +4745 '<content>' +4746 '<punctuation>\u2061</​punctuation>' +4747 '</​content>' +4748 '<children>' +4749 '<function>cos</​function>' +4750 '<identifier>x</​identifier>' +4751 '</​children>' +4752 '</​appl>' +4753 '</​children>' +4754 '</​appl>' +4755 '<appl>' +4756 '<content>' +4757 '<punctuation>\u2061</​punctuation>' +4758 '</​content>' +4759 '<children>' +4760 '<function>ln</​function>' +4761 '<fenced>' +4762 '<content>' +4763 '<fence>(</​fence>' +4764 '<fence>)</​fence>' +4765 '</​content>' +4766 '<children>' +4767 '<appl>' +4768 '<content>' +4769 '<punctuation>\u2061</​punctuation>' +4770 '</​content>' +4771 '<children>' +4772 '<function>sin</​function>' +4773 '<fenced>' +4774 '<content>' +4775 '<fence>(</​fence>' +4776 '<fence>)</​fence>' +4777 '</​content>' +4778 '<children>' +4779 '<identifier>x</​identifier>' +4780 '</​children>' +4781 '</​fenced>' +4782 '</​children>' +4783 '</​appl>' +4784 '</​children>' +4785 '</​fenced>' +4786 '</​children>' +4787 '</​appl>' +4788 '</​children>' +4789 '</​relseq>');4790};4791/​**4792 * Variations of tables representing matrices, vectors, case statements,4793 * multiline equations and regular tables.4794 */​4795cvox.SemanticTreeTest.prototype.testStreeTables = function() {4796 this.brief = false;4797 this.executeTreeTest(4798 '<mrow class="MJX-TeXAtom-ORD"><mi mathvariant="bold">A</​mi>' +4799 '<mo>=</​mo><mo>[</​mo><mtable rowspacing="4pt" columnspacing="1em">' +4800 '<mtr><mtd><mn>0</​mn></​mtd><mtd><mn>1</​mn></​mtd></​mtr><mtr><mtd>' +4801 '<mn>2</​mn></​mtd><mtd><mn>3</​mn></​mtd></​mtr></​mtable><mo>]</​mo>' +4802 '</​mrow>',4803 '<relseq role="equality" id="16">=' +4804 '<content>' +4805 '<relation role="equality" id="1">=</​relation>' +4806 '</​content>' +4807 '<children>' +4808 '<identifier role="latinletter" font="bold" id="0">A</​identifier>' +4809 '<matrix role="unknown" id="13">' +4810 '<content>' +4811 '<fence role="open" id="2">[</​fence>' +4812 '<fence role="close" id="14">]</​fence>' +4813 '</​content>' +4814 '<children>' +4815 '<row role="matrix" id="7">' +4816 '<children>' +4817 '<cell role="matrix" id="4">' +4818 '<children>' +4819 '<number role="integer" font="normal" id="3">0</​number>' +4820 '</​children>' +4821 '</​cell>' +4822 '<cell role="matrix" id="6">' +4823 '<children>' +4824 '<number role="integer" font="normal" id="5">1</​number>' +4825 '</​children>' +4826 '</​cell>' +4827 '</​children>' +4828 '</​row>' +4829 '<row role="matrix" id="12">' +4830 '<children>' +4831 '<cell role="matrix" id="9">' +4832 '<children>' +4833 '<number role="integer" font="normal" id="8">2</​number>' +4834 '</​children>' +4835 '</​cell>' +4836 '<cell role="matrix" id="11">' +4837 '<children>' +4838 '<number role="integer" font="normal" id="10">3</​number>' +4839 '</​children>' +4840 '</​cell>' +4841 '</​children>' +4842 '</​row>' +4843 '</​children>' +4844 '</​matrix>' +4845 '</​children>' +4846 '</​relseq>');4847 this.executeTreeTest(4848 '<mo>[</​mo><mtable rowspacing="4pt" columnspacing="1em"><mtr>' +4849 '<mtd><mn>0</​mn></​mtd><mtd><mn>1</​mn></​mtd></​mtr><mtr><mtd>' +4850 '<mn>2</​mn></​mtd><mtd><mn>3</​mn></​mtd></​mtr></​mtable>' +4851 '<mo>]</​mo>',4852 '<matrix role="unknown" id="11">' +4853 '<content>' +4854 '<fence role="open" id="0">[</​fence>' +4855 '<fence role="close" id="12">]</​fence>' +4856 '</​content>' +4857 '<children>' +4858 '<row role="matrix" id="5">' +4859 '<children>' +4860 '<cell role="matrix" id="2">' +4861 '<children>' +4862 '<number role="integer" font="normal" id="1">0</​number>' +4863 '</​children>' +4864 '</​cell>' +4865 '<cell role="matrix" id="4">' +4866 '<children>' +4867 '<number role="integer" font="normal" id="3">1</​number>' +4868 '</​children>' +4869 '</​cell>' +4870 '</​children>' +4871 '</​row>' +4872 '<row role="matrix" id="10">' +4873 '<children>' +4874 '<cell role="matrix" id="7">' +4875 '<children>' +4876 '<number role="integer" font="normal" id="6">2</​number>' +4877 '</​children>' +4878 '</​cell>' +4879 '<cell role="matrix" id="9">' +4880 '<children>' +4881 '<number role="integer" font="normal" id="8">3</​number>' +4882 '</​children>' +4883 '</​cell>' +4884 '</​children>' +4885 '</​row>' +4886 '</​children>' +4887 '</​matrix>');4888 this.executeTreeTest(4889 '<mrow class="MJX-TeXAtom-ORD"><mi mathvariant="bold">V</​mi>' +4890 '<mo>=</​mo><mo>[</​mo><mtable rowspacing="4pt" columnspacing="1em">' +4891 '<mtr><mtd><mn>1</​mn></​mtd></​mtr><mtr><mtd><mn>2</​mn></​mtd></​mtr>' +4892 '<mtr><mtd><mn>3</​mn></​mtd></​mtr></​mtable><mo>]</​mo></​mrow>',4893 '<relseq role="equality" id="15">=' +4894 '<content>' +4895 '<relation role="equality" id="1">=</​relation>' +4896 '</​content>' +4897 '<children>' +4898 '<identifier role="latinletter" font="bold" id="0">V</​identifier>' +4899 '<vector role="unknown" id="12">' +4900 '<content>' +4901 '<fence role="open" id="2">[</​fence>' +4902 '<fence role="close" id="13">]</​fence>' +4903 '</​content>' +4904 '<children>' +4905 '<line role="vector" id="5">' +4906 '<children>' +4907 '<number role="integer" font="normal" id="3">1</​number>' +4908 '</​children>' +4909 '</​line>' +4910 '<line role="vector" id="8">' +4911 '<children>' +4912 '<number role="integer" font="normal" id="6">2</​number>' +4913 '</​children>' +4914 '</​line>' +4915 '<line role="vector" id="11">' +4916 '<children>' +4917 '<number role="integer" font="normal" id="9">3</​number>' +4918 '</​children>' +4919 '</​line>' +4920 '</​children>' +4921 '</​vector>' +4922 '</​children>' +4923 '</​relseq>');4924 this.executeTreeTest(4925 '<mo>[</​mo><mtable rowspacing="4pt" columnspacing="1em">' +4926 '<mtr><mtd><mn>1</​mn></​mtd></​mtr><mtr><mtd><mn>2</​mn></​mtd></​mtr>' +4927 '<mtr><mtd><mn>3</​mn></​mtd></​mtr></​mtable><mo>]</​mo>',4928 '<vector role="unknown" id="10">' +4929 '<content>' +4930 '<fence role="open" id="0">[</​fence>' +4931 '<fence role="close" id="11">]</​fence>' +4932 '</​content>' +4933 '<children>' +4934 '<line role="vector" id="3">' +4935 '<children>' +4936 '<number role="integer" font="normal" id="1">1</​number>' +4937 '</​children>' +4938 '</​line>' +4939 '<line role="vector" id="6">' +4940 '<children>' +4941 '<number role="integer" font="normal" id="4">2</​number>' +4942 '</​children>' +4943 '</​line>' +4944 '<line role="vector" id="9">' +4945 '<children>' +4946 '<number role="integer" font="normal" id="7">3</​number>' +4947 '</​children>' +4948 '</​line>' +4949 '</​children>' +4950 '</​vector>');4951 this.executeTreeTest(4952 '<mrow><mo>{</​mo><mtable><mtr><mtd><mi>a</​mi></​mtd><mtd>' +4953 '<mtext>often</​mtext></​mtd></​mtr><mtr><mtd><mi>b</​mi></​mtd>' +4954 '<mtd><mtext>sometimes</​mtext></​mtd></​mtr></​mtable></​mrow>',4955 '<cases role="unknown" id="11">' +4956 '<content>' +4957 '<punctuation role="openfence" id="0">{</​punctuation>' +4958 '</​content>' +4959 '<children>' +4960 '<row role="cases" id="5">' +4961 '<children>' +4962 '<cell role="cases" id="2">' +4963 '<children>' +4964 '<identifier role="latinletter" font="normal" id="1">a</​identifier>' +4965 '</​children>' +4966 '</​cell>' +4967 '<cell role="cases" id="4">' +4968 '<children>' +4969 '<text role="unknown" id="3">often</​text>' +4970 '</​children>' +4971 '</​cell>' +4972 '</​children>' +4973 '</​row>' +4974 '<row role="cases" id="10">' +4975 '<children>' +4976 '<cell role="cases" id="7">' +4977 '<children>' +4978 '<identifier role="latinletter" font="normal" id="6">b</​identifier>' +4979 '</​children>' +4980 '</​cell>' +4981 '<cell role="cases" id="9">' +4982 '<children>' +4983 '<text role="unknown" id="8">sometimes</​text>' +4984 '</​children>' +4985 '</​cell>' +4986 '</​children>' +4987 '</​row>' +4988 '</​children>' +4989 '</​cases>');4990 this.executeTreeTest(4991 '<mrow><mi mathvariant="bold">A</​mi><mo>=</​mo><mo>{</​mo><mtable>' +4992 '<mtr><mtd><mi>a</​mi></​mtd><mtd><mtext>often</​mtext></​mtd></​mtr>' +4993 '<mtr><mtd><mi>b</​mi></​mtd><mtd><mtext>sometimes</​mtext></​mtd></​mtr>' +4994 '</​mtable></​mrow>',4995 '<relseq role="equality" id="14">=' +4996 '<content>' +4997 '<relation role="equality" id="1">=</​relation>' +4998 '</​content>' +4999 '<children>' +5000 '<identifier role="latinletter" font="bold" id="0">A</​identifier>' +5001 '<cases role="unknown" id="13">' +5002 '<content>' +5003 '<punctuation role="openfence" id="2">{</​punctuation>' +5004 '</​content>' +5005 '<children>' +5006 '<row role="cases" id="7">' +5007 '<children>' +5008 '<cell role="cases" id="4">' +5009 '<children>' +5010 '<identifier role="latinletter" font="normal" id="3">a</​identifier>' +5011 '</​children>' +5012 '</​cell>' +5013 '<cell role="cases" id="6">' +5014 '<children>' +5015 '<text role="unknown" id="5">often</​text>' +5016 '</​children>' +5017 '</​cell>' +5018 '</​children>' +5019 '</​row>' +5020 '<row role="cases" id="12">' +5021 '<children>' +5022 '<cell role="cases" id="9">' +5023 '<children>' +5024 '<identifier role="latinletter" font="normal" id="8">b</​identifier>' +5025 '</​children>' +5026 '</​cell>' +5027 '<cell role="cases" id="11">' +5028 '<children>' +5029 '<text role="unknown" id="10">sometimes</​text>' +5030 '</​children>' +5031 '</​cell>' +5032 '</​children>' +5033 '</​row>' +5034 '</​children>' +5035 '</​cases>' +5036 '</​children>' +5037 '</​relseq>');5038 this.executeTreeTest(5039 '<mrow><mo>{</​mo><mtable><mtr><mtd><mi>a</​mi></​mtd><mtd>' +5040 '<mtext>often</​mtext></​mtd></​mtr><mtr><mtd><mi>b</​mi></​mtd><mtd>' +5041 '<mtext>sometimes</​mtext></​mtd></​mtr></​mtable><mo>.</​mo></​mrow>',5042 '<punctuated role="endpunct" id="13">' +5043 '<content>' +5044 '<punctuation role="fullstop" id="12">.</​punctuation>' +5045 '</​content>' +5046 '<children>' +5047 '<cases role="unknown" id="11">' +5048 '<content>' +5049 '<punctuation role="openfence" id="0">{</​punctuation>' +5050 '</​content>' +5051 '<children>' +5052 '<row role="cases" id="5">' +5053 '<children>' +5054 '<cell role="cases" id="2">' +5055 '<children>' +5056 '<identifier role="latinletter" font="normal" id="1">a</​identifier>' +5057 '</​children>' +5058 '</​cell>' +5059 '<cell role="cases" id="4">' +5060 '<children>' +5061 '<text role="unknown" id="3">often</​text>' +5062 '</​children>' +5063 '</​cell>' +5064 '</​children>' +5065 '</​row>' +5066 '<row role="cases" id="10">' +5067 '<children>' +5068 '<cell role="cases" id="7">' +5069 '<children>' +5070 '<identifier role="latinletter" font="normal" id="6">b</​identifier>' +5071 '</​children>' +5072 '</​cell>' +5073 '<cell role="cases" id="9">' +5074 '<children>' +5075 '<text role="unknown" id="8">sometimes</​text>' +5076 '</​children>' +5077 '</​cell>' +5078 '</​children>' +5079 '</​row>' +5080 '</​children>' +5081 '</​cases>' +5082 '<punctuation role="fullstop" id="12">.</​punctuation>' +5083 '</​children>' +5084 '</​punctuated>');5085 this.executeTreeTest(5086 '<mrow><mo>{</​mo><mtable><mtr><mtd><mi>a</​mi></​mtd>' +5087 '<mtd><mtext>often</​mtext></​mtd></​mtr><mtr><mtd><mi>b</​mi></​mtd>' +5088 '<mtd><mtext>sometimes</​mtext></​mtd></​mtr></​mtable>' +5089 '<mo>,</​mo><mi>b</​mi><mo>,</​mo><mi>c</​mi><mo>.</​mo></​mrow>',5090 '<punctuated role="sequence" id="17">' +5091 '<content>' +5092 '<punctuation role="unknown" id="12">,</​punctuation>' +5093 '<punctuation role="unknown" id="14">,</​punctuation>' +5094 '<punctuation role="fullstop" id="16">.</​punctuation>' +5095 '</​content>' +5096 '<children>' +5097 '<cases role="unknown" id="11">' +5098 '<content>' +5099 '<punctuation role="openfence" id="0">{</​punctuation>' +5100 '</​content>' +5101 '<children>' +5102 '<row role="cases" id="5">' +5103 '<children>' +5104 '<cell role="cases" id="2">' +5105 '<children>' +5106 '<identifier role="latinletter" font="normal" id="1">a</​identifier>' +5107 '</​children>' +5108 '</​cell>' +5109 '<cell role="cases" id="4">' +5110 '<children>' +5111 '<text role="unknown" id="3">often</​text>' +5112 '</​children>' +5113 '</​cell>' +5114 '</​children>' +5115 '</​row>' +5116 '<row role="cases" id="10">' +5117 '<children>' +5118 '<cell role="cases" id="7">' +5119 '<children>' +5120 '<identifier role="latinletter" font="normal" id="6">b</​identifier>' +5121 '</​children>' +5122 '</​cell>' +5123 '<cell role="cases" id="9">' +5124 '<children>' +5125 '<text role="unknown" id="8">sometimes</​text>' +5126 '</​children>' +5127 '</​cell>' +5128 '</​children>' +5129 '</​row>' +5130 '</​children>' +5131 '</​cases>' +5132 '<punctuation role="unknown" id="12">,</​punctuation>' +5133 '<identifier role="latinletter" font="normal" id="13">b</​identifier>' +5134 '<punctuation role="unknown" id="14">,</​punctuation>' +5135 '<identifier role="latinletter" font="normal" id="15">c</​identifier>' +5136 '<punctuation role="fullstop" id="16">.</​punctuation>' +5137 '</​children>' +5138 '</​punctuated>');5139 this.executeTreeTest(5140 '<mrow><mo>{</​mo><mtable><mtr><mtd><mi>a</​mi><mo>,</​mo>' +5141 '<mtext>often</​mtext></​mtd></​mtr><mtr><mtd><mi>b</​mi><mo>,</​mo>' +5142 '<mtext>sometimes</​mtext></​mtd></​mtr></​mtable><mo>,</​mo><mi>b</​mi>' +5143 '<mo>,</​mo><mi>c</​mi><mo>.</​mo></​mrow>',5144 '<punctuated role="sequence" id="19">' +5145 '<content>' +5146 '<punctuation role="unknown" id="14">,</​punctuation>' +5147 '<punctuation role="unknown" id="16">,</​punctuation>' +5148 '<punctuation role="fullstop" id="18">.</​punctuation>' +5149 '</​content>' +5150 '<children>' +5151 '<cases role="unknown" id="13">' +5152 '<content>' +5153 '<punctuation role="openfence" id="0">{</​punctuation>' +5154 '</​content>' +5155 '<children>' +5156 '<line role="cases" id="6">' +5157 '<children>' +5158 '<punctuated role="sequence" id="4">' +5159 '<content>' +5160 '<punctuation role="unknown" id="2">,</​punctuation>' +5161 '</​content>' +5162 '<children>' +5163 '<identifier role="latinletter" font="normal" id="1">a</​identifier>' +5164 '<punctuation role="unknown" id="2">,</​punctuation>' +5165 '<text role="unknown" id="3">often</​text>' +5166 '</​children>' +5167 '</​punctuated>' +5168 '</​children>' +5169 '</​line>' +5170 '<line role="cases" id="12">' +5171 '<children>' +5172 '<punctuated role="sequence" id="10">' +5173 '<content>' +5174 '<punctuation role="unknown" id="8">,</​punctuation>' +5175 '</​content>' +5176 '<children>' +5177 '<identifier role="latinletter" font="normal" id="7">b</​identifier>' +5178 '<punctuation role="unknown" id="8">,</​punctuation>' +5179 '<text role="unknown" id="9">sometimes</​text>' +5180 '</​children>' +5181 '</​punctuated>' +5182 '</​children>' +5183 '</​line>' +5184 '</​children>' +5185 '</​cases>' +5186 '<punctuation role="unknown" id="14">,</​punctuation>' +5187 '<identifier role="latinletter" font="normal" id="15">b</​identifier>' +5188 '<punctuation role="unknown" id="16">,</​punctuation>' +5189 '<identifier role="latinletter" font="normal" id="17">c</​identifier>' +5190 '<punctuation role="fullstop" id="18">.</​punctuation>' +5191 '</​children>' +5192 '</​punctuated>');5193 this.executeTreeTest(5194 '<mtable><mtr><mtd><mi>x</​mi><maligngroup/​><mo>=</​mo><mn>4</​mn>' +5195 '</​mtd></​mtr><mtr><mtd><mi>y</​mi><maligngroup/​><mo>=</​mo><mn>2</​mn>' +5196 '</​mtd></​mtr><mtr><mtd><mi>x</​mi><mi>y</​mi><maligngroup/​><mo>=</​mo>' +5197 '<mn>6</​mn></​mtd></​mtr></​mtable>',5198 '<multiline role="unknown" id="21">' +5199 '<children>' +5200 '<line role="multiline" id="5">' +5201 '<children>' +5202 '<relseq role="equality" id="3">=' +5203 '<content>' +5204 '<relation role="equality" id="1">=</​relation>' +5205 '</​content>' +5206 '<children>' +5207 '<identifier role="latinletter" font="normal" id="0">x</​identifier>' +5208 '<number role="integer" font="normal" id="2">4</​number>' +5209 '</​children>' +5210 '</​relseq>' +5211 '</​children>' +5212 '</​line>' +5213 '<line role="multiline" id="11">' +5214 '<children>' +5215 '<relseq role="equality" id="9">=' +5216 '<content>' +5217 '<relation role="equality" id="7">=</​relation>' +5218 '</​content>' +5219 '<children>' +5220 '<identifier role="latinletter" font="normal" id="6">y</​identifier>' +5221 '<number role="integer" font="normal" id="8">2</​number>' +5222 '</​children>' +5223 '</​relseq>' +5224 '</​children>' +5225 '</​line>' +5226 '<line role="multiline" id="20">' +5227 '<children>' +5228 '<relseq role="equality" id="18">=' +5229 '<content>' +5230 '<relation role="equality" id="14">=</​relation>' +5231 '</​content>' +5232 '<children>' +5233 '<infixop role="implicit" id="17">\u2062' +5234 '<content>' +5235 '<operator role="multiplication" id="16">\u2062</​operator>' +5236 '</​content>' +5237 '<children>' +5238 '<identifier role="latinletter" font="normal" id="12">x</​identifier>' +5239 '<identifier role="latinletter" font="normal" id="13">y</​identifier>' +5240 '</​children>' +5241 '</​infixop>' +5242 '<number role="integer" font="normal" id="15">6</​number>' +5243 '</​children>' +5244 '</​relseq>' +5245 '</​children>' +5246 '</​line>' +5247 '</​children>' +5248 '</​multiline>');5249 this.executeTreeTest(5250 '<mtable><mtr><mtd><mi>x</​mi></​mtd><mtd><mo>=</​mo></​mtd><mtd><mn>4</​mn>' +5251 '</​mtd></​mtr><mtr><mtd><mi>y</​mi></​mtd><mtd><mo>=</​mo></​mtd><mtd>' +5252 '<mn>2</​mn></​mtd></​mtr><mtr><mtd><mi>x</​mi><mi>y</​mi></​mtd><mtd>' +5253 '<mo>=</​mo></​mtd><mtd><mn>6</​mn></​mtd></​mtr></​mtable>',5254 '<table role="unknown" id="24">' +5255 '<children>' +5256 '<row role="table" id="6">' +5257 '<children>' +5258 '<cell role="table" id="1">' +5259 '<children>' +5260 '<identifier role="latinletter" font="normal" id="0">x</​identifier>' +5261 '</​children>' +5262 '</​cell>' +5263 '<cell role="table" id="3">' +5264 '<children>' +5265 '<relation role="equality" id="2">=</​relation>' +5266 '</​children>' +5267 '</​cell>' +5268 '<cell role="table" id="5">' +5269 '<children>' +5270 '<number role="integer" font="normal" id="4">4</​number>' +5271 '</​children>' +5272 '</​cell>' +5273 '</​children>' +5274 '</​row>' +5275 '<row role="table" id="13">' +5276 '<children>' +5277 '<cell role="table" id="8">' +5278 '<children>' +5279 '<identifier role="latinletter" font="normal" id="7">y</​identifier>' +5280 '</​children>' +5281 '</​cell>' +5282 '<cell role="table" id="10">' +5283 '<children>' +5284 '<relation role="equality" id="9">=</​relation>' +5285 '</​children>' +5286 '</​cell>' +5287 '<cell role="table" id="12">' +5288 '<children>' +5289 '<number role="integer" font="normal" id="11">2</​number>' +5290 '</​children>' +5291 '</​cell>' +5292 '</​children>' +5293 '</​row>' +5294 '<row role="table" id="23">' +5295 '<children>' +5296 '<cell role="table" id="18">' +5297 '<children>' +5298 '<infixop role="implicit" id="17">\u2062' +5299 '<content>' +5300 '<operator role="multiplication" id="16">\u2062</​operator>' +5301 '</​content>' +5302 '<children>' +5303 '<identifier role="latinletter" font="normal" id="14">x</​identifier>' +5304 '<identifier role="latinletter" font="normal" id="15">y</​identifier>' +5305 '</​children>' +5306 '</​infixop>' +5307 '</​children>' +5308 '</​cell>' +5309 '<cell role="table" id="20">' +5310 '<children>' +5311 '<relation role="equality" id="19">=</​relation>' +5312 '</​children>' +5313 '</​cell>' +5314 '<cell role="table" id="22">' +5315 '<children>' +5316 '<number role="integer" font="normal" id="21">6</​number>' +5317 '</​children>' +5318 '</​cell>' +5319 '</​children>' +5320 '</​row>' +5321 '</​children>' +5322 '</​table>');5323};5324cvox.SemanticTreeTest.prototype.testStreeLimitFunctions = function() {5325 this.brief = true;5326 this.executeTreeTest(5327 '<mrow><munder><mi>lim</​mi><mrow><mi>x</​mi><mo>\u2192</​mo>' +5328 '<mi>\u221E</​mi></​mrow></​munder><mo>(</​mo><mi>x</​mi><mo>)</​mo></​mrow>',5329 '<appl>' +5330 '<content>' +5331 '<punctuation>\u2061</​punctuation>' +5332 '</​content>' +5333 '<children>' +5334 '<limlower>' +5335 '<children>' +5336 '<function>lim</​function>' +5337 '<relseq>\u2192' +5338 '<content>' +5339 '<relation>\u2192</​relation>' +5340 '</​content>' +5341 '<children>' +5342 '<identifier>x</​identifier>' +5343 '<identifier>\u221E</​identifier>' +5344 '</​children>' +5345 '</​relseq>' +5346 '</​children>' +5347 '</​limlower>' +5348 '<fenced>' +5349 '<content>' +5350 '<fence>(</​fence>' +5351 '<fence>)</​fence>' +5352 '</​content>' +5353 '<children>' +5354 '<identifier>x</​identifier>' +5355 '</​children>' +5356 '</​fenced>' +5357 '</​children>' +5358 '</​appl>');5359 this.executeTreeTest(5360 '<mrow><mi>a</​mi><mo>+</​mo><munder><mi>lim</​mi><mrow><mi>x</​mi>' +5361 '<mo>\u2192</​mo><mi>\u221E</​mi></​mrow></​munder><mo>(</​mo><mi>x</​mi>' +5362 '<mo>)</​mo><mo>+</​mo><mi>b</​mi></​mrow>',5363 '<infixop>+' +5364 '<content>' +5365 '<operator>+</​operator>' +5366 '<operator>+</​operator>' +5367 '</​content>' +5368 '<children>' +5369 '<identifier>a</​identifier>' +5370 '<appl>' +5371 '<content>' +5372 '<punctuation>\u2061</​punctuation>' +5373 '</​content>' +5374 '<children>' +5375 '<limlower>' +5376 '<children>' +5377 '<function>lim</​function>' +5378 '<relseq>\u2192' +5379 '<content>' +5380 '<relation>\u2192</​relation>' +5381 '</​content>' +5382 '<children>' +5383 '<identifier>x</​identifier>' +5384 '<identifier>\u221E</​identifier>' +5385 '</​children>' +5386 '</​relseq>' +5387 '</​children>' +5388 '</​limlower>' +5389 '<fenced>' +5390 '<content>' +5391 '<fence>(</​fence>' +5392 '<fence>)</​fence>' +5393 '</​content>' +5394 '<children>' +5395 '<identifier>x</​identifier>' +5396 '</​children>' +5397 '</​fenced>' +5398 '</​children>' +5399 '</​appl>' +5400 '<identifier>b</​identifier>' +5401 '</​children>' +5402 '</​infixop>');5403 this.executeTreeTest(5404 '<mrow><msup><munder><mi>lim</​mi><mrow><mi>x</​mi><mo>\u2192</​mo>' +5405 '<mi>\u221E</​mi></​mrow></​munder><mo>+</​mo></​msup><mo>(</​mo><mi>x</​mi>' +5406 '<mo>)</​mo></​mrow>',5407 '<appl>' +5408 '<content>' +5409 '<punctuation>\u2061</​punctuation>' +5410 '</​content>' +5411 '<children>' +5412 '<limupper>' +5413 '<children>' +5414 '<limlower>' +5415 '<children>' +5416 '<function>lim</​function>' +5417 '<relseq>\u2192' +5418 '<content>' +5419 '<relation>\u2192</​relation>' +5420 '</​content>' +5421 '<children>' +5422 '<identifier>x</​identifier>' +5423 '<identifier>\u221E</​identifier>' +5424 '</​children>' +5425 '</​relseq>' +5426 '</​children>' +5427 '</​limlower>' +5428 '<operator>+</​operator>' +5429 '</​children>' +5430 '</​limupper>' +5431 '<fenced>' +5432 '<content>' +5433 '<fence>(</​fence>' +5434 '<fence>)</​fence>' +5435 '</​content>' +5436 '<children>' +5437 '<identifier>x</​identifier>' +5438 '</​children>' +5439 '</​fenced>' +5440 '</​children>' +5441 '</​appl>');5442 this.executeTreeTest(5443 '<mrow><munderover><mi>lim</​mi><mo>\u2015</​mo><mrow><mi>x</​mi>' +5444 '<mo>\u2192</​mo><mi>\u221E</​mi></​mrow></​munderover><mo>(</​mo>' +5445 '<mi>x</​mi><mo>)</​mo></​mrow>',5446 '<appl>' +5447 '<content>' +5448 '<punctuation>\u2061</​punctuation>' +5449 '</​content>' +5450 '<children>' +5451 '<limboth>' +5452 '<children>' +5453 '<function>lim</​function>' +5454 '<punctuation>\u2015</​punctuation>' +5455 '<relseq>\u2192' +5456 '<content>' +5457 '<relation>\u2192</​relation>' +5458 '</​content>' +5459 '<children>' +5460 '<identifier>x</​identifier>' +5461 '<identifier>\u221E</​identifier>' +5462 '</​children>' +5463 '</​relseq>' +5464 '</​children>' +5465 '</​limboth>' +5466 '<fenced>' +5467 '<content>' +5468 '<fence>(</​fence>' +5469 '<fence>)</​fence>' +5470 '</​content>' +5471 '<children>' +5472 '<identifier>x</​identifier>' +5473 '</​children>' +5474 '</​fenced>' +5475 '</​children>' +5476 '</​appl>');5477 this.executeTreeTest(5478 '<mrow><munder><mi>liminf</​mi><mrow><mi>x</​mi><mo>\u2192</​mo>' +5479 '<mi>\u221E</​mi></​mrow></​munder><mo>(</​mo><mi>x</​mi><mo>)</​mo>' +5480 '<mo>+</​mo><munder><mi>limsup</​mi><mrow><mi>y</​mi><mo>\u2192</​mo>' +5481 '<mi>\u221E</​mi></​mrow></​munder><mo>(</​mo><mi>y</​mi><mo>)</​mo></​mrow>',5482 '<infixop>+' +5483 '<content>' +5484 '<operator>+</​operator>' +5485 '</​content>' +5486 '<children>' +5487 '<appl>' +5488 '<content>' +5489 '<punctuation>\u2061</​punctuation>' +5490 '</​content>' +5491 '<children>' +5492 '<limlower>' +5493 '<children>' +5494 '<function>liminf</​function>' +5495 '<relseq>\u2192' +5496 '<content>' +5497 '<relation>\u2192</​relation>' +5498 '</​content>' +5499 '<children>' +5500 '<identifier>x</​identifier>' +5501 '<identifier>\u221E</​identifier>' +5502 '</​children>' +5503 '</​relseq>' +5504 '</​children>' +5505 '</​limlower>' +5506 '<fenced>' +5507 '<content>' +5508 '<fence>(</​fence>' +5509 '<fence>)</​fence>' +5510 '</​content>' +5511 '<children>' +5512 '<identifier>x</​identifier>' +5513 '</​children>' +5514 '</​fenced>' +5515 '</​children>' +5516 '</​appl>' +5517 '<appl>' +5518 '<content>' +5519 '<punctuation>\u2061</​punctuation>' +5520 '</​content>' +5521 '<children>' +5522 '<limlower>' +5523 '<children>' +5524 '<function>limsup</​function>' +5525 '<relseq>\u2192' +5526 '<content>' +5527 '<relation>\u2192</​relation>' +5528 '</​content>' +5529 '<children>' +5530 '<identifier>y</​identifier>' +5531 '<identifier>\u221E</​identifier>' +5532 '</​children>' +5533 '</​relseq>' +5534 '</​children>' +5535 '</​limlower>' +5536 '<fenced>' +5537 '<content>' +5538 '<fence>(</​fence>' +5539 '<fence>)</​fence>' +5540 '</​content>' +5541 '<children>' +5542 '<identifier>y</​identifier>' +5543 '</​children>' +5544 '</​fenced>' +5545 '</​children>' +5546 '</​appl>' +5547 '</​children>' +5548 '</​infixop>');5549 this.executeTreeTest(5550 '<mrow><mi>a</​mi><mo>+</​mo><munder><mi>lim</​mi><mrow><mi>x</​mi>' +5551 '<mo>\u2192</​mo><mi>\u221E</​mi></​mrow></​munder><mi>x</​mi><mo>+</​mo>' +5552 '<mi>b</​mi></​mrow>',5553 '<infixop>+' +5554 '<content>' +5555 '<operator>+</​operator>' +5556 '<operator>+</​operator>' +5557 '</​content>' +5558 '<children>' +5559 '<identifier>a</​identifier>' +5560 '<appl>' +5561 '<content>' +5562 '<punctuation>\u2061</​punctuation>' +5563 '</​content>' +5564 '<children>' +5565 '<limlower>' +5566 '<children>' +5567 '<function>lim</​function>' +5568 '<relseq>\u2192' +5569 '<content>' +5570 '<relation>\u2192</​relation>' +5571 '</​content>' +5572 '<children>' +5573 '<identifier>x</​identifier>' +5574 '<identifier>\u221E</​identifier>' +5575 '</​children>' +5576 '</​relseq>' +5577 '</​children>' +5578 '</​limlower>' +5579 '<identifier>x</​identifier>' +5580 '</​children>' +5581 '</​appl>' +5582 '<identifier>b</​identifier>' +5583 '</​children>' +5584 '</​infixop>');5585 this.executeTreeTest(5586 '<mrow><munder><mi>lim</​mi><mrow><mi>x</​mi><mo>\u2192</​mo><mi>\u221E</​mi>' +5587 '</​mrow></​munder><mi>lim</​mi><munder><mrow><mi>y</​mi><mo>\u2192</​mo>' +5588 '<mi>\u221E</​mi></​mrow></​munder><mi>x</​mi><mi>y</​mi></​mrow>',5589 '<appl>' +5590 '<content>' +5591 '<punctuation>\u2061</​punctuation>' +5592 '</​content>' +5593 '<children>' +5594 '<limlower>' +5595 '<children>' +5596 '<function>lim</​function>' +5597 '<relseq>\u2192' +5598 '<content>' +5599 '<relation>\u2192</​relation>' +5600 '</​content>' +5601 '<children>' +5602 '<identifier>x</​identifier>' +5603 '<identifier>\u221E</​identifier>' +5604 '</​children>' +5605 '</​relseq>' +5606 '</​children>' +5607 '</​limlower>' +5608 '<appl>' +5609 '<content>' +5610 '<punctuation>\u2061</​punctuation>' +5611 '</​content>' +5612 '<children>' +5613 '<function>lim</​function>' +5614 '<infixop>\u2062' +5615 '<content>' +5616 '<operator>\u2062</​operator>' +5617 '</​content>' +5618 '<children>' +5619 '<underscore>' +5620 '<children>' +5621 '<relseq>\u2192' +5622 '<content>' +5623 '<relation>\u2192</​relation>' +5624 '</​content>' +5625 '<children>' +5626 '<identifier>y</​identifier>' +5627 '<identifier>\u221E</​identifier>' +5628 '</​children>' +5629 '</​relseq>' +5630 '</​children>' +5631 '</​underscore>' +5632 '<identifier>x</​identifier>' +5633 '<identifier>y</​identifier>' +5634 '</​children>' +5635 '</​infixop>' +5636 '</​children>' +5637 '</​appl>' +5638 '</​children>' +5639 '</​appl>');5640 this.executeTreeTest(5641 '<mi>liminf</​mi>',5642 '<function>liminf</​function>');5643 this.executeTreeTest(5644 '<munder><mi>lim</​mi><mrow><mi>x</​mi><mo>\u2192</​mo><mi>\u221E</​mi>' +5645 '</​mrow></​munder>',5646 '<limlower>' +5647 '<children>' +5648 '<function>lim</​function>' +5649 '<relseq>\u2192' +5650 '<content>' +5651 '<relation>\u2192</​relation>' +5652 '</​content>' +5653 '<children>' +5654 '<identifier>x</​identifier>' +5655 '<identifier>\u221E</​identifier>' +5656 '</​children>' +5657 '</​relseq>' +5658 '</​children>' +5659 '</​limlower>');5660 this.executeTreeTest(5661 '<mi>liminf</​mi><mo>+</​mo><mi>limsup</​mi><mo>=</​mo><mi>lim</​mi>',5662 '<relseq>=' +5663 '<content>' +5664 '<relation>=</​relation>' +5665 '</​content>' +5666 '<children>' +5667 '<infixop>+' +5668 '<content>' +5669 '<operator>+</​operator>' +5670 '</​content>' +5671 '<children>' +5672 '<appl>' +5673 '<content>' +5674 '<punctuation>\u2061</​punctuation>' +5675 '</​content>' +5676 '<children>' +5677 '<function>liminf</​function>' +5678 '<empty/​>' +5679 '</​children>' +5680 '</​appl>' +5681 '<appl>' +5682 '<content>' +5683 '<punctuation>\u2061</​punctuation>' +5684 '</​content>' +5685 '<children>' +5686 '<function>limsup</​function>' +5687 '<empty/​>' +5688 '</​children>' +5689 '</​appl>' +5690 '</​children>' +5691 '</​infixop>' +5692 '<appl>' +5693 '<content>' +5694 '<punctuation>\u2061</​punctuation>' +5695 '</​content>' +5696 '<children>' +5697 '<function>lim</​function>' +5698 '<empty/​>' +5699 '</​children>' +5700 '</​appl>' +5701 '</​children>' +5702 '</​relseq>');5703};5704/​**5705 * Variations of big operators.5706 */​5707cvox.SemanticTreeTest.prototype.testStreeBigOps = function() {5708 this.brief = true;5709 this.executeTreeTest(5710 '<mrow><munderover><mi>\u2211</​mi><mrow><mi>n</​mi><mo>=</​mo><mn>0</​mn>' +5711 '</​mrow><mi>\u221E</​mi></​munderover><msup><mi>n</​mi><mn>2</​mn>' +5712 '</​msup></​mrow>',5713 '<bigop>' +5714 '<children>' +5715 '<limboth>' +5716 '<children>' +5717 '<largeop>\u2211</​largeop>' +5718 '<relseq>=' +5719 '<content>' +5720 '<relation>=</​relation>' +5721 '</​content>' +5722 '<children>' +5723 '<identifier>n</​identifier>' +5724 '<number>0</​number>' +5725 '</​children>' +5726 '</​relseq>' +5727 '<identifier>\u221E</​identifier>' +5728 '</​children>' +5729 '</​limboth>' +5730 '<superscript>' +5731 '<children>' +5732 '<identifier>n</​identifier>' +5733 '<number>2</​number>' +5734 '</​children>' +5735 '</​superscript>' +5736 '</​children>' +5737 '</​bigop>');5738 this.executeTreeTest(5739 '<mrow><munderover><mi>\u2211</​mi><mrow><mi>n</​mi><mo>=</​mo><mn>0</​mn>' +5740 '</​mrow><mi>\u221E</​mi></​munderover><munderover><mi>\u2211</​mi><mrow>' +5741 '<mi>m</​mi><mo>=</​mo><mn>0</​mn></​mrow><mi>\u221E</​mi></​munderover><msup>' +5742 '<mi>n</​mi><mn>m</​mn></​msup></​mrow>',5743 '<bigop>' +5744 '<children>' +5745 '<limboth>' +5746 '<children>' +5747 '<largeop>\u2211</​largeop>' +5748 '<relseq>=' +5749 '<content>' +5750 '<relation>=</​relation>' +5751 '</​content>' +5752 '<children>' +5753 '<identifier>n</​identifier>' +5754 '<number>0</​number>' +5755 '</​children>' +5756 '</​relseq>' +5757 '<identifier>\u221E</​identifier>' +5758 '</​children>' +5759 '</​limboth>' +5760 '<bigop>' +5761 '<children>' +5762 '<limboth>' +5763 '<children>' +5764 '<largeop>\u2211</​largeop>' +5765 '<relseq>=' +5766 '<content>' +5767 '<relation>=</​relation>' +5768 '</​content>' +5769 '<children>' +5770 '<identifier>m</​identifier>' +5771 '<number>0</​number>' +5772 '</​children>' +5773 '</​relseq>' +5774 '<identifier>\u221E</​identifier>' +5775 '</​children>' +5776 '</​limboth>' +5777 '<superscript>' +5778 '<children>' +5779 '<identifier>n</​identifier>' +5780 '<identifier>m</​identifier>' +5781 '</​children>' +5782 '</​superscript>' +5783 '</​children>' +5784 '</​bigop>' +5785 '</​children>' +5786 '</​bigop>');5787 this.executeTreeTest(5788 '<mrow><munder><mi>\u2211</​mi><mrow><mi>n</​mi><mo>=</​mo><mn>0</​mn></​mrow>' +5789 '</​munder><msup><mi>n</​mi><mn>2</​mn></​msup></​mrow>',5790 '<bigop>' +5791 '<children>' +5792 '<limlower>' +5793 '<children>' +5794 '<largeop>\u2211</​largeop>' +5795 '<relseq>=' +5796 '<content>' +5797 '<relation>=</​relation>' +5798 '</​content>' +5799 '<children>' +5800 '<identifier>n</​identifier>' +5801 '<number>0</​number>' +5802 '</​children>' +5803 '</​relseq>' +5804 '</​children>' +5805 '</​limlower>' +5806 '<superscript>' +5807 '<children>' +5808 '<identifier>n</​identifier>' +5809 '<number>2</​number>' +5810 '</​children>' +5811 '</​superscript>' +5812 '</​children>' +5813 '</​bigop>');5814};5815/​**5816 * Variations of integrals.5817 */​5818cvox.SemanticTreeTest.prototype.testStreeIntegrals = function() {5819 this.brief = true;5820 this.executeTreeTest(5821 '<mi>\u222B</​mi>',5822 '<largeop>\u222B</​largeop>');5823 this.executeTreeTest(5824 '<mi>\u222B</​mi><mi>dx</​mi>',5825 '<integral>' +5826 '<children>' +5827 '<largeop>\u222B</​largeop>' +5828 '<empty/​>' +5829 '<identifier>dx</​identifier>' +5830 '</​children>' +5831 '</​integral>');5832 this.executeTreeTest(5833 '<mrow><mi>\u222B</​mi><mi>x</​mi><mi>dx</​mi></​mrow>',5834 '<integral>' +5835 '<children>' +5836 '<largeop>\u222B</​largeop>' +5837 '<identifier>x</​identifier>' +5838 '<identifier>dx</​identifier>' +5839 '</​children>' +5840 '</​integral>');5841 this.executeTreeTest(5842 '<mrow><mi>\u222B</​mi><mi>x</​mi><mi>d</​mi><mi>x</​mi></​mrow>',5843 '<integral>' +5844 '<children>' +5845 '<largeop>\u222B</​largeop>' +5846 '<identifier>x</​identifier>' +5847 '<punctuated>' +5848 '<content>' +5849 '<punctuation>\u2063</​punctuation>' +5850 '</​content>' +5851 '<children>' +5852 '<identifier>d</​identifier>' +5853 '<punctuation>\u2063</​punctuation>' +5854 '<identifier>x</​identifier>' +5855 '</​children>' +5856 '</​punctuated>' +5857 '</​children>' +5858 '</​integral>');5859 this.executeTreeTest(5860 '<mrow><mi>\u222B</​mi><mi>x</​mi><mo>+</​mo><mi>y</​mi><mi>d</​mi><mi>x</​mi></​mrow>',5861 '<integral>' +5862 '<children>' +5863 '<largeop>\u222B</​largeop>' +5864 '<infixop>+' +5865 '<content>' +5866 '<operator>+</​operator>' +5867 '</​content>' +5868 '<children>' +5869 '<identifier>x</​identifier>' +5870 '<identifier>y</​identifier>' +5871 '</​children>' +5872 '</​infixop>' +5873 '<punctuated>' +5874 '<content>' +5875 '<punctuation>\u2063</​punctuation>' +5876 '</​content>' +5877 '<children>' +5878 '<identifier>d</​identifier>' +5879 '<punctuation>\u2063</​punctuation>' +5880 '<identifier>x</​identifier>' +5881 '</​children>' +5882 '</​punctuated>' +5883 '</​children>' +5884 '</​integral>');5885 this.executeTreeTest(5886 '<munderover><mi>\u222B</​mi><mn>0</​mn><mn>10</​mn></​munderover>',5887 '<limboth>' +5888 '<children>' +5889 '<largeop>\u222B</​largeop>' +5890 '<number>0</​number>' +5891 '<number>10</​number>' +5892 '</​children>' +5893 '</​limboth>');5894 this.executeTreeTest(5895 '<munder><mi>\u222B</​mi><mn>X</​mn></​munder>',5896 '<limlower>' +5897 '<children>' +5898 '<largeop>\u222B</​largeop>' +5899 '<identifier>X</​identifier>' +5900 '</​children>' +5901 '</​limlower>');5902 this.executeTreeTest(5903 '<munderover><mi>\u222B</​mi><mn>0</​mn><mn>10</​mn></​munderover><mi>x</​mi>' +5904 '<mi>d</​mi><mi>x</​mi>',5905 '<integral>' +5906 '<children>' +5907 '<limboth>' +5908 '<children>' +5909 '<largeop>\u222B</​largeop>' +5910 '<number>0</​number>' +5911 '<number>10</​number>' +5912 '</​children>' +5913 '</​limboth>' +5914 '<identifier>x</​identifier>' +5915 '<punctuated>' +5916 '<content>' +5917 '<punctuation>\u2063</​punctuation>' +5918 '</​content>' +5919 '<children>' +5920 '<identifier>d</​identifier>' +5921 '<punctuation>\u2063</​punctuation>' +5922 '<identifier>x</​identifier>' +5923 '</​children>' +5924 '</​punctuated>' +5925 '</​children>' +5926 '</​integral>');5927 this.executeTreeTest(5928 '<munder><mi>\u222B</​mi><mn>X</​mn></​munder><mi>x</​mi><mi>dx</​mi>',5929 '<integral>' +5930 '<children>' +5931 '<limlower>' +5932 '<children>' +5933 '<largeop>\u222B</​largeop>' +5934 '<identifier>X</​identifier>' +5935 '</​children>' +5936 '</​limlower>' +5937 '<identifier>x</​identifier>' +5938 '<identifier>dx</​identifier>' +5939 '</​children>' +5940 '</​integral>');5941 this.executeTreeTest(5942 '<munderover><mi>\u222B</​mi><mn>0</​mn><mn>10</​mn></​munderover><mi>x</​mi>' +5943 '<mi>dx</​mi><mo>+</​mo><munderover><mi>\u222B</​mi><mn>10</​mn><mn>20</​mn>' +5944 '</​munderover><mi>x</​mi><mi>dx</​mi><mo>=</​mo><munderover><mi>\u222B</​mi>' +5945 '<mn>0</​mn><mn>20</​mn></​munderover><mi>x</​mi><mi>dx</​mi>',5946 '<relseq>=' +5947 '<content>' +5948 '<relation>=</​relation>' +5949 '</​content>' +5950 '<children>' +5951 '<infixop>+' +5952 '<content>' +5953 '<operator>+</​operator>' +5954 '</​content>' +5955 '<children>' +5956 '<integral>' +5957 '<children>' +5958 '<limboth>' +5959 '<children>' +5960 '<largeop>\u222B</​largeop>' +5961 '<number>0</​number>' +5962 '<number>10</​number>' +5963 '</​children>' +5964 '</​limboth>' +5965 '<identifier>x</​identifier>' +5966 '<identifier>dx</​identifier>' +5967 '</​children>' +5968 '</​integral>' +5969 '<integral>' +5970 '<children>' +5971 '<limboth>' +5972 '<children>' +5973 '<largeop>\u222B</​largeop>' +5974 '<number>10</​number>' +5975 '<number>20</​number>' +5976 '</​children>' +5977 '</​limboth>' +5978 '<identifier>x</​identifier>' +5979 '<identifier>dx</​identifier>' +5980 '</​children>' +5981 '</​integral>' +5982 '</​children>' +5983 '</​infixop>' +5984 '<integral>' +5985 '<children>' +5986 '<limboth>' +5987 '<children>' +5988 '<largeop>\u222B</​largeop>' +5989 '<number>0</​number>' +5990 '<number>20</​number>' +5991 '</​children>' +5992 '</​limboth>' +5993 '<identifier>x</​identifier>' +5994 '<identifier>dx</​identifier>' +5995 '</​children>' +5996 '</​integral>' +5997 '</​children>' +5998 '</​relseq>');5999 this.executeTreeTest(6000 '<mi>\u222B</​mi><mi>\u222B</​mi><mi>\u222B</​mi><mi>dx</​mi><mi>dy</​mi><mi>dz</​mi>',6001 '<integral>' +6002 '<children>' +6003 '<largeop>\u222B</​largeop>' +6004 '<integral>' +6005 '<children>' +6006 '<largeop>\u222B</​largeop>' +6007 '<integral>' +6008 '<children>' +6009 '<largeop>\u222B</​largeop>' +6010 '<empty/​>' +6011 '<identifier>dx</​identifier>' +6012 '</​children>' +6013 '</​integral>' +6014 '<identifier>dy</​identifier>' +6015 '</​children>' +6016 '</​integral>' +6017 '<identifier>dz</​identifier>' +6018 '</​children>' +6019 '</​integral>');...

Full Screen

Full Screen

tupu.js

Source:tupu.js Github

copy

Full Screen

1import Mock from './​config'2Mock.mock(/​info\/​tupu/​,'get',options=>{3 console.log(options)4 return {5 "Status": "200",6 "Message": "查询成功",7 "OrderNumber": "ECIRELATION2018081714544389316056",8 "Result": {9 "Node": {10 "name": "海通证券股份有限公司",11 "KeyNo": "56777fa57d850f62a5225be7d974a17e",12 "Category": 1,13 "ShortName": "海通证券",14 "Count": 128,15 "Level": 0,16 "Children": [{17 "name": "对外投资",18 "KeyNo": null,19 "Category": 2,20 "ShortName": "对外投资",21 "Count": 70,22 "Level": 0,23 "Children": [{24 "name": "中证信用增进股份有限公司",25 "KeyNo": "195562be947d311ee4d170aceb6a296c",26 "Category": 2,27 "ShortName": "中证信用增进",28 "Count": 0,29 "Level": 1,30 "Children": null31 }, {32 "name": "海通证券股份有限公司深圳梅林路证券营业部",33 "KeyNo": "1f4c40f0ed97c3baea83c149396fe495",34 "Category": 2,35 "ShortName": "海通证券",36 "Count": 0,37 "Level": 1,38 "Children": null39 }, {40 "name": "海通证券股份有限公司深圳高新南四道证券营业部",41 "KeyNo": "afbc7aa4e7db21f68f132e01352e31fa",42 "Category": 2,43 "ShortName": "海通证券",44 "Count": 0,45 "Level": 1,46 "Children": null47 }, {48 "name": "证通股份有限公司",49 "KeyNo": "00db45cb036ece3cfbc3897ffe372e74",50 "Category": 2,51 "ShortName": "证通",52 "Count": 0,53 "Level": 1,54 "Children": null55 }, {56 "name": "海通证券股份有限公司深圳宝源路证券营业部",57 "KeyNo": "6b1f1f15f20c881879c41509b166f6c5",58 "Category": 2,59 "ShortName": "海通证券",60 "Count": 0,61 "Level": 1,62 "Children": null63 }, {64 "name": "上海惟泰置业管理有限公司",65 "KeyNo": "0745ac985805e5013d890c79bfab4973",66 "Category": 2,67 "ShortName": "惟泰置业",68 "Count": 0,69 "Level": 1,70 "Children": null71 }, {72 "name": "海通证券股份有限公司深圳深南大道证券营业部",73 "KeyNo": "6030d841e0b7b8bc34fcfd3ea310bea7",74 "Category": 2,75 "ShortName": "海通证券",76 "Count": 0,77 "Level": 1,78 "Children": null79 }, {80 "name": "上海海通证券资产管理有限公司",81 "KeyNo": "2dc36c7a5f117488be2adee032f5c770",82 "Category": 2,83 "ShortName": "海通证券资产",84 "Count": 0,85 "Level": 1,86 "Children": null87 }, {88 "name": "海通创新证券投资有限公司",89 "KeyNo": "420447e12564fb5e424809af5c99c472",90 "Category": 2,91 "ShortName": "海通创新证券",92 "Count": 0,93 "Level": 1,94 "Children": null95 }, {96 "name": "上海时光科技股份有限公司",97 "KeyNo": "1bb3cb0f2cf7830dc685465e91ebc3ae",98 "Category": 2,99 "ShortName": "上海时光",100 "Count": 0,101 "Level": 1,102 "Children": null103 }, {104 "name": "合肥嘉东光学股份有限公司",105 "KeyNo": "ec05f25a4e751abcf4a2c30ead6142ac",106 "Category": 2,107 "ShortName": "嘉东光学",108 "Count": 0,109 "Level": 1,110 "Children": null111 }, {112 "name": "北京星立方科技发展股份有限公司",113 "KeyNo": "ffc1d9c689efdda49cc57fae05590072",114 "Category": 2,115 "ShortName": "星立方科技发",116 "Count": 0,117 "Level": 1,118 "Children": null119 }, {120 "name": "北京聚能鼎力科技股份有限公司",121 "KeyNo": "10798ccf855a4e98d18078111b61142f",122 "Category": 2,123 "ShortName": "聚能鼎力",124 "Count": 0,125 "Level": 1,126 "Children": null127 }, {128 "name": "广东松本绿色新材股份有限公司",129 "KeyNo": "97d4e0e2636b2222de6d3d36ea1d8f62",130 "Category": 2,131 "ShortName": "松本绿色新材",132 "Count": 0,133 "Level": 1,134 "Children": null135 }, {136 "name": "海通证券股份有限公司深圳分公司",137 "KeyNo": "3d40214923e321c47afdb5ff7c94bbb3",138 "Category": 2,139 "ShortName": "海通证券",140 "Count": 0,141 "Level": 1,142 "Children": null143 }, {144 "name": "海通开元投资有限公司",145 "KeyNo": "a54d8f397f474591d06a6a16a1eaf0f7",146 "Category": 2,147 "ShortName": "海通开元投资",148 "Count": 0,149 "Level": 1,150 "Children": null151 }, {152 "name": "四川鱼鳞图信息技术股份有限公司",153 "KeyNo": "96097759f2c3d5486ee62722acb12c49",154 "Category": 2,155 "ShortName": "鱼鳞图信息技",156 "Count": 0,157 "Level": 1,158 "Children": null159 }, {160 "name": "中国中煤能源股份有限公司",161 "KeyNo": "9230cf099809fa150e3a80f1bc6ebafc",162 "Category": 2,163 "ShortName": "中煤能源",164 "Count": 0,165 "Level": 1,166 "Children": null167 }, {168 "name": "上海益盟软件技术股份有限公司",169 "KeyNo": "01c774cca57a2a243c089ceb281a3490",170 "Category": 2,171 "ShortName": "益盟软件技术",172 "Count": 0,173 "Level": 1,174 "Children": null175 }, {176 "name": "贵州黔驰信息股份有限公司",177 "KeyNo": "6a256d8dc7c0b6216173b049c20579d2",178 "Category": 2,179 "ShortName": "黔驰信息",180 "Count": 0,181 "Level": 1,182 "Children": null183 }, {184 "name": "安徽富煌钢构股份有限公司",185 "KeyNo": "b0d810110c1d62712f25bafa6bf7960f",186 "Category": 2,187 "ShortName": "富煌钢构",188 "Count": 0,189 "Level": 1,190 "Children": null191 }, {192 "name": "中国―比利时直接股权投资基金",193 "KeyNo": "1b6e0f2bb0fbc66404d555b61c06a6c9",194 "Category": 2,195 "ShortName": "―比利时直接",196 "Count": 0,197 "Level": 1,198 "Children": null199 }, {200 "name": "海富产业投资基金管理有限公司",201 "KeyNo": "f8b9cfddc01adc227ec7b5c093ad1948",202 "Category": 2,203 "ShortName": "海富产业投资",204 "Count": 0,205 "Level": 1,206 "Children": null207 }, {208 "name": "瑞康医药股份有限公司",209 "KeyNo": "97c2f68a930871fc66d5c4e585ca9c41",210 "Category": 2,211 "ShortName": "瑞康医药",212 "Count": 0,213 "Level": 1,214 "Children": null215 }, {216 "name": "上海辰光医疗科技股份有限公司",217 "KeyNo": "1ca13511a91a498e704440f7dfd353e9",218 "Category": 2,219 "ShortName": "辰光医疗",220 "Count": 0,221 "Level": 1,222 "Children": null223 }, {224 "name": "海富通基金管理有限公司",225 "KeyNo": "9d847a6dc9ca0ada7124c4df25bae41c",226 "Category": 2,227 "ShortName": "海富通基金",228 "Count": 0,229 "Level": 1,230 "Children": null231 }, {232 "name": "华昌达智能装备集团股份有限公司",233 "KeyNo": "e986b84525c98322b29035b740596783",234 "Category": 2,235 "ShortName": "华昌达智能装",236 "Count": 0,237 "Level": 1,238 "Children": null239 }, {240 "name": "环旭电子股份有限公司",241 "KeyNo": "bf178d305707db324c7845acecb7034b",242 "Category": 2,243 "ShortName": "环旭电子",244 "Count": 0,245 "Level": 1,246 "Children": null247 }, {248 "name": "北京昊华能源股份有限公司",249 "KeyNo": "3184e61178d3cb711f235300223e6b3f",250 "Category": 2,251 "ShortName": "昊华能源",252 "Count": 0,253 "Level": 1,254 "Children": null255 }, {256 "name": "上海策源置业顾问股份有限公司",257 "KeyNo": "e51bb9b3a3a95c8cbedcc0ce1ece5e9e",258 "Category": 2,259 "ShortName": "策源置业顾问",260 "Count": 0,261 "Level": 1,262 "Children": null263 }, {264 "name": "汉得利(常州)电子股份有限公司",265 "KeyNo": "c6e3f141d5fad6c299d72f7c830a269c",266 "Category": 2,267 "ShortName": "汉得利电子",268 "Count": 0,269 "Level": 1,270 "Children": null271 }, {272 "name": "上海美诺福科技股份有限公司",273 "KeyNo": "767e3d1b1a6f0375a81d243e8b78a788",274 "Category": 2,275 "ShortName": "美诺福",276 "Count": 0,277 "Level": 1,278 "Children": null279 }, {280 "name": "大同煤业股份有限公司",281 "KeyNo": "fb12fa7914412ed1fdf83b56febc189a",282 "Category": 2,283 "ShortName": "大同煤业",284 "Count": 0,285 "Level": 1,286 "Children": null287 }, {288 "name": "上海宝鼎投资股份有限公司",289 "KeyNo": "874e591224be57f5ed6d602ae7e5adeb",290 "Category": 2,291 "ShortName": "宝鼎投资",292 "Count": 0,293 "Level": 1,294 "Children": null295 }, {296 "name": "安源煤业集团股份有限公司",297 "KeyNo": "2820ccc953096c74fc1a0a1909bd54b8",298 "Category": 2,299 "ShortName": "煤业集团",300 "Count": 0,301 "Level": 1,302 "Children": null303 }, {304 "name": "贵州盘江精煤股份有限公司",305 "KeyNo": "f4cc2499c8d4e806dd82e49b149d180d",306 "Category": 2,307 "ShortName": "盘江精煤",308 "Count": 0,309 "Level": 1,310 "Children": null311 }, {312 "name": "云南万绿生物股份有限公司",313 "KeyNo": "d15da1b1f4dc8aa6c2466176fbe5eedc",314 "Category": 2,315 "ShortName": "万绿生物",316 "Count": 0,317 "Level": 1,318 "Children": null319 }, {320 "name": "富国基金管理有限公司",321 "KeyNo": "59129a4cabfae9f6a54121a7ffc40a69",322 "Category": 2,323 "ShortName": "富国基金",324 "Count": 0,325 "Level": 1,326 "Children": null327 }, {328 "name": "山西兰花科技创业股份有限公司",329 "KeyNo": "2b6ade1cedaf103ffc1fafeed5ac7a2a",330 "Category": 2,331 "ShortName": "兰花科技创业",332 "Count": 0,333 "Level": 1,334 "Children": null335 }, {336 "name": "浙江天松医疗器械股份有限公司",337 "KeyNo": "8b35cab83c4bd0c44cec41bcc7e75b28",338 "Category": 2,339 "ShortName": "天松医疗器械",340 "Count": 0,341 "Level": 1,342 "Children": null343 }, {344 "name": "上海鸣志电器股份有限公司",345 "KeyNo": "7b93aef192661e0751bf5ebcb1ca0539",346 "Category": 2,347 "ShortName": "鸣志电器",348 "Count": 0,349 "Level": 1,350 "Children": null351 }, {352 "name": "上海海联投资发展有限公司",353 "KeyNo": "885fc358990d6bb7010526ba1cc3980c",354 "Category": 2,355 "ShortName": "海联投资",356 "Count": 0,357 "Level": 1,358 "Children": null359 }, {360 "name": "云南铜业股份有限公司",361 "KeyNo": "b635bc55738f0947aed0fb3fbb88853c",362 "Category": 2,363 "ShortName": "云南铜业",364 "Count": 0,365 "Level": 1,366 "Children": null367 }, {368 "name": "中煤新集能源股份有限公司",369 "KeyNo": "fc485d7e292b45ed5b51cbacfe6c1c20",370 "Category": 2,371 "ShortName": "中煤新集能源",372 "Count": 0,373 "Level": 1,374 "Children": null375 }, {376 "name": "江苏雅克科技股份有限公司",377 "KeyNo": "51e84f1bed720783f1b947bdf3791a7e",378 "Category": 2,379 "ShortName": "江苏雅克",380 "Count": 0,381 "Level": 1,382 "Children": null383 }, {384 "name": "上海市农工商浦东总公司",385 "KeyNo": "82b73c574811820dcf59648c7439a53b",386 "Category": 2,387 "ShortName": "农工商浦东",388 "Count": 0,389 "Level": 1,390 "Children": null391 }, {392 "name": "上海林奇投资咨询有限公司",393 "KeyNo": "c11fe32f62a00c81e2a88dc73593b376",394 "Category": 2,395 "ShortName": "林奇投资咨询",396 "Count": 0,397 "Level": 1,398 "Children": null399 }, {400 "name": "上海世孚商务有限公司",401 "KeyNo": "896ac3f46e4db437753681dd2d3b011c",402 "Category": 2,403 "ShortName": "世孚商务",404 "Count": 0,405 "Level": 1,406 "Children": null407 }, {408 "name": "海通证券股份有限公司深圳景田路证券营业部",409 "KeyNo": "b8b7c302c4bcb0d2f466f68d43c71b7b",410 "Category": 2,411 "ShortName": "海通证券",412 "Count": 0,413 "Level": 1,414 "Children": null415 }, {416 "name": "国义招标股份有限公司",417 "KeyNo": "03ae78fa43cfdf11e9efa86613189001",418 "Category": 2,419 "ShortName": "国义招标",420 "Count": 0,421 "Level": 1,422 "Children": null423 }]424 }, {425 "name": "股东",426 "KeyNo": null,427 "Category": 3,428 "ShortName": "股东",429 "Count": 3,430 "Level": 0,431 "Children": [{432 "name": "无限售条件股份",433 "KeyNo": "56777fa57d850f62a5225be7d974a17e_无限售条件股份",434 "Category": 3,435 "ShortName": "机关法人",436 "Count": 0,437 "Level": 1,438 "Children": null439 }, {440 "name": "有限售条件股份",441 "KeyNo": "56777fa57d850f62a5225be7d974a17e_有限售条件股份",442 "Category": 3,443 "ShortName": "机关法人",444 "Count": 0,445 "Level": 1,446 "Children": null447 }, {448 "name": "其他股东",449 "KeyNo": "56777fa57d850f62a5225be7d974a17e_其他股东",450 "Category": 3,451 "ShortName": "其他投资者",452 "Count": 0,453 "Level": 1,454 "Children": null455 }]456 }, {457 "name": "高管",458 "KeyNo": null,459 "Category": 4,460 "ShortName": "高管",461 "Count": 24,462 "Level": 0,463 "Children": [{464 "name": "林家礼",465 "KeyNo": null,466 "Category": 4,467 "ShortName": "董事",468 "Count": 0,469 "Level": 0,470 "Children": null471 }, {472 "name": "胡海蓉",473 "KeyNo": null,474 "Category": 4,475 "ShortName": "监事",476 "Count": 0,477 "Level": 0,478 "Children": null479 }, {480 "name": "宋世浩",481 "KeyNo": null,482 "Category": 4,483 "ShortName": "监事",484 "Count": 0,485 "Level": 0,486 "Children": null487 }, {488 "name": "瞿秋平",489 "KeyNo": null,490 "Category": 4,491 "ShortName": "董事兼总经理",492 "Count": 0,493 "Level": 0,494 "Children": null495 }, {496 "name": "郑小芸",497 "KeyNo": null,498 "Category": 4,499 "ShortName": "监事",500 "Count": 0,501 "Level": 0,502 "Children": null503 }, {504 "name": "周杰",505 "KeyNo": null,506 "Category": 4,507 "ShortName": "董事长",508 "Count": 0,509 "Level": 0,510 "Children": null511 }, {512 "name": "邬跃舟",513 "KeyNo": null,514 "Category": 4,515 "ShortName": "董事",516 "Count": 0,517 "Level": 0,518 "Children": null519 }, {520 "name": "冯煌",521 "KeyNo": null,522 "Category": 4,523 "ShortName": "监事",524 "Count": 0,525 "Level": 0,526 "Children": null527 }, {528 "name": "许建国",529 "KeyNo": null,530 "Category": 4,531 "ShortName": "董事",532 "Count": 0,533 "Level": 0,534 "Children": null535 }, {536 "name": "张鸣",537 "KeyNo": null,538 "Category": 4,539 "ShortName": "董事",540 "Count": 0,541 "Level": 0,542 "Children": null543 }, {544 "name": "芮政先",545 "KeyNo": null,546 "Category": 4,547 "ShortName": "监事",548 "Count": 0,549 "Level": 0,550 "Children": null551 }, {552 "name": "宋春风",553 "KeyNo": null,554 "Category": 4,555 "ShortName": "监事",556 "Count": 0,557 "Level": 0,558 "Children": null559 }, {560 "name": "李林",561 "KeyNo": null,562 "Category": 4,563 "ShortName": "监事",564 "Count": 0,565 "Level": 0,566 "Children": null567 }, {568 "name": "程峰",569 "KeyNo": null,570 "Category": 4,571 "ShortName": "监事",572 "Count": 0,573 "Level": 0,574 "Children": null575 }, {576 "name": "吴红伟",577 "KeyNo": null,578 "Category": 4,579 "ShortName": "监事",580 "Count": 0,581 "Level": 0,582 "Children": null583 }, {584 "name": "沈铁冬",585 "KeyNo": null,586 "Category": 4,587 "ShortName": "董事",588 "Count": 0,589 "Level": 0,590 "Children": null591 }, {592 "name": "余莉萍",593 "KeyNo": null,594 "Category": 4,595 "ShortName": "董事",596 "Count": 0,597 "Level": 0,598 "Children": null599 }, {600 "name": "肖遂宁",601 "KeyNo": null,602 "Category": 4,603 "ShortName": "董事",604 "Count": 0,605 "Level": 0,606 "Children": null607 }, {608 "name": "张新玫",609 "KeyNo": null,610 "Category": 4,611 "ShortName": "董事",612 "Count": 0,613 "Level": 0,614 "Children": null615 }, {616 "name": "陈斌",617 "KeyNo": null,618 "Category": 4,619 "ShortName": "董事",620 "Count": 0,621 "Level": 0,622 "Children": null623 }, {624 "name": "陈辉峰",625 "KeyNo": null,626 "Category": 4,627 "ShortName": "监事",628 "Count": 0,629 "Level": 0,630 "Children": null631 }, {632 "name": "冯仑",633 "KeyNo": null,634 "Category": 4,635 "ShortName": "董事",636 "Count": 0,637 "Level": 0,638 "Children": null639 }, {640 "name": "刘志敏",641 "KeyNo": null,642 "Category": 4,643 "ShortName": "董事",644 "Count": 0,645 "Level": 0,646 "Children": null647 }, {648 "name": "王美娟",649 "KeyNo": null,650 "Category": 4,651 "ShortName": "监事",652 "Count": 0,653 "Level": 0,654 "Children": null655 }]656 }, {657 "name": "历史股东",658 "KeyNo": null,659 "Category": 8,660 "ShortName": "历史股东",661 "Count": 0,662 "Level": 0,663 "Children": null664 }, {665 "name": "历史法人",666 "KeyNo": null,667 "Category": 9,668 "ShortName": "历史法人",669 "Count": 1,670 "Level": 0,671 "Children": [{672 "name": "王开国",673 "KeyNo": null,674 "Category": 9,675 "ShortName": null,676 "Count": 0,677 "Level": 0,678 "Children": null679 }]680 }, {681 "name": "裁判文书",682 "KeyNo": null,683 "Category": 6,684 "ShortName": "裁判文书",685 "Count": 29,686 "Level": 0,687 "Children": [{688 "name": "河北百盛律师事务所",689 "KeyNo": "w24ce750b40e7a70e0d22a4ac9518708",690 "Category": 6,691 "ShortName": "海通证券",692 "Count": 0,693 "Level": 0,694 "Children": null695 }, {696 "name": "海通证券股份有限公司西安西新街证券营业部",697 "KeyNo": "8113bdda7e9f33ac995338a40387f0e3",698 "Category": 6,699 "ShortName": "海通证券",700 "Count": 0,701 "Level": 0,702 "Children": null703 }, {704 "name": "黑龙江省盛恒基房地产开发集团有限责任公司",705 "KeyNo": "854ebb143bba939284295da846cf1972",706 "Category": 6,707 "ShortName": "海通证券",708 "Count": 0,709 "Level": 0,710 "Children": null711 }, {712 "name": "海通证券股份有限公司绍兴劳动路证券营业部",713 "KeyNo": "e3de61d8b3f7b37af3f539fadc54368a",714 "Category": 6,715 "ShortName": "海通证券",716 "Count": 0,717 "Level": 0,718 "Children": null719 }, {720 "name": "海通证券有限公司",721 "KeyNo": "34b176fab493cb533c9868fc114ab9cf",722 "Category": 6,723 "ShortName": "海通证券",724 "Count": 0,725 "Level": 0,726 "Children": null727 }, {728 "name": "上海国泰君安证券资产管理有限公司",729 "KeyNo": "6262ee34e9ddd285812f52d66a3d5ae3",730 "Category": 6,731 "ShortName": "海通证券",732 "Count": 0,733 "Level": 0,734 "Children": null735 }, {736 "name": "辽宁欣泰股份有限公司",737 "KeyNo": "69ce27fe94bdd779b12f075e6e723fe6",738 "Category": 6,739 "ShortName": "海通证券",740 "Count": 0,741 "Level": 0,742 "Children": null743 }, {744 "name": "上海著清商务咨询有限公司",745 "KeyNo": "cbe0be0a816573e8948d53bf680c6709",746 "Category": 6,747 "ShortName": "海通证券",748 "Count": 0,749 "Level": 0,750 "Children": null751 }, {752 "name": "海通证券股份有限公司新余劳动南路证券营业部",753 "KeyNo": "6cb3040322d7acbc8bea4d4543bfe8a2",754 "Category": 6,755 "ShortName": "海通证券",756 "Count": 0,757 "Level": 0,758 "Children": null759 }, {760 "name": "上海苏宁云商销售有限公司",761 "KeyNo": "553977322a4266555452e568a24cf045",762 "Category": 6,763 "ShortName": "海通证券",764 "Count": 0,765 "Level": 0,766 "Children": null767 }, {768 "name": "吉林昊融集团股份有限公司",769 "KeyNo": "08853b65ebb39abaf86d0393f5852c15",770 "Category": 6,771 "ShortName": "海通证券",772 "Count": 0,773 "Level": 0,774 "Children": null775 }, {776 "name": "中投信用担保有限公司",777 "KeyNo": "0e713b9512d878ead20036b7e0832d28",778 "Category": 6,779 "ShortName": "海通证券",780 "Count": 0,781 "Level": 0,782 "Children": null783 }, {784 "name": "海通证券股份有限公司福州广达路证券营业部",785 "KeyNo": "edb841da32a9c85117085856ddf88753",786 "Category": 6,787 "ShortName": "海通证券",788 "Count": 0,789 "Level": 0,790 "Children": null791 }, {792 "name": "海通证券股份有限公司营口辽河大街证券营业部",793 "KeyNo": "bba8c820f4b941ed04f3024a055238d1",794 "Category": 6,795 "ShortName": "海通证券",796 "Count": 0,797 "Level": 0,798 "Children": null799 }, {800 "name": "海通证券股份有限公司上海普陀区宜川路证券营业部",801 "KeyNo": "a0561ea3366f8d72dbacafd218224868",802 "Category": 6,803 "ShortName": "海通证券",804 "Count": 0,805 "Level": 0,806 "Children": null807 }, {808 "name": "上海海通证券资产管理有限公司",809 "KeyNo": "2dc36c7a5f117488be2adee032f5c770",810 "Category": 6,811 "ShortName": "海通证券",812 "Count": 0,813 "Level": 0,814 "Children": null815 }, {816 "name": "海通证券股份有限公司深圳分公司红岭中路证券营业部",817 "KeyNo": "f02c6e9d56e8aa59146123504d606cc7",818 "Category": 6,819 "ShortName": "海通证券",820 "Count": 0,821 "Level": 0,822 "Children": null823 }, {824 "name": "武汉建工第三建筑有限公司",825 "KeyNo": "1c7fcaffce786c65678954e184c5d89c",826 "Category": 6,827 "ShortName": "海通证券",828 "Count": 0,829 "Level": 0,830 "Children": null831 }, {832 "name": "武汉红日升餐饮有限公司",833 "KeyNo": "5edeb8ed1f67943a9f7e5ba660a00d37",834 "Category": 6,835 "ShortName": "海通证券",836 "Count": 0,837 "Level": 0,838 "Children": null839 }, {840 "name": "海通证券股份有限公司呼和浩特新华东街证券营业部",841 "KeyNo": "06e451d599b6ad92d67118da27c5a622",842 "Category": 6,843 "ShortName": "海通证券",844 "Count": 0,845 "Level": 0,846 "Children": null847 }, {848 "name": "海通证券股份有限公司福州群众路证券营业部",849 "KeyNo": "edb841da32a9c85117085856ddf88753",850 "Category": 6,851 "ShortName": "海通证券",852 "Count": 0,853 "Level": 0,854 "Children": null855 }, {856 "name": "中国银河投资管理有限公司",857 "KeyNo": "c62b2a20020f45cf30acd00680b5df28",858 "Category": 6,859 "ShortName": "海通证券",860 "Count": 0,861 "Level": 0,862 "Children": null863 }, {864 "name": "易熹(深圳)基金管理有限公司",865 "KeyNo": "cd137e7eed6cab1ce87675992f4d9eae",866 "Category": 6,867 "ShortName": "海通证券",868 "Count": 0,869 "Level": 0,870 "Children": null871 }, {872 "name": "易熹(深圳)基金管理有限公司",873 "KeyNo": "cd137e7eed6cab1ce87675992f4d9eae",874 "Category": 6,875 "ShortName": "海通证券",876 "Count": 0,877 "Level": 0,878 "Children": null879 }, {880 "name": "海通证券股份有限公司深圳分公司",881 "KeyNo": "3d40214923e321c47afdb5ff7c94bbb3",882 "Category": 6,883 "ShortName": "海通证券",884 "Count": 0,885 "Level": 0,886 "Children": null887 }, {888 "name": "上海花神百货商店",889 "KeyNo": "d9ac6748de89e4d228ba311b3402820c",890 "Category": 6,891 "ShortName": "海通证券",892 "Count": 0,893 "Level": 0,894 "Children": null895 }, {896 "name": "上海世茂股份有限公司",897 "KeyNo": "fdf7152d4fdbed7e20073111380ab099",898 "Category": 6,899 "ShortName": "海通证券",900 "Count": 0,901 "Level": 0,902 "Children": null903 }, {904 "name": "武汉市住房保障和房屋管理局",905 "KeyNo": "g41549c2201cb46a7e190274d9e15c93",906 "Category": 6,907 "ShortName": "海通证券",908 "Count": 0,909 "Level": 0,910 "Children": null911 }, {912 "name": "武汉瑞发房地产开发有限公司",913 "KeyNo": "6f6707446f97ea5fa1b73e53056d598a",914 "Category": 6,915 "ShortName": "海通证券",916 "Count": 0,917 "Level": 0,918 "Children": null919 }]920 }, {921 "name": "法院公告",922 "KeyNo": null,923 "Category": 5,924 "ShortName": "法院公告",925 "Count": 1,926 "Level": 0,927 "Children": [{928 "name": "威海赛文贸易有限公司",929 "KeyNo": "6c24f8e33c4e06a101e19f34056ab406",930 "Category": 5,931 "ShortName": "赛文贸易",932 "Count": 0,933 "Level": 0,934 "Children": null935 }]936 }]937 }938 }939 }...

Full Screen

Full Screen

help-center.js

Source:help-center.js Github

copy

Full Screen

1import LF from 'LF';2import Vue from 'vue';3/​/​引入公共的header和footer4import LfHeader from '../​../​../​components/​header_new.vue';5import LfFooter from '../​../​../​components/​footer.vue';6import LfSearch from '../​../​../​components/​search.vue';7import {Message, Card,Carousel,CarouselItem,Tree,Select,Button} from 'element-ui' ;8Vue.use(Card)9Vue.use(Carousel)10Vue.use(CarouselItem)11Vue.use(Tree)12Vue.use(Select)13Vue.use(Button)14new Vue({15 el: '#app',16 data: {17 searchStr:'', 18 show:false,19 introduce:false, /​/​关于蓝山20 management:false, /​/​经营理念21 recruit:false, /​/​招贤纳士22 aboutMarket:false, /​/​关于袋鼠集市23 integral:false, /​/​通用积分24 understandInt:false, /​/​了解积分25 intRule:false, /​/​积分规则26 distribution:false, /​/​会员分享消费27 settled:false, /​/​商家入驻28 user:false, /​/​用户29 vip:false, /​/​分销会员30 shop:false, /​/​商户31 operate:false, /​/​运营中心32 opipion:false, /​/​意见建议33 registration:false, /​/​用户注册协议34 privacy:false, /​/​隐私政策35 contactUS:false, /​/​联系我们36 customer:false, /​/​客服服务37 helpMsg: [{38 label: '关于我们',39 children: [{40 label: '>关于蓝山集势', 41 },{42 label: '>经营理念',43 },{44 label: '>招贤纳士',45 }]46 },{47 label: '袋鼠集市',48 children: [{49 label: '>关于袋鼠集市', 50 },{51 label: '>通用积分',52 },{53 label: '>了解积分',54 },{55 label: '>积分规则',56 },{57 label: '>会员分享消费',58 },{59 label: '>商家入驻',60 }]61 },{62 label: '合作推广',63 children: [{64 label: '>用户', 65 },{66 label: '>分销会员',67 },{68 label: '>商户',69 },{70 label: '>运营中心',71 }]72 },{73 label: '意见反馈',74 children: [{75 label: '>意见建议', 76 },{77 label: '>用户注册协议',78 },{79 label: '>隐私政策',80 }]81 },{82 label: '联系我们',83 children: [{84 label: '>联系我们', 85 },{86 label: '>客服服务',87 }]88 }], 89 defaultProps: {90 children: 'children',91 label: 'label'92 } 93 },94 methods: {95 handleNodeClick(data,node,item) {console.log(data,node,item,'-------------------------------------------------------------------------------------------------');96 /​/​所有tree元素97 /​/​ var tree = document.getElementsByClassName('el-tree');console.log(tree,'tree=============');98 /​/​ /​/​关于我们99 /​/​ var about = document.getElementById('about');console.log(about,typeof(about),about instanceof Object)100 /​/​ var abNodes = about.getElementsByClassName('el-tree-node');console.log(abNodes)101 /​/​ /​/​袋鼠集市102 /​/​ var market = document.getElementById('market');console.log(market)103 /​/​ var maNodes = market.getElementsByClassName('el-tree-node');console.log(maNodes)104 /​/​ /​/​合作推广105 /​/​ var cooperation = document.getElementById('cooperation');console.log(cooperation)106 /​/​ var coNodes = cooperation.getElementsByClassName('el-tree-node');console.log(coNodes)107 /​/​ /​/​意见反馈108 /​/​ var opinion = document.getElementById('opinion');console.log(opinion)109 /​/​ var opNodes = opinion.getElementsByClassName('el-tree-node');console.log(abNodes)110 /​/​ /​/​联系我们111 /​/​ var contact = document.getElementById('contact');console.log(contact)112 /​/​ var coNodes = contact.getElementsByClassName('el-tree-node');console.log(coNodes,'------------------------------------->') 113 /​/​ node.parent.childNodes.forEach(function(item,index){114 /​/​ if(data.label == item.data.label ){115 /​/​ console.log(item,data.label,index);116 /​/​ if(node.parent.data.label == '关于我们'){ console.log(abNodes[index+1],'关于我们')117 /​/​ console.log(abNodes[index+1].innerText) 118 /​/​ }else if (node.parent.data.label == '袋鼠集市') { console.log(maNodes[index+1])119 120 /​/​ }121 /​/​ }122 /​/​ });123 124 125 /​/​ console.log(about.getElementsByClassName('el-tree-node__content')[0],123)126 /​/​ console.log(this);127 /​/​ this.show = true;128 if(data.label == ">关于蓝山集势"){this.introduce = true;this.$refs.tree.$children[0].$children[1].$el.style.color= '#f37e01';}else{this.introduce = false;this.$refs.tree.$children[0].$children[1].$el.style.color= ''};129 if(data.label == ">经营理念"){this.management = true;this.$refs.tree.$children[0].$children[2].$el.style.color= '#f37e01';}else{this.management = false;this.$refs.tree.$children[0].$children[2].$el.style.color= ''}; 130 if(data.label == ">招贤纳士"){this.recruit = true;this.$refs.tree.$children[0].$children[3].$el.style.color= '#f37e01';}else{this.recruit = false;this.$refs.tree.$children[0].$children[3].$el.style.color= ''};131 if(data.label == ">关于袋鼠集市"){this.aboutMarket = true;this.$refs.tree.$children[1].$children[1].$el.style.color= '#f37e01';}else{this.aboutMarket = false;this.$refs.tree.$children[1].$children[1].$el.style.color= '';};132 if(data.label == ">通用积分"){this.integral = true;this.$refs.tree.$children[1].$children[2].$el.style.color= '#f37e01';}else{this.integral = false;this.$refs.tree.$children[1].$children[2].$el.style.color= '';};133 if(data.label == ">了解积分"){this.understandInt = true;this.$refs.tree.$children[1].$children[3].$el.style.color= '#f37e01';}else{this.understandInt = false;this.$refs.tree.$children[1].$children[3].$el.style.color= '';};134 if(data.label == ">积分规则"){this.intRule = true;this.$refs.tree.$children[1].$children[4].$el.style.color= '#f37e01';}else{this.intRule = false;this.$refs.tree.$children[1].$children[4].$el.style.color= '';};135 if(data.label == ">会员分享消费"){this.distribution = true;this.$refs.tree.$children[1].$children[5].$el.style.color= '#f37e01';}else{this.distribution = false;this.$refs.tree.$children[1].$children[5].$el.style.color= '';};136 if(data.label == ">商家入驻"){this.settled = true;this.$refs.tree.$children[1].$children[6].$el.style.color= '#f37e01';}else{this.settled = false;this.$refs.tree.$children[1].$children[6].$el.style.color= '';};137 if(data.label == ">用户"){this.user = true;this.$refs.tree.$children[2].$children[1].$el.style.color= '#f37e01';}else{this.user = false;this.$refs.tree.$children[2].$children[1].$el.style.color= '';};138 if(data.label == ">分销会员"){this.vip = true;this.$refs.tree.$children[2].$children[2].$el.style.color= '#f37e01';}else{this.vip = false;this.$refs.tree.$children[2].$children[2].$el.style.color= '';};139 if(data.label == ">商户"){this.shop = true;this.$refs.tree.$children[2].$children[3].$el.style.color= '#f37e01';}else{this.shop = false;this.$refs.tree.$children[2].$children[3].$el.style.color= '';};140 if(data.label == ">运营中心"){this.operate = true;this.$refs.tree.$children[2].$children[4].$el.style.color= '#f37e01';}else{this.operate = false;this.$refs.tree.$children[2].$children[4].$el.style.color= '';};141 if(data.label == ">意见建议"){this.opipion = true;this.$refs.tree.$children[3].$children[1].$el.style.color= '#f37e01'}else{this.opipion = false;this.$refs.tree.$children[3].$children[1].$el.style.color= ''};142 if(data.label == ">用户注册协议"){this.registration = true;this.$refs.tree.$children[3].$children[2].$el.style.color= '#f37e01'}else{this.registration = false;this.$refs.tree.$children[3].$children[2].$el.style.color= ''};143 if(data.label == ">隐私政策"){this.privacy = true;this.$refs.tree.$children[3].$children[3].$el.style.color= '#f37e01'}else{this.privacy = false;this.$refs.tree.$children[3].$children[3].$el.style.color= ''};144 if(data.label == ">联系我们"){this.contactUS = true;this.$refs.tree.$children[4].$children[1].$el.style.color= '#f37e01'}else{this.contactUS = false;this.$refs.tree.$children[4].$children[1].$el.style.color= ''};145 if(data.label == ">客服服务"){this.customer = true;this.$refs.tree.$children[4].$children[2].$el.style.color= '#f37e01'}else{this.customer = false;this.$refs.tree.$children[4].$children[2].$el.style.color= ''};146 },147 getName:function(name){'>'+name148 if('>'+name == ">关于蓝山集势"){this.introduce = true;this.$refs.tree.$children[0].node.expanded = true;this.$refs.tree.$children[0].$children[1].$el.style.color= '#f37e01';}else{this.aboutMarket = false;this.$refs.tree.$children[1].$children[1].$el.style.color= '';};149 if('>'+name == ">经营理念"){this.management = true;this.$refs.tree.$children[0].node.expanded = true;this.$refs.tree.$children[0].$children[2].$el.style.color= '#f37e01';}else{this.management = false;this.$refs.tree.$children[0].$children[2].$el.style.color= ''}; 150 if('>'+name == ">招贤纳士"){this.recruit = true;this.$refs.tree.$children[0].node.expanded = true;this.$refs.tree.$children[0].$children[3].$el.style.color= '#f37e01';}else{this.recruit = false;this.$refs.tree.$children[0].$children[3].$el.style.color= ''};151 if('>'+name == ">关于袋鼠集市"){this.aboutMarket = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[1].$el.style.color= '#f37e01';}else{this.aboutMarket = false;this.$refs.tree.$children[1].$children[1].$el.style.color= '';};152 if('>'+name == ">通用积分"){this.integral = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[2].$el.style.color= '#f37e01';}else{this.integral = false;this.$refs.tree.$children[1].$children[2].$el.style.color= '';};153 if('>'+name == ">了解积分"){this.understandInt = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[3].$el.style.color= '#f37e01';}else{this.understandInt = false;this.$refs.tree.$children[1].$children[3].$el.style.color= '';};154 if('>'+name == ">积分规则"){this.intRule = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[4].$el.style.color= '#f37e01';}else{this.intRule = false;this.$refs.tree.$children[1].$children[4].$el.style.color= '';};155 if('>'+name == ">会员分享消费"){this.distribution = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[5].$el.style.color= '#f37e01';}else{this.distribution = false;this.$refs.tree.$children[1].$children[5].$el.style.color= '';};156 if('>'+name == ">商家入驻"){this.settled = true;this.$refs.tree.$children[1].node.expanded = true;this.$refs.tree.$children[1].$children[6].$el.style.color= '#f37e01';}else{this.settled = false;this.$refs.tree.$children[1].$children[6].$el.style.color= '';};157 if('>'+name == ">用户"){this.user = true;this.$refs.tree.$children[2].node.expanded = true;this.$refs.tree.$children[2].$children[1].$el.style.color= '#f37e01';}else{this.user = false;this.$refs.tree.$children[2].$children[1].$el.style.color= '';};158 if('>'+name == ">分销会员"){this.vip = true;this.$refs.tree.$children[2].node.expanded = true;this.$refs.tree.$children[2].$children[2].$el.style.color= '#f37e01';}else{this.vip = false;this.$refs.tree.$children[2].$children[2].$el.style.color= '';};159 if('>'+name == ">商户"){this.shop = true;this.$refs.tree.$children[2].node.expanded = true;this.$refs.tree.$children[2].$children[3].$el.style.color= '#f37e01';}else{this.shop = false;this.$refs.tree.$children[2].$children[3].$el.style.color= '';};160 if('>'+name == ">运营中心"){this.operate = true;this.$refs.tree.$children[2].node.expanded = true;this.$refs.tree.$children[2].$children[4].$el.style.color= '#f37e01';}else{this.operate = false;this.$refs.tree.$children[2].$children[4].$el.style.color= '';};161 if('>'+name == ">意见建议"){this.opipion = true;this.$refs.tree.$children[3].node.expanded = true;this.$refs.tree.$children[3].$children[1].$el.style.color= '#f37e01'}else{this.opipion = false;this.$refs.tree.$children[3].$children[1].$el.style.color= ''};162 if('>'+name == ">用户注册协议"){this.registration = true;this.$refs.tree.$children[3].node.expanded = true;this.$refs.tree.$children[3].$children[2].$el.style.color= '#f37e01'}else{this.registration = false;this.$refs.tree.$children[3].$children[2].$el.style.color= ''};163 if('>'+name == ">隐私政策"){this.privacy = true;this.$refs.tree.$children[3].node.expanded = true;this.$refs.tree.$children[3].$children[3].$el.style.color= '#f37e01'}else{this.privacy = false;this.$refs.tree.$children[3].$children[3].$el.style.color= ''};164 if('>'+name == ">联系我们"){this.contactUS = true;this.$refs.tree.$children[4].node.expanded = true;this.$refs.tree.$children[4].$children[1].$el.style.color= '#f37e01'}else{this.contactUS = false;this.$refs.tree.$children[4].$children[1].$el.style.color= ''};165 if('>'+name == ">客服服务"){this.customer = true;this.$refs.tree.$children[4].node.expanded = true;this.$refs.tree.$children[4].$children[2].$el.style.color= '#f37e01'; }else{this.customer = false;this.$refs.tree.$children[4].$children[2].$el.style.color= ''};166 167 },168 check(q,w,e){169 console.log(q,w,e)170 },171 isShow:function(){172 alert(123)173 },174 remove:function(store, data) { 175 store.remove(data); 176 }, 177 renderContent:function(createElement, { node, data, store }) { 178 var self = this; 179 return createElement('span', [ 180 createElement('span', node.label), 181 createElement('span', {attrs:{ 182 style:"float: right; margin-right: 20px" 183 }},[ 184 createElement('el-button',{attrs:{ 185 size:"mini" 186 },on:{ 187 click:function() { 188 console.info("点击了节点" + data.id + "的添加按钮"); 189 store.append({ id: self.baseId++, label: 'testtest', children: [] }, data); 190 } 191 }},"添加"), 192 createElement('el-button',{attrs:{ 193 size:"mini" 194 },on:{ 195 click:function() { 196 console.info("点击了节点" + data.id + "的删除按钮"); 197 store.remove(data); 198 } 199 }},"删除"), 200 ]), 201 ]); 202 } ,203 closeService(){204 var mapEle = document.getElementById("Map");205 var parentEle = mapEle.parentNode;206 parentEle.style.display = "none";207 },208 onlineSale(){209 LF.net.getJSON("sys/​after/​sale", {}, function(res) {210 var href="";211 if(res.code==='000'){212 /​/​href = "http:/​/​wpa.qq.com/​msgrd?v=3&uin="+res.data.qq+"&site=qq&menu=yes";213 href="tencent:/​/​message/​?uin="+res.data.qq+"&Site=qq&Menu=yes"214 window.open(href);215 }else{216 console.log(res.errorMessage);217 }218 });219 },220 go(url) {221 LF.window.openWindow(url);222 },223 doSearch(){224 if (this.searchStr == ''){225 Message({226 type: 'warning',227 message:"请输入门牌号!"228 });229 return;230 }231 LF.net.getJSON("/​store/​data/​details", { houseNumber:this.searchStr }, res => {232 if(res.code == "000") {233 let storeId = res.data.id;234 if (storeId == ''){235 Message({236 type: 'warning',237 message:"未找到对应的实体店,请重新输入!"238 });239 return;240 }241 LF.window.openWindow("/​app/​pages/​store/​storeshop.html?houseNumber="+this.searchStr + "&merchantId=" + storeId,"_self");242 } else {243 Message({244 type: 'warning',245 message:"未找到对应的实体店,请重新输入!"246 });247 }248 }, res => {249 Message({250 type: 'error',251 message:res.errorMessage252 });253 console.log("error:" + JSON.stringify(res));254 });255 }, 256 },257 beforeMount(){258 },259 mounted() {console.log(location.href)260 var name = location.hash.replace('#','');console.log(name,5555);console.log(this.$refs.tree,147);261 name = decodeURI(name);console.log(name,666) 262 this.getName(name);263 264 console.log(this.$refs.tree.$children[0].$children[1].$el);265 /​/​ this.$refs.tree.$children[0].$children[1].$el.style.color = 'red';266 /​/​ this.$refs.tree.$children[0].$children[1].$el.setAttribute('class', 'active');267 },268components: {269 LfHeader,270 LfSearch,271 LfFooter272},...

Full Screen

Full Screen

sense.js

Source:sense.js Github

copy

Full Screen

1/​/​keyCode 值 左上右下 37--402let people = document.querySelector("#people");3let sense_one = document.querySelector(".sense_one"); /​/​ 场景一4let sense_two = document.querySelector(".sense_two"); /​/​ 场景二5let sense_three = document.querySelector(".sense_three"); /​/​ 场景三6let sense_four = document.querySelector(".sense_four"); /​/​ 场景四7let is_sense_two = false; /​/​ 是否解锁场景二8let is_sense_three = false; /​/​ 是否解锁场景三9let is_sense_four = false; /​/​ 是否解锁场景四10let is_left = false; /​/​ 是否可以往左边查看前面的场景11let isMove = {12 left: "false",13 top: "false",14 right: "false",15 bottom: "false"16};17/​/​ 一开始场景二,三,四隐藏18sense_two.classList.add("displayNone");19sense_three.classList.add("displayNone");20sense_four.classList.add("displayNone");21/​/​ alert(people.offsetWidth);22document.onkeydown = function(ev) {23 var ev = ev || event;24 if (ev.keyCode == 37) {25 isMove["left"] = true;26 }27 if (ev.keyCode == 38) {28 isMove["top"] = true;29 }30 if (ev.keyCode == 39) {31 isMove["right"] = true;32 }33 if (ev.keyCode == 40) {34 isMove["bottom"] = true;35 }36};37document.onkeyup = function() {38 var ev = ev || event;39 if (ev.keyCode == 37) {40 isMove["left"] = false;41 }42 if (ev.keyCode == 38) {43 isMove["top"] = false;44 }45 if (ev.keyCode == 39) {46 isMove["right"] = false;47 }48 if (ev.keyCode == 40) {49 isMove["bottom"] = false;50 }51};52/​/​ currentPage当前用户在看哪一页53let currentPage = 1;54/​/​ 初始化第一场景的样式55sense_one_init();56setInterval(function() {57 if (isMove["left"] == true) {58 let left = people.getBoundingClientRect().left; /​/​ 元素距离左边的距离59 if (left <= 0) {60 if (is_left == true && currentPage == 4) {61 currentPage = 3;62 removeDisplay(sense_four);63 sense_four.classList.add("displayNone");64 sense_three.classList.add("displayBlock"); /​/​显示场景三65 removeAnimation(sense_three);66 sense_three.classList.add("animationRight");67 /​/​ sense_three.style.left = 0; /​/​显示场景三68 } else if (is_left == true && currentPage == 3) {69 currentPage = 2;70 removeDisplay(sense_three);71 sense_three.classList.add("displayNone");72 sense_two.classList.add("displayBlock"); /​/​显示场景二73 removeAnimation(sense_two);74 sense_two.classList.add("animationRight");75 /​/​ sense_two.style.left = 0; /​/​显示场景二76 } else if (is_left == true && currentPage == 2) {77 currentPage = 1;78 removeDisplay(sense_two);79 sense_two.classList.add("displayNone");80 sense_one.classList.add("displayBlock"); /​/​显示场景一81 /​/​显示场景一82 removeAnimation(sense_one);83 sense_one.classList.add("animationRight");84 }85 people.style.left = window.innerWidth - people.offsetWidth + "px"; /​/​ 左边滑块滑到最左边,重置为右边86 } else {87 people.style.left = people.offsetLeft - 10 + "px";88 }89 }90 /​/​ if (isMove["top"] == true) {91 /​/​ let top = people.getBoundingClientRect().top;92 /​/​ people.style.top = people.offsetTop - 10 + "px";93 /​/​ }94 if (isMove["right"] == true) {95 console.log(currentPage);96 let right = people.getBoundingClientRect().right; /​/​ 元素距离右边的距离97 /​/​ let activityDistance = window.innerWidth - people.offsetWidth; /​/​ 可移动距离98 /​/​ 判断是否达到最右端99 if (right >= window.innerWidth) {100 people.style.left = people.offsetWidth + "px";101 is_sense_two = true; /​/​ 开启场景二102 if (is_sense_two == true && currentPage == 1) {103 /​/​ 如果是第一场景而且是从右边过去的就是切换第二场景104 currentPage = 2;105 /​/​ 移除场景一106 removeAnimation(sense_one);107 sense_one.classList.add("animationLeft");108 sense_two.classList.remove("displayNone");109 sense_two.classList.add("displayBlock");110 /​/​ 执行场景二的样式111 excutedAnimationTwo( 112 sense_two.children[0].children[0],113 sense_two.children[0].children[1],114 sense_two.children[1].children[0].children[0].children[0],115 sense_two.children[1].children[0].children[1],116 sense_two.children[1].children[0].children[1].children[3].children[0],117 sense_two.children[1].children[0].children[1].children[3].children[1],118 sense_two.children[1].children[0].children[1].children[3].children[2],119 sense_two.children[1].children[1].children[0].children[0],120 sense_two.children[1].children[1].children[1],121 sense_two.children[1].children[1].children[1].children[3].children[0],122 sense_two.children[1].children[1].children[1].children[3].children[1],123 sense_two.children[1].children[1].children[1].children[3].children[2],124 sense_two.children[1].children[2].children[0].children[0],125 sense_two.children[1].children[2].children[1],126 sense_two.children[1].children[2].children[1].children[3].children[0],127 sense_two.children[1].children[2].children[1].children[3].children[1],128 sense_two.children[1].children[2].children[1].children[3].children[2]129 );130 is_sense_three = true; /​/​ 开启场景三131 /​/​ is_left = true; /​/​ 可以查看之前的场景132 } else if (is_sense_three == true && currentPage == 2) {133 /​/​ 当前页是2且是解锁了场景三134 currentPage = 3; /​/​ 当前页是3135 /​/​ sense_two.style.left = "-5000px"; /​/​ 移除场景二136 removeAnimation(sense_two);137 sense_two.classList.add("animationLeft");138 sense_three.classList.remove("displayNone"); /​/​ 有这个样式首先移除139 sense_three.classList.add("displayBlock"); /​/​ 显示场景三140 /​/​ 依次执行第三场景的样式141 excutedAnimationThree(142 sense_three.children[1].children[0],143 sense_three.children[1].children[2],144 sense_three.children[1].children[1],145 sense_three.children[1].children[1].children[0].children[0].children[1],146 sense_three.children[1].children[1].children[0].children[0].children[0],147 sense_three.children[1].children[1].children[0].children[1].children[1],148 sense_three.children[1].children[1].children[0].children[1].children[0],149 sense_three.children[1].children[1].children[0].children[2].children[1],150 sense_three.children[1].children[1].children[0].children[2].children[0],151 sense_three.children[1].children[1].children[0].children[3].children[1],152 sense_three.children[1].children[1].children[0].children[3].children[0],153 sense_three.children[1].children[1].children[0].children[4].children[1],154 sense_three.children[1].children[1].children[0].children[4].children[0],155 sense_three.children[1].children[1].children[0].children[5].children[1],156 sense_three.children[1].children[1].children[0].children[5].children[0],157 sense_three.children[1].children[1].children[0].children[6].children[1],158 sense_three.children[1].children[1].children[0].children[6].children[0]159 ); 160 is_sense_four = true; /​/​ 开启场景四161 } else if (is_sense_four == true && currentPage == 3) {162 /​/​ 当前页是3且是解锁了场景四163 sense_three.style.left = "-5000px"; /​/​ 移除场景三164 removeAnimation(sense_three);165 sense_three.classList.add("animationLeft");166 removeDisplay(sense_four);167 sense_four.classList.add("displayBlock"); /​/​ 显示场景四168 currentPage = 4; /​/​当前页是第4169 }170 } else {171 people.style.left = people.offsetLeft + 10 + "px";172 }173 }174 /​/​ if (isMove["bottom"] == true) {175 /​/​ people.style.top = people.offsetTop + 10 + "px";176 /​/​ }177}, 30);178/​/​ 第一场景的样式179function sense_one_init() {180 console.log(sense_one.children[1].children[2]);181 /​/​ 一开始隐藏所有的元素182 sense_one.children[0].children[1].classList.add("displayNone"); /​/​ 关于我的挂牌183 sense_one.children[1].children[0].children[0].classList.add("displayNone"); /​/​ 标签一184 sense_one.children[1].children[0].children[1].classList.add("displayNone"); /​/​ 标签二185 sense_one.children[1].children[1].children[0].classList.add("displayNone"); /​/​ 标签三186 sense_one.children[1].children[1].children[1].classList.add("displayNone"); /​/​ 标签四187 sense_one.children[1].children[2].classList.add("opacity0"); /​/​ 标签五188 sense_one.children[0].children[0].classList.add("lineAnimation"); /​/​ 页面一打开就添加线条样式189 sense_one.children[0].children[0].addEventListener(190 "animationend",191 function() {192 /​/​ 线条动画结束title出来193 display(sense_one.children[0].children[1]);194 excutedAnimation(195 sense_one.children[1].children[0].children[0],196 sense_one.children[1].children[0].children[1],197 sense_one.children[1].children[1].children[0],198 sense_one.children[1].children[1].children[1],199 sense_one.children[1].children[2]200 );201 }202 );203 sense_one.children[0].children[1].addEventListener(204 "animationend",205 function() {206 display(sense_one.children[1].children[0].children[0]); /​/​ 把挂牌显示出来207 }208 );209}210function removeDisplay(obj) {211 /​/​ 删除场景原有的样式212 if (obj.className.indexOf("displayNone") > -1) {213 obj.classList.remove("displayNone"); /​/​ 有这个样式首先移除214 }215 if (obj.className.indexOf("displayBlock") > -1) {216 obj.classList.remove("displayBlock");217 }218}219function removeAnimation(obj) { /​/​ 移除场景之前的动画220 if (obj.className.indexOf("animationLeft") > -1) {221 obj.classList.remove("animationLeft");222 }223 if (obj.className.indexOf("animationRight") > -1) {224 obj.classList.remove("animationRight");225 }226}227function display(obj) { /​/​ 显示标签出来228 let classs = obj.getAttribute("class").replace("displayNone", "displayBlock");229 obj.setAttribute("class", classs);230}231function addAnimation(obj,animation) { /​/​ 添加动画232 obj.classList.add(animation);233}234 /​/​ 异步执行每帧动画(第一场景)235async function excutedAnimation(label1,label2,label3,label4,label5) {236 new Promise(resolve=>{237 display(label1); /​/​ 把标签一显示出来238 addAnimation(label1,'leftIn'); /​/​ 给第一个标签添加动画239 label1.addEventListener('animationend',function(){240 resolve('ok');241 });242 }).then(resolve => {243 display(label2); /​/​ 把标签二显示出来244 addAnimation(label2,'rightIn'); /​/​ 把第二个标签添加动画245 label2.addEventListener('animationend',function(){246 display(label3); /​/​ 把标签三显示出来247 addAnimation(label3, 'leftIn'); /​/​ 把第三个标签添加动画248 label3.addEventListener('animationend', function () {249 display(label4); /​/​ 把标签四显示出来250 addAnimation(label4, 'rightIn'); /​/​ 把第四个标签添加动画251 label4.addEventListener('animationend',function(){252 let classs = label5.getAttribute("class").replace("opacity0", "opacity1");253 label5.setAttribute("class", classs);254 });255 });256 });257 })258}259/​/​ 异步执行每帧动画(第二场景)260async function excutedAnimationTwo261(line,262 title,263 lable1_line,264 label1_content,265 label1_content_star1,266 label1_content_star2,267 label1_content_star3,268 label2_line,269 label2_content,270 label2_content_star1,271 label2_content_star2,272 label2_content_star3,273 label3_line,274 label3_content,275 label3_content_star1,276 label3_content_star2,277 label3_content_star3278 ){279 new Promise(resolve => {280 /​/​ 一开始隐藏我的挂牌281 title.classList.add("displayNone");282 /​/​ 线条动画283 addAnimation(line, 'lineAnimation');284 line.addEventListener('animationend', function () {285 /​/​ 挂牌显示出来并添加动画286 removeDisplay(title);287 addAnimation(title,'content');288 resolve('ok');289 });290 }).then(res=>{291 addAnimation(lable1_line, 'animationLineFormLeft');292 lable1_line.addEventListener('animationend',function(){293 addAnimation(label1_content,'opacity11');294 addAnimation(label1_content_star1, 'animationStarMoveLeft');295 addAnimation(label1_content_star2, 'animationStarMoveRight');296 addAnimation(label1_content_star3, 'animationStarMoveLeft');297 label1_content.addEventListener('animationend',function(){298 addAnimation(label2_line,'animationLineFormRight');299 addAnimation(label2_content_star1, 'animationStarMoveLeft');300 addAnimation(label2_content_star2, 'animationStarMoveRight');301 addAnimation(label2_content_star3, 'animationStarMoveLeft');302 label2_line.addEventListener('animationend',function(){303 addAnimation(label2_content, 'opacity11');304 label2_content.addEventListener('animationend',function(){305 addAnimation(label3_line,'animationLineFormLeft');306 addAnimation(label3_content_star1, 'animationStarMoveLeft');307 addAnimation(label3_content_star2, 'animationStarMoveRight');308 addAnimation(label3_content_star3, 'animationStarMoveLeft');309 label3_line.addEventListener('animationend',function(){310 addAnimation(label3_content, 'opacity11');311 });312 });313 });314 });315 })316 317 })318 319 320}321/​/​ 异步执行每帧动画(第三场景)322async function excutedAnimationThree(323 left_line,324 right_line,325 language,326 label1_line,327 label1_content,328 label2_line,329 label2_content,330 label3_line,331 label3_content,332 label4_line,333 label4_content,334 label5_line,335 label5_content,336 label6_line,337 label6_content,338 label7_line,339 label7_content){340 /​/​ new Promise(resolve=>{341 addAnimation(left_line,'three_lineFormLeft');342 addAnimation(right_line, 'three_lineFormRight');343 left_line.addEventListener('animationend',function(){344 addAnimation(language, 'opacity11');345 language.addEventListener('animationend',function(){346 addAnimation(label1_line,'three_fontLine');347 label1_line.addEventListener('animationend',function(){348 addAnimation(label1_content,'opacity11');349 label1_content.addEventListener('animationend', function () {350 addAnimation(label2_line, 'three_fontLine');351 label2_line.addEventListener('animationend',function(){352 addAnimation(label2_content, 'opacity11');353 label2_content.addEventListener('animationend',function(){354 addAnimation(label3_line,'three_fontLine');355 label3_line.addEventListener('animationend',function(){356 addAnimation(label3_content,'opacity11');357 label3_content.addEventListener('animationend', function () {358 addAnimation(label4_line, 'three_fontLine');359 label4_line.addEventListener('animationend', function () {360 addAnimation(label4_content, 'opacity11');361 label4_content.addEventListener('animationend', function () {362 addAnimation(label5_line, 'three_fontLine');363 label5_line.addEventListener('animationend', function () {364 addAnimation(label5_content, 'opacity11');365 label5_content.addEventListener('animationend', function () {366 addAnimation(label6_line, 'three_fontLine');367 label6_line.addEventListener('animationend', function () {368 addAnimation(label6_content, 'opacity11');369 label6_content.addEventListener('animationend', function () {370 addAnimation(label7_line, 'three_fontLine');371 label7_line.addEventListener('animationend', function () {372 addAnimation(label7_content, 'opacity11');373 });374 })375 });376 });377 });378 });379 });380 });381 });382 });383 });384 })385 });386 });387 /​/​ resolve('ok')388 });389 /​/​ })390}391/​/​ console.log(sense_three.children[1].children[0]);392console.log(sense_three.children[1].children[1].children[0].children[0].children[0]);393/​/​ console.log(sense_two.children[1].children[2].children[1].children[3].children[1]);...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run hypothesis automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful