assertNull( $checker->getError() ); $this->assertTrue( $checker->isValid() ); $this->assertNull( $checker->getError() ); $this->assertSame( '\\sin x^{2}', $checker->getValidTex() ); } public function testValidTypeTex() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '\sin x^2', 'tex' ); $this->assertTrue( $checker->isValid() ); } public function testValidTypeChem() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '{\\displaystyle {\\ce {\\cdot OHNO_{2}}}}', 'chem' ); $this->assertTrue( $checker->isValid() ); } public function testValidTypeInline() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '{\\textstyle \\log2 }', 'inline-tex' ); $this->assertTrue( $checker->isValid() ); } public function testInvalidType() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '\sin x^2', 'INVALIDTYPE' ); $this->assertInstanceOf( LocalChecker::class, $checker ); $this->assertInstanceOf( Message::class, $checker->getError() ); $this->assertFalse( $checker->isValid() ); $this->assertNull( $checker->getPresentationMathMLFragment() ); } public function testInvalid() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '\sin\newcommand' ); $this->assertFalse( $checker->isValid() ); $this->assertStringContainsString( Message::newFromKey( 'math_unknown_function', '\newcommand' ) ->inContentLanguage() ->escaped(), $checker->getError() ->inContentLanguage() ->escaped() ); $this->assertNull( $checker->getValidTex() ); } public function testErrorSyntax() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '\left(' ); $this->assertFalse( $checker->isValid() ); $this->assertStringContainsString( Message::newFromKey( 'math_syntax_error' ) ->inContentLanguage() ->escaped(), $checker->getError() ->inContentLanguage() ->escaped() ); } public function testGetMML() { $checker = new LocalChecker( WANObjectCache::newEmpty(), 'e^{i \pi} + 1 = 0' ); $mml = $checker->getPresentationMathMLFragment(); $this->assertStringContainsString( '0', $mml ); } public function testGetMMLEmpty() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '' ); $mml = $checker->getPresentationMathMLFragment(); $this->assertSame( '', $mml ); } /** * @covers \MediaWiki\Extension\Math\InputCheck\LocalChecker::getInputCacheKey */ public function testGetKey() { $checker = new LocalChecker( WANObjectCache::newEmpty(), '\sin x^2', 'tex' ); $this->assertSame( self::SAMPLE_KEY, $checker->getInputCacheKey() ); } public function testCache() { $fakeWAN = new WANObjectCache( [ 'cache' => new HashBagOStuff() ] ); $fakeContent = [ 'status' => '+', 'output' => 'out', 'mathml' => 'mml' ]; $fakeWAN->set( self::SAMPLE_KEY, $fakeContent, WANObjectCache::TTL_INDEFINITE, [ 'version' => LocalChecker::VERSION ] ); $checker = new LocalChecker( $fakeWAN, '\sin x^2', 'tex' ); $this->assertSame( $fakeContent['output'], $checker->getValidTex() ); $this->assertSame( $fakeContent['mathml'], $checker->getPresentationMathMLFragment() ); $this->assertSame( true, $checker->isValid() ); } /** * @covers \MediaWiki\Extension\Math\InputCheck\LocalChecker::runCheck */ public function testRunChecks() { $fakeContent = [ 'status' => '+', 'mathml' => 'sinx' . '2', 'output' => '\\sin x^{2}' ]; $checker = new LocalChecker( WANObjectCache::newEmpty(), '\sin x^2', 'tex' ); $actual = $checker->runCheck(); $this->assertArrayEquals( $fakeContent, $actual ); } }