Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
transformed parser unit tests to phpunit
  • Loading branch information
dom-mel committed Apr 6, 2012
1 parent e56a0a2 commit 0a01598
Show file tree
Hide file tree
Showing 15 changed files with 3,647 additions and 1 deletion.
1 change: 1 addition & 0 deletions _test/cases/inc/parser/xhtml_links.test.php
@@ -1,5 +1,6 @@
<?php
if (!defined('DOKU_BASE')) define('DOKU_BASE','./');
require_once DOKU_INC.'inc/init.php';
require_once DOKU_INC.'inc/parser/xhtml.php';
require_once DOKU_INC.'inc/pageutils.php';

Expand Down
7 changes: 6 additions & 1 deletion _testing/README
Expand Up @@ -25,9 +25,14 @@ Bad tests are tests that do not run out of the box.
* inc/indexer_idx_indexlengths
* inc/mail_send
* inc/pageutils_resolve_pageid
* inc/parser/parser_formatting
* inc/parser/xhtml_htmlphp
* inc/parser/xhtml_links


==== TODO ====
* transform inc/remote.test.php (mocking)
* Mocking
* inc/remote.test.php
* inc/parser/lexer.test.php
* plugin unit tests
* integration tests (+plugins)
45 changes: 45 additions & 0 deletions _testing/unittests/inc/parser/parser.inc.php
@@ -0,0 +1,45 @@
<?php
/**
* @version $Id: parser.inc.php,v 1.2 2005/03/25 21:00:22 harryf Exp $
* @package Doku
* @subpackage Tests
*/

/**
* Includes
*/
require_once DOKU_INC . 'inc/init.php';
require_once DOKU_INC . 'inc/confutils.php';
require_once DOKU_INC . 'inc/parser/parser.php';
require_once DOKU_INC . 'inc/parser/handler.php';
require_once DOKU_INC . 'inc/events.php';
require_once DOKU_INC . 'inc/mail.php';

/**
* @package Doku
* @subpackage Tests
*/
abstract class TestOfDoku_Parser extends PHPUnit_Framework_TestCase {

var $P;
var $H;

function setup() {
$this->P = new Doku_Parser();
$this->H = new Doku_Handler();
$this->P->Handler = & $this->H;
}

function tearDown() {
unset($this->P);
unset($this->H);
}
}

function stripByteIndex($call) {
unset($call[2]);
if ($call[0] == "nest") {
$call[1][0] = array_map('stripByteIndex',$call[1][0]);
}
return $call;
}
96 changes: 96 additions & 0 deletions _testing/unittests/inc/parser/parser_eol.test.php
@@ -0,0 +1,96 @@
<?php
require_once 'parser.inc.php';

class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {

function testEol() {
$this->P->addMode('eol',new Doku_Parser_Mode_Eol());
$this->P->parse("Foo\nBar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

function testEolMultiple() {
$this->P->addMode('eol',new Doku_Parser_Mode_Eol());
$this->P->parse("Foo\n\nbar\nFoo");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("Foo")),
array('p_close',array()),
array('p_open',array()),
array('cdata',array("bar".DOKU_PARSER_EOL."Foo")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

function testWinEol() {
$this->P->addMode('eol',new Doku_Parser_Mode_Eol());
$this->P->parse("Foo\r\nBar");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

function testLinebreak() {
$this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
$this->P->parse('Foo\\\\ Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\nFoo")),
array('linebreak',array()),
array('cdata',array("Bar")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

function testLinebreakPlusEol() {
$this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
$this->P->addMode('eol',new Doku_Parser_Mode_Eol());
$this->P->parse('Foo\\\\'."\n\n".'Bar');

$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("Foo")),
array('linebreak',array()),
array('p_close',array()),
array('p_open',array()),
array('cdata',array("Bar")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

function testLinebreakInvalid() {
$this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
$this->P->parse('Foo\\\\Bar');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n".'Foo\\\\Bar')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
}

}

0 comments on commit 0a01598

Please sign in to comment.