Physikerwelt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/57901


Change subject: additional phpUnitTests
......................................................................

additional phpUnitTests

adds two new phpUnitTests for the abstract MathRender class
and another one that test the basic database access.
Therefore the read and write methods have been made changed
from protected to public.

Change-Id: I77a8b0a4dfe7529b5521ead097ac7b518688ef70
---
M MathRenderer.php
A tests/MathDatabaseTest.php
A tests/MathRenderTest.php
3 files changed, 104 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Math 
refs/changes/01/57901/1

diff --git a/MathRenderer.php b/MathRenderer.php
index e969ad9..2c35aab 100644
--- a/MathRenderer.php
+++ b/MathRenderer.php
@@ -118,7 +118,7 @@
         *
         * @return boolean true if read successfully, false otherwise
         */
-       protected function readFromDB() {
+       public function readFromDB() {
                $dbr = wfGetDB( DB_SLAVE );
                $rpage = $dbr->selectRow(
                        'math',
@@ -150,7 +150,7 @@
        /**
         * Writes rendering entry to database
         */
-       protected function writeDBEntry() {
+       public function writeDBEntry() {
                # Now save it back to the DB:
                if ( !wfReadOnly() ) {
                        $dbw = wfGetDB( DB_MASTER );
diff --git a/tests/MathDatabaseTest.php b/tests/MathDatabaseTest.php
new file mode 100644
index 0000000..3e931ae
--- /dev/null
+++ b/tests/MathDatabaseTest.php
@@ -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 
);
+       }
+
+
+
+}
\ No newline at end of file
diff --git a/tests/MathRenderTest.php b/tests/MathRenderTest.php
new file mode 100644
index 0000000..b3d9bbc
--- /dev/null
+++ b/tests/MathRenderTest.php
@@ -0,0 +1 @@
+<?php

-- 
To view, visit https://gerrit.wikimedia.org/r/57901
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I77a8b0a4dfe7529b5521ead097ac7b518688ef70
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Math
Gerrit-Branch: master
Gerrit-Owner: Physikerwelt <w...@physikerwelt.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to