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);
}
}