generateMML( $input ); $this->assertTrue( str_contains( $mathMLtexVC, "merror" ) ); } public function testSidesetSum() { $input = "\\sideset{_1^2}{_3^4}\\sum"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringNotContainsString( "merror", $mathMLtexVC ); $this->assertStringContainsString( "mmultiscripts", $mathMLtexVC ); $this->assertStringContainsString( "", $mathMLtexVC ); $this->assertStringContainsString( ">∑", $mathMLtexVC ); } public function testSidesetProd() { $input = "\\sideset{_1^2}{_3^4}\\prod"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringNotContainsString( "merror", $mathMLtexVC ); $this->assertStringContainsString( "mmultiscripts", $mathMLtexVC ); $this->assertStringContainsString( "", $mathMLtexVC ); $this->assertStringContainsString( ">∏", $mathMLtexVC ); } public function testSidesetFQ() { $input = "\\sideset{_1^2}{_3^4}\prod_a^b"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringNotContainsString( "merror", $mathMLtexVC ); $this->assertStringContainsString( "mmultiscripts", $mathMLtexVC ); $this->assertStringContainsString( "", $mathMLtexVC ); $this->assertStringContainsString( ">∏", $mathMLtexVC ); $this->assertStringContainsString( "a", $mathMLtexVC ); $this->assertStringContainsString( "b", $mathMLtexVC ); $this->assertStringContainsString( "movablelimits", $mathMLtexVC ); } public function testLimitsProd() { $input = "\\prod\\limits_{j=1}^k A_{\\alpha_j}"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( "munderover", $mathMLtexVC ); $this->assertStringContainsString( "∏", $mathMLtexVC, ); $this->assertStringContainsString( "msub", $mathMLtexVC, ); } public function testLimitsSum() { $input = "\\sum\\limits_{j=1}^k A_{\\alpha_j}"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( "munderover", $mathMLtexVC ); $this->assertStringContainsString( "∑", $mathMLtexVC, ); $this->assertStringContainsString( "msub", $mathMLtexVC, ); } public function testLimitsLim() { $input = "\\lim_{x \\to 2}"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( "lim", $mathMLtexVC ); $this->assertStringContainsString( "munder", $mathMLtexVC, ); } public function testRenderSpaceSemicolon() { $input = "{\\;}"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( "mstyle", $mathMLtexVC ); $this->assertStringContainsString( "mspace", $mathMLtexVC, ); } public function testSpacesAndCommas() { $input = "{a}{b , c}\\,"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( ",", $mathMLtexVC ); $this->assertStringContainsString( "mspace", $mathMLtexVC, ); } public function testPilcrowAndSectionSign() { $input = "\\P P \\S S"; $mathMLtexVC = $this->generateMML( $input ); $this->assertStringContainsString( "P", $mathMLtexVC ); $this->assertStringContainsString( "S", $mathMLtexVC, ); $this->assertStringContainsString( "¶", $mathMLtexVC, ); $this->assertStringContainsString( "§", $mathMLtexVC, ); } private function generateMML( $input, $chem = false ) { $texVC = new TexVC(); $resultT = $texVC->check( $input, [ 'debug' => false, 'usemathrm' => false, 'oldtexvc' => false, 'usemhchem' => $chem ] ); return MMLTestUtil::getMMLwrapped( $resultT["input"] ) ?? " error texvc "; } }