mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
synced 2024-11-23 23:25:02 +00:00
Revert "Disable failing latexml integration tests"
This reverts commit 4c544f002b
.
Change-Id: Ifafb5782e10e80240a282beb449ab069ad93c37f
This commit is contained in:
parent
fd7fcc6ada
commit
2a20654ab9
110
tests/MathLaTeXMLDatabaseTest.php
Normal file
110
tests/MathLaTeXMLDatabaseTest.php
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
/**
|
||||
* Test the database access and core functionality of MathRenderer.
|
||||
*
|
||||
* @group Math
|
||||
* @group Database (Used by needsDB)
|
||||
*/
|
||||
class MathLaTeXMLDatabaseTest extends MediaWikiTestCase {
|
||||
public $renderer;
|
||||
const SOME_TEX = "a+b";
|
||||
const SOME_HTML = "a<sub>b</sub>";
|
||||
const SOME_MATHML = "iℏ∂_tΨ=H^Ψ<mrow><\ci>";
|
||||
const SOME_LOG = "Sample Log Text.";
|
||||
const SOME_TIMESTAMP = 1272509157;
|
||||
const SOME_SVG = "<?xml </svg >>%%LIKE;'\" DROP TABLE math;";
|
||||
|
||||
/**
|
||||
* Helper function to test protected/private Methods
|
||||
* @param $name
|
||||
* @return ReflectionMethod
|
||||
*/
|
||||
protected static function getMethod($name) {
|
||||
$class = new ReflectionClass('MathLaTeXML');
|
||||
$method = $class->getMethod($name);
|
||||
$method->setAccessible(true);
|
||||
return $method;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* creates a new database connection and a new math renderer
|
||||
* TODO: Check if there is a way to get database access without creating
|
||||
* the connection to the database explicitly
|
||||
* function addDBData() {
|
||||
* $this->tablesUsed[] = 'math';
|
||||
* }
|
||||
* was not sufficient.
|
||||
*/
|
||||
protected function setup() {
|
||||
parent::setUp();
|
||||
// TODO: figure out why this is necessary
|
||||
$this->db = wfGetDB( DB_MASTER );
|
||||
// Create a new instance of MathSource
|
||||
$this->renderer = new MathLaTeXML( self::SOME_TEX );
|
||||
self::setupTestDB( $this->db, "mathtest" );
|
||||
}
|
||||
/**
|
||||
* Checks the tex and hash functions
|
||||
* @covers MathRenderer::getInputHash()
|
||||
*/
|
||||
public function testInputHash() {
|
||||
$expectedhash = $this->db->encodeBlob( pack( "H32", md5( self::SOME_TEX ) ) );
|
||||
$this->assertEquals( $expectedhash, $this->renderer->getInputHash() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to set the current state of the sample renderer instance to the test values
|
||||
*/
|
||||
public function setValues() {
|
||||
// set some values
|
||||
$this->renderer->setTex( self::SOME_TEX );
|
||||
$this->renderer->setMathml( self::SOME_MATHML );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers MathLaTeXML::getMathTableName
|
||||
*/
|
||||
public function testTableName() {
|
||||
$fnGetMathTableName = self::getMethod( 'getMathTableName' );
|
||||
$obj = new MathLaTeXML();
|
||||
$tableName = $fnGetMathTableName->invokeArgs( $obj, array() );
|
||||
$this->assertEquals( $tableName, "mathlatexml", "Wrong latexml table name" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the creation of the math table without debugging enabled.
|
||||
* @covers MathHooks::onLoadExtensionSchemaUpdates
|
||||
*/
|
||||
public function testCreateTable() {
|
||||
$this->setMwGlobals( 'wgMathValidModes', array( MW_MATH_LATEXML ) );
|
||||
$this->db->dropTable( "mathlatexml", __METHOD__ );
|
||||
$dbu = DatabaseUpdater::newForDB( $this->db );
|
||||
$dbu->doUpdates( array( "extensions" ) );
|
||||
$this->expectOutputRegex( '/(.*)Creating mathlatexml table(.*)/' );
|
||||
$this->setValues();
|
||||
$this->renderer->writeToDatabase();
|
||||
$res = $this->db->select( "mathlatexml", "*" );
|
||||
$row = $res->fetchRow();
|
||||
$this->assertEquals( 12, sizeof( $row ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks database access. Writes an entry and reads it back.
|
||||
* @depends testCreateTable
|
||||
* @covers MathRenderer::writeDatabaseEntry()
|
||||
* @covers MathRenderer::readDatabaseEntry()
|
||||
*/
|
||||
public function testDBBasics() {
|
||||
$this->setValues();
|
||||
$this->renderer->writeToDatabase();
|
||||
|
||||
$renderer2 = $this->renderer = new MathLaTeXML( self::SOME_TEX );
|
||||
$renderer2->readFromDatabase();
|
||||
// comparing the class object does now work due to null values etc.
|
||||
$this->assertEquals( $this->renderer->getTex(), $renderer2->getTex(), "test if tex is the same" );
|
||||
$this->assertEquals( $this->renderer->getMathml(), $renderer2->getMathml(), "Check MathML encoding" );
|
||||
}
|
||||
|
||||
|
||||
}
|
52
tests/MathLaTeXMLTest.php
Normal file
52
tests/MathLaTeXMLTest.php
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
/**
|
||||
* Test the LaTeXML output format.
|
||||
*
|
||||
* @group Math
|
||||
*/
|
||||
class MathLaTeXMLTest extends MediaWikiTestCase {
|
||||
|
||||
/**
|
||||
* Tests the serialization of the LaTeXML settings
|
||||
* @covers MathLaTeXML::serializeSettings
|
||||
*/
|
||||
public function testSerializeSettings() {
|
||||
$renderer = $this->getMockBuilder( 'MathLaTeXML' )
|
||||
->setMethods( NULL )
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$sampleSettings = array(
|
||||
'k1' => 'v1',
|
||||
'k2&=' => 'v2 + & *üö',
|
||||
'k3' => array(
|
||||
'v3A', 'v3b'
|
||||
) );
|
||||
$expected = 'k1=v1&k2%26%3D=v2+%2B+%26+%2A%C3%BC%C3%B6&k3=v3A&k3=v3b';
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$renderer->serializeSettings( $sampleSettings ),
|
||||
'test serialization of array settings'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$renderer->serializeSettings( $expected ),
|
||||
'test serialization of a string setting'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the basic functionality
|
||||
* i.e. if the span element is generated right.
|
||||
*/
|
||||
public function testIntegration() {
|
||||
$this->setMwGlobals( 'wgMathLaTeXMLTimeout', 20 );
|
||||
$this->setMwGlobals( 'wgMathValidModes', array( MW_MATH_LATEXML ) );
|
||||
$renderer = MathRenderer::getRenderer( "a+b", array(), MW_MATH_LATEXML );
|
||||
$this->assertTrue( $renderer->render( true ) );
|
||||
$expected = '<math xmlns="http://www.w3.org/1998/Math/MathML" id="p1.1.m1.1" class="ltx_Math" alttext="{\displaystyle a+b}" xref="p1.1.m1.1.cmml"><semantics id="p1.1.m1.1a" xref="p1.1.m1.1.cmml"><mrow id="p1.1.m1.1.4" xref="p1.1.m1.1.4.cmml"><mi id="p1.1.m1.1.1" xref="p1.1.m1.1.1.cmml">a</mi><mo id="p1.1.m1.1.2" xref="p1.1.m1.1.2.cmml">+</mo><mi id="p1.1.m1.1.3" xref="p1.1.m1.1.3.cmml">b</mi></mrow><annotation-xml encoding="MathML-Content" id="p1.1.m1.1.cmml" xref="p1.1.m1.1"><apply id="p1.1.m1.1.4.cmml" xref="p1.1.m1.1.4"><plus id="p1.1.m1.1.2.cmml" xref="p1.1.m1.1.2"/><ci id="p1.1.m1.1.1.cmml" xref="p1.1.m1.1.1">a</ci><ci id="p1.1.m1.1.3.cmml" xref="p1.1.m1.1.3">b</ci></apply></annotation-xml><annotation encoding="application/x-tex" id="p1.1.m1.1b" xref="p1.1.m1.1.cmml">{\displaystyle a+b}</annotation></semantics></math>';
|
||||
$real = preg_replace( "/\n\s*/", '', $renderer->getHtmlOutput() );
|
||||
$this->assertContains( $expected, $real
|
||||
, "Rendering of a+b in plain Text mode." .
|
||||
$renderer->getLastError() );
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue