mediawiki-extensions-Math/tests/phpunit/unit/WikiTexVC/Nodes/DQTest.php
Moritz Schubotz (physikerwelt) a102a4ed52
Remove curly
To reduce the complexity of the parse tree we remove the curly
element which is used for grouping in TeX. Instead, we use
use an attribute which defines if the group is put into curly
brackets or not. The functionality of the curly element
is transferred to the TexArray which was the only possible
child of the curly element before. To ease the transition,
we add a special constructor to TexArray.

We could not measure any performance implications of this change.

Bug: T333973
Change-Id: Idcb58694022831113bdc437576bb9f48658fff2f
2024-04-09 11:36:34 +02:00

60 lines
1.8 KiB
PHP

<?php
namespace MediaWiki\Extension\Math\Tests\WikiTexVC\Nodes;
use ArgumentCountError;
use MediaWiki\Extension\Math\WikiTexVC\MMLnodes\MMLmrow;
use MediaWiki\Extension\Math\WikiTexVC\Nodes\DQ;
use MediaWiki\Extension\Math\WikiTexVC\Nodes\Literal;
use MediaWiki\Extension\Math\WikiTexVC\Nodes\TexArray;
use MediaWiki\Extension\Math\WikiTexVC\Nodes\TexNode;
use MediaWikiUnitTestCase;
use RuntimeException;
use TypeError;
/**
* @covers \MediaWiki\Extension\Math\WikiTexVC\Nodes\DQ
*/
class DQTest extends MediaWikiUnitTestCase {
public function testEmptyDQ() {
$this->expectException( ArgumentCountError::class );
new DQ();
throw new ArgumentCountError( 'Should not create an empty dq' );
}
public function testOneArgumentDQ() {
$this->expectException( ArgumentCountError::class );
new DQ( new Literal( 'a' ) );
throw new ArgumentCountError( 'Should not create a dq with one argument' );
}
public function testIncorrectTypeDQ() {
$this->expectException( TypeError::class );
new DQ( 'a', 'b' );
throw new RuntimeException( 'Should not create a dq with incorrect type' );
}
public function testBasicDQ() {
$dq = new DQ( new Literal( 'a' ), new Literal( 'b' ) );
$this->assertEquals( 'a_{b}', $dq->render(), 'Should create a basic dq' );
}
public function testGetters() {
$dq = new DQ( new Literal( 'a' ), new Literal( 'b' ) );
$this->assertNotEmpty( $dq->getBase() );
$this->assertNotEmpty( $dq->getDown() );
}
public function testEmptyBaseDQ() {
$dq = new DQ( new TexNode(), new Literal( 'b' ) );
$this->assertEquals( '_{b}', $dq->render(), 'Should create an empty base dq' );
}
public function testRenderEmptyDq() {
$dq = new DQ( TexArray::newCurly(), new Literal( 'b' ) );
$this->assertStringContainsString( ( new MMLmrow() )->getEmpty(), $dq->renderMML() );
}
}