How to use children method in fMBT

Best Python code snippet using fMBT_python

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 fMBT 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