assertTrue( new TexArray() instanceof TexNode, 'Should create an instance of TexNode' ); } public function testConcatOutput() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); $this->assertEquals( 'ab', $ta->render(), 'Should concatenate its input' ); } public function testExtractCurlies() { $n = new TexNode( new TexArray( new Literal( 'a' ) ) ); $this->assertEquals( '{a}', $n->inCurlies(), 'Should create exactly one pair of curlies' ); } public function testExtractIdentifiers() { $n = new TexArray( new Literal( 'd' ) ); $this->assertEquals( [ 'd' ], $n->extractIdentifiers(), 'Should extract identifiers' ); } public function testExtractIdentifiersFromArg() { $n = new TexArray(); $this->assertEquals( [ 'd' ], $n->extractIdentifiers( [ new Literal( 'd' ) ] ), 'Should extract identifiers from the argument' ); } public function testExtractSplitIdentifiers() { $n = new TexArray( new Literal( 'a' ), new Literal( '\'' ) ); $this->assertEquals( [ 'a\'' ], $n->extractIdentifiers(), 'Should extract split identifiers' ); } public function testNotConfuseIntegralsIdentifiers() { $n = new TexArray( new Literal( 'd' ), new Literal( '\\int' ) ); $this->assertEquals( [ 'd' ], $n->extractIdentifiers(), 'Should not confuse integrals and identifiers' ); } public function testNotConfuseIntegralD() { $n = new TexArray( new Literal( '\\int' ), new Literal( 'd' ) ); $this->assertEquals( [], $n->extractIdentifiers(), 'Should not confuse integral d with d identifier' ); } public function testNotConfuseUprightIntegralD() { $n = new TexArray( new Literal( '\\int' ), new Literal( '\\mathrm{d}' ) ); $this->assertEquals( [], $n->extractIdentifiers(), 'Should not confuse upright integral d with d identifier' ); } public function testExtractIdentifierMods() { $n = new TexArray( new TexNode( '' ) ); $this->assertEquals( [], $n->getModIdent(), 'Should extract identifier modifications' ); } public function testExtractSubscripts() { $n = new TexArray( new TexNode( '' ) ); $this->assertEquals( [], $n->extractSubscripts(), 'Should extract subscripts' ); } public function testUnshift() { $n = new TexArray( new TexNode( '' ) ); $n->unshift( 'test1', 'test2' ); $this->assertEquals( 3, $n->getLength(), 'Should unshift elements' ); } public function testGenerator() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); foreach ( $ta as $item ) { $this->assertInstanceOf( 'MediaWiki\Extension\Math\WikiTexVC\Nodes\Literal', $item, 'Should iterate over the elements' ); } } public function testOffsetExists() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); $this->assertTrue( isset( $ta[0] ) ); $this->assertFalse( isset( $ta[2] ) ); } public function testOffsetGet() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); $this->assertEquals( 'a', $ta[0]->render() ); $this->assertNull( $ta[100] ); } public function testOffsetUnset() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); unset( $ta[0] ); $this->assertNull( $ta[0] ); } public function testOffsetSet() { $ta = new TexArray(); $ta[0] = new Literal( 'a' ); $this->assertEquals( 'a', $ta[0]->render() ); } public function testOffsetSetInvalid() { $this->expectException( InvalidArgumentException::class ); $ta = new TexArray(); $ta[0] = 'a'; } public function testSquashLiterals() { $ta = new TexArray( new Literal( 'a' ), new Literal( 'b' ) ); $res = $ta->renderMML( [], [ 'squashLiterals' => true ] ); $this->assertEquals( 'ab', $res ); } public function testSquashLiteralsMacro() { $ta = new TexArray( new Literal( 'a' ), new Literal( '\gamma' ) ); $res = $ta->renderMML( [], [ 'squashLiterals' => true ] ); $this->assertEquals( 'aγ', $res ); } }