<?php use DataValues\NumberValue; use DataValues\StringValue; use MediaWiki\Extension\Math\MathValidator; /** * @covers \MediaWiki\Extension\Math\MathValidator * * @group Math * * @license GPL-2.0-or-later */ class MathValidatorTest extends MediaWikiIntegrationTestCase { use MockHttpTrait; private const VADLID_TEX = "\sin x"; private const INVADLID_TEX = "\\notExists"; public function testNotStringValue() { $validator = new MathValidator(); $this->expectException( InvalidArgumentException::class ); $validator->validate( new NumberValue( 0 ) ); } public function testNullValue() { $validator = new MathValidator(); $this->expectException( InvalidArgumentException::class ); $validator->validate( null ); } public function testValidInput() { $this->installMockHttp( $this->makeFakeHttpRequest( file_get_contents( __DIR__ . '/InputCheck/data/mathoid/sinx.json' ) ) ); $validator = new MathValidator(); $result = $validator->validate( new StringValue( self::VADLID_TEX ) ); $this->assertInstanceOf( \ValueValidators\Result::class, $result ); $this->assertTrue( $result->isValid() ); } public function testInvalidInput() { $this->installMockHttp( $this->makeFakeHttpRequest( file_get_contents( __DIR__ . '/InputCheck/data/mathoid/invalidF.json' ), 400 ) ); $validator = new MathValidator(); $result = $validator->validate( new StringValue( self::INVADLID_TEX ) ); $this->assertInstanceOf( \ValueValidators\Result::class, $result ); $this->assertFalse( $result->isValid() ); } }