2 π '; $reader = new OfficeMathML(); $math = $reader->read($content); $this->assertInstanceOf(Math::class, $math); $elements = $math->getElements(); $this->assertCount(1, $elements); $this->assertInstanceOf(Element\Row::class, $elements[0]); /** @var Element\Row $element */ $element = $elements[0]; $subElements = $element->getElements(); $this->assertCount(1, $subElements); $this->assertInstanceOf(Element\Fraction::class, $subElements[0]); /** @var Element\Fraction $subElement */ $subElement = $subElements[0]; /** @var Element\Identifier $numerator */ $numerator = $subElement->getNumerator(); $this->assertInstanceOf(Element\Numeric::class, $numerator); $this->assertEquals(2, $numerator->getValue()); /** @var Element\Numeric $denominator */ $denominator = $subElement->getDenominator(); $this->assertInstanceOf(Element\Identifier::class, $denominator); $this->assertEquals('π', $denominator->getValue()); } public function testReadWithWTag(): void { $content = ' π 2 + a 2 '; $reader = new OfficeMathML(); $math = $reader->read($content); $this->assertInstanceOf(Math::class, $math); $elements = $math->getElements(); $this->assertCount(5, $elements); /** @var Element\Fraction $element */ $element = $elements[0]; $this->assertInstanceOf(Element\Fraction::class, $element); /** @var Element\Identifier $numerator */ $numerator = $element->getNumerator(); $this->assertInstanceOf(Element\Identifier::class, $numerator); $this->assertEquals('π', $numerator->getValue()); /** @var Element\Numeric $denominator */ $denominator = $element->getDenominator(); $this->assertInstanceOf(Element\Numeric::class, $denominator); $this->assertEquals(2, $denominator->getValue()); /** @var Element\Operator $element */ $element = $elements[1]; $this->assertInstanceOf(Element\Operator::class, $element); $this->assertEquals('+', $element->getValue()); /** @var Element\Identifier $element */ $element = $elements[2]; $this->assertInstanceOf(Element\Identifier::class, $element); $this->assertEquals('a', $element->getValue()); /** @var Element\Operator $element */ $element = $elements[3]; $this->assertInstanceOf(Element\Operator::class, $element); $this->assertEquals('∗', $element->getValue()); /** @var Element\Numeric $element */ $element = $elements[4]; $this->assertInstanceOf(Element\Numeric::class, $element); $this->assertEquals(2, $element->getValue()); } public function testReadFractionNoNumerator(): void { $this->expectException(InvalidInputException::class); $this->expectExceptionMessage('PhpOffice\Math\Reader\OfficeMathML::getElement : The tag `m:f` has no numerator defined'); $content = ' 2 '; $reader = new OfficeMathML(); $math = $reader->read($content); } public function testReadFractionNoDenominator(): void { $this->expectException(InvalidInputException::class); $this->expectExceptionMessage('PhpOffice\Math\Reader\OfficeMathML::getElement : The tag `m:f` has no denominator defined'); $content = ' π '; $reader = new OfficeMathML(); $math = $reader->read($content); } public function testReadBasicNoText(): void { $this->expectException(InvalidInputException::class); $this->expectExceptionMessage('PhpOffice\Math\Reader\OfficeMathML::getElement : The tag `m:r` has no tag `m:t` defined'); $content = ' a '; $reader = new OfficeMathML(); $math = $reader->read($content); } public function testReadNotImplemented(): void { $this->expectException(NotImplementedException::class); $this->expectExceptionMessage('PhpOffice\Math\Reader\OfficeMathML::getElement : The tag `m:mnotexisting` is not implemented'); $content = ' π '; $reader = new OfficeMathML(); $math = $reader->read($content); } }