Merge "additional phpUnitTests"
This commit is contained in:
commit
4822324c61
|
@ -118,7 +118,7 @@ abstract class MathRenderer {
|
||||||
*
|
*
|
||||||
* @return boolean true if read successfully, false otherwise
|
* @return boolean true if read successfully, false otherwise
|
||||||
*/
|
*/
|
||||||
protected function readFromDB() {
|
public function readFromDB() {
|
||||||
$dbr = wfGetDB( DB_SLAVE );
|
$dbr = wfGetDB( DB_SLAVE );
|
||||||
$rpage = $dbr->selectRow(
|
$rpage = $dbr->selectRow(
|
||||||
'math',
|
'math',
|
||||||
|
@ -150,7 +150,7 @@ abstract class MathRenderer {
|
||||||
/**
|
/**
|
||||||
* Writes rendering entry to database
|
* Writes rendering entry to database
|
||||||
*/
|
*/
|
||||||
protected function writeDBEntry() {
|
public function writeDBEntry() {
|
||||||
# Now save it back to the DB:
|
# Now save it back to the DB:
|
||||||
if ( !wfReadOnly() ) {
|
if ( !wfReadOnly() ) {
|
||||||
$dbw = wfGetDB( DB_MASTER );
|
$dbw = wfGetDB( DB_MASTER );
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Test the database access and core functionallity of MathRenderer.
|
||||||
|
*
|
||||||
|
* @group Math
|
||||||
|
* @group Database //Used by needsDB
|
||||||
|
*/
|
||||||
|
class MathDatabaseTest extends MediaWikiTestCase {
|
||||||
|
var $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_STATUSCODE = 2;
|
||||||
|
const SOME_TIMESTAMP = 1272509157;
|
||||||
|
const SOME_VALIDXML = true;
|
||||||
|
const NUM_BASIC_FIELDS = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 datbase explictly
|
||||||
|
* function addDBData() {
|
||||||
|
* $this->tablesUsed[] = 'math';
|
||||||
|
* }
|
||||||
|
* was not sufficant.
|
||||||
|
*/
|
||||||
|
protected function setup() {
|
||||||
|
global $wgDebugMath;
|
||||||
|
parent::setUp();
|
||||||
|
// TODO:figure out why this is neccessary
|
||||||
|
$this->db = wfGetDB( DB_MASTER );
|
||||||
|
// Create a new instance of MathSource
|
||||||
|
$this->renderer = $this->getMockForAbstractClass( 'MathRenderer', array ( self::SOME_TEX ) );
|
||||||
|
$this->tablesUsed[] = 'math';
|
||||||
|
self::setupTestDB( $this->db, "mathtest" );
|
||||||
|
|
||||||
|
$wgDebugMath = FALSE;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 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 istance to the test values
|
||||||
|
*/
|
||||||
|
public function setValues() {
|
||||||
|
// set some values
|
||||||
|
$this->renderer->tex = self::SOME_TEX ;
|
||||||
|
$this->renderer->html = self::SOME_HTML;
|
||||||
|
$this->renderer->mathml = self::SOME_MATHML;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Checks database access. Writes an etry and reads it back.
|
||||||
|
* @convers MathRenderer::writeDatabaseEntry()
|
||||||
|
* @convers MathRenderer::readDatabaseEntry()
|
||||||
|
*/
|
||||||
|
public function testDBBasics() {
|
||||||
|
// ;
|
||||||
|
$this->setValues();
|
||||||
|
$wgDebugMath = false;
|
||||||
|
|
||||||
|
$this->renderer->writeDBEntry();
|
||||||
|
|
||||||
|
$renderer2 = $this->getMockForAbstractClass( 'MathRenderer', array ( self::SOME_TEX ) );
|
||||||
|
$renderer2->readFromDB();
|
||||||
|
// comparing the class object does now work due to null values etc.
|
||||||
|
// $this->assertEquals($this->renderer,$renderer2);
|
||||||
|
$this->assertEquals( $this->renderer->getTex(), $renderer2->getTex(), "test if tex is the same" );
|
||||||
|
$this->assertEquals( $this->renderer->mathml, $renderer2->mathml, "Check MathML encoding" );
|
||||||
|
$this->assertEquals( $this->renderer->html, $renderer2->html );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the creation of the math table without debugging endabled.
|
||||||
|
* @covers MathHooks::onLoadExtensionSchemaUpdates
|
||||||
|
*/
|
||||||
|
public function testBasicCreateTable() {
|
||||||
|
global $wgDebugMath;
|
||||||
|
$this->db->dropTable( "math", __METHOD__ );
|
||||||
|
$wgDebugMath = false;
|
||||||
|
$dbu = DatabaseUpdater::newForDB( $this->db );
|
||||||
|
$dbu->doUpdates( array( "extensions" ) );
|
||||||
|
$this->expectOutputRegex( '/(.*)Creating math table(.*)/' );
|
||||||
|
$this->setValues();
|
||||||
|
$this->renderer->writeDBEntry();
|
||||||
|
$res = $this->db->select( "math", "*" );
|
||||||
|
$row = $res->fetchRow();
|
||||||
|
$this->assertEquals( sizeof( $row ), 2 * self::NUM_BASIC_FIELDS );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Test the database access and core functionallity of MathRenderer.
|
||||||
|
*
|
||||||
|
* @group Math
|
||||||
|
*/
|
||||||
|
class MathRendererTest extends MediaWikiTestCase {
|
||||||
|
/**
|
||||||
|
* Checks the tex and hash functions
|
||||||
|
* @covers MathRenderer::getTex()
|
||||||
|
* @covers MathRenderer::__construct()
|
||||||
|
*/
|
||||||
|
public function testBasics() {
|
||||||
|
$renderer = $this->getMockForAbstractClass( 'MathRenderer', array ( MathDatabaseTest::SOME_TEX ) );
|
||||||
|
// check if the TeX input was corretly passed to the class
|
||||||
|
$this->assertEquals( MathDatabaseTest::SOME_TEX, $renderer->getTex(), "test getTex" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test behavior of writeCache() when nothing was changed
|
||||||
|
* @covers MathRenderer::writeCache()
|
||||||
|
*/
|
||||||
|
public function testWriteCacheSkip() {
|
||||||
|
$renderer = $this->getMockBuilder( 'MathRenderer' )
|
||||||
|
->setMethods( array( 'writeDBEntry' , 'render' ) )
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$renderer->expects( $this->never() )
|
||||||
|
->method( 'writeDBEntry' );
|
||||||
|
$renderer->writeCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test behavior of writeCache() when values were changed.
|
||||||
|
* @covers MathRenderer::writeCache()
|
||||||
|
*/
|
||||||
|
public function testWriteCache() {
|
||||||
|
$renderer = $this->getMockBuilder( 'MathRenderer' )
|
||||||
|
->setMethods( array( 'writeDBEntry' , 'render' ) )
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$renderer->expects( $this->never() )
|
||||||
|
->method( 'writeDBEntry' );
|
||||||
|
$renderer->writeCache();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue