]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - tests/unit/lib/InlineParserTest.php
Split into seperate tests
[SourceForge/phpwiki.git] / tests / unit / lib / InlineParserTest.php
1 <?php
2 rcs_id('$Id: InlineParserTest.php,v 1.10 2007-05-29 16:57:05 rurban Exp $');
3
4 /* Copyright (C) 2004 Dan Frankowski <dfrankow@cs.umn.edu>
5  *           (C) 2006, 2007 Reini Urban <rurban@x-ray.at>
6  */
7
8 require_once 'lib/InlineParser.php';
9 require_once 'PHPUnit.php';
10
11 class InlineParserTest extends phpwiki_TestCase {
12
13     //var $ta;
14     
15     function _tests() {
16         // last update: 1.3.13
17         return array(
18         "[label|link]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:15:"Cached_WikiLink":3:{s:5:"_page";s:4:"link";s:6:"_label";s:5:"label";s:9:"_basepage";b:0;}i:2;s:0:"";}}',
19         "[ label | link.jpg ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:15:"Cached_WikiLink":3:{s:5:"_page";s:8:"link.jpg";s:6:"_label";s:5:"label";s:9:"_basepage";b:0;}i:2;s:0:"";}}',
20         "[ image.jpg | link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:15:"Cached_WikiLink":3:{s:5:"_page";s:4:"link";s:6:"_label";O:11:"HtmlElement":4:{s:4:"_tag";s:6:"object";s:5:"_attr";a:5:{s:3:"src";s:0:"";s:3:"alt";s:4:"link";s:5:"title";s:4:"link";s:5:"class";s:12:"inlineobject";s:4:"type";b:0;}s:8:"_content";a:1:{i:0;O:11:"HtmlElement":4:{s:4:"_tag";s:5:"embed";s:5:"_attr";a:5:{s:3:"src";s:0:"";s:3:"alt";s:4:"link";s:5:"title";s:4:"link";s:5:"class";s:12:"inlineobject";s:4:"type";b:0;}s:8:"_content";a:0:{}s:11:"_properties";i:4;}}s:11:"_properties";i:6;}s:9:"_basepage";b:0;}i:2;s:0:"";}}',
21         "[ Upload:image.jpg | link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:15:"Cached_WikiLink":3:{s:5:"_page";s:4:"link";s:6:"_label";O:11:"HtmlElement":4:{s:4:"_tag";s:3:"img";s:5:"_attr";a:4:{s:3:"src";s:42:"http://reini/phpwiki-dev/uploads/image.jpg";s:3:"alt";s:4:"link";s:5:"title";s:4:"link";s:5:"class";s:11:"inlineimage";}s:8:"_content";a:0:{}s:11:"_properties";i:7;}s:9:"_basepage";b:0;}i:2;s:0:"";}}',
22         "[ http://server/image.jpg | link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:15:"Cached_WikiLink":3:{s:5:"_page";s:4:"link";s:6:"_label";O:11:"HtmlElement":4:{s:4:"_tag";s:3:"img";s:5:"_attr";a:4:{s:3:"src";s:23:"http://server/image.jpg";s:3:"alt";s:4:"link";s:5:"title";s:4:"link";s:5:"class";s:11:"inlineimage";}s:8:"_content";a:0:{}s:11:"_properties";i:7;}s:9:"_basepage";b:0;}i:2;s:0:"";}}',
23         "[ label | http://server/link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_ExternalLink":2:{s:4:"_url";s:18:"http://server/link";s:6:"_label";s:5:"label";}i:2;s:0:"";}}',
24         "[ label | Upload:link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:20:"Cached_InterwikiLink":2:{s:5:"_link";s:11:"Upload:link";s:6:"_label";s:5:"label";}i:2;s:0:"";}}',
25         "[ label | phpwiki:action=link ]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:17:"Cached_PhpwikiURL":2:{s:4:"_url";s:19:"phpwiki:action=link";s:6:"_label";s:5:"label";}i:2;s:0:"";}}',
26         "Upload:image.jpg" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:20:"Cached_InterwikiLink":1:{s:5:"_link";s:16:"Upload:image.jpg";}i:2;s:0:"";}}',
27         "http://server/image.jpg" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_ExternalLink":1:{s:4:"_url";s:23:"http://server/image.jpg";}i:2;s:0:"";}}',
28         "http://server/link" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_ExternalLink":1:{s:4:"_url";s:18:"http://server/link";}i:2;s:0:"";}}',
29         "[http:/server/~name/]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_ExternalLink":1:{s:4:"_url";s:18:"http:/server/name/";}i:2;s:0:"";}}',
30         "http:/server/~name/" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_ExternalLink":1:{s:4:"_url";s:18:"http:/server/name/";}i:2;s:0:"";}}',
31         "[label|:link]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:20:"Cached_InterwikiLink":2:{s:5:"_link";s:5:":link";s:6:"_label";s:5:"label";}i:2;s:0:"";}}',
32         "[:link]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:20:"Cached_InterwikiLink":1:{s:5:"_link";s:5:":link";}i:2;s:0:"";}}',
33         "relation::link" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":3:{s:4:"_url";s:14:"relation::link";s:9:"_relation";s:8:"relation";s:5:"_page";s:4:"link";}i:2;s:0:"";}}',
34         "[label|relation::link]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":4:{s:4:"_url";s:14:"relation::link";s:6:"_label";s:5:"label";s:9:"_relation";s:8:"relation";s:5:"_page";s:4:"link";}i:2;s:0:"";}}',
35         "attribute:=1000" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":5:{s:4:"_url";s:15:"attribute:=1000";s:9:"_relation";s:9:"attribute";s:10:"_attribute";s:4:"1000";s:15:"_attribute_base";s:4:"1000";s:5:"_unit";s:0:"";}i:2;s:0:"";}}',
36         "attribute:=1,000km" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":5:{s:4:"_url";s:18:"attribute:=1,000km";s:9:"_relation";s:9:"attribute";s:10:"_attribute";s:7:"1,000km";s:15:"_attribute_base";s:9:"1000000 m";s:5:"_unit";s:1:"m";}i:2;s:0:"";}}',
37         "attribute:=1,000 km" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":5:{s:4:"_url";s:16:"attribute:=1,000";s:9:"_relation";s:9:"attribute";s:10:"_attribute";s:5:"1,000";s:15:"_attribute_base";s:4:"1000";s:5:"_unit";s:0:"";}i:2;s:3:" km";}}',
38         "[attribute:=1,000 km]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":5:{s:4:"_url";s:19:"attribute:=1,000 km";s:9:"_relation";s:9:"attribute";s:10:"_attribute";s:8:"1,000 km";s:15:"_attribute_base";s:9:"1000000 m";s:5:"_unit";s:1:"m";}i:2;s:0:"";}}',
39         "[label|attribute:=1,000 km]" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:0:"";i:1;O:19:"Cached_SemanticLink":6:{s:4:"_url";s:19:"attribute:=1,000 km";s:6:"_label";s:5:"label";s:9:"_relation";s:9:"attribute";s:10:"_attribute";s:8:"1,000 km";s:15:"_attribute_base";s:9:"1000000 m";s:5:"_unit";s:1:"m";}i:2;s:0:"";}}',
40         "This is a :PageLink" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:11:"This is a :";i:1;O:15:"Cached_WikiLink":2:{s:5:"_page";s:8:"PageLink";s:9:"_basepage";b:0;}i:2;s:0:"";}}',
41         "This is a ::PageLink" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:12:"This is a ::";i:1;O:15:"Cached_WikiLink":2:{s:5:"_page";s:8:"PageLink";s:9:"_basepage";b:0;}i:2;s:0:"";}}',
42         "This is a :=PageAttr" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:12:"This is a :=";i:1;O:15:"Cached_WikiLink":2:{s:5:"_page";s:8:"PageAttr";s:9:"_basepage";b:0;}i:2;s:0:"";}}',
43         "This is :~NoLink" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:9:"This is :";i:1;s:6:"NoLink";i:2;s:0:"";}}',
44         "This is ::~NoLink" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:10:"This is ::";i:1;s:6:"NoLink";i:2;s:0:"";}}',
45         "This is :=~NoLink" => 'O:10:"XmlContent":1:{s:8:"_content";a:3:{i:0;s:10:"This is :=";i:1;s:6:"NoLink";i:2;s:0:"";}}');
46     }
47 /*
48     function _setUp() {
49         $i = 0;
50         foreach ($this->_tests() as $wiki => $expected) {
51           $this->ta[$i] = $wiki;
52           $i++;
53         }
54     }
55 */
56     function runTest() {
57         if (substr($this->_name,0,5) == "_test") {
58             $name = rawurldecode(substr($this->_name,5));
59             $this->_testLink($name);
60         } else {
61             call_user_func(
62                            array(
63                                  &$this,
64                                  $this->_name
65                                  )
66                            );
67         }
68     }
69     
70     function testNoWikiWords() {
71         $str1 = 'This has no wiki words, and is all text.';
72         $xmlc1 = TransformInline($str1);
73         $this->assertTrue(isa($xmlc1, 'XmlContent'));
74         $c1 = $xmlc1->getContent();
75         $this->assertEquals(1, count($c1)); 
76         $this->assertEquals($str1, $c1[0]); 
77     }
78
79     function testWikiWord() {
80         $ww = 'WikiWord';
81         $str1 = "This has 1 $ww.";
82         $xml = TransformInline($str1);
83         $this->assertTrue(isa($xml, 'XmlContent'));
84         $c1 = $xml->getContent();
85         $this->assertEquals(3, count($c1));
86         $this->assertTrue(isa($c1[1], 'Cached_WikiLink')); 
87
88         $this->assertEquals('This has 1 ', $c1[0]); 
89         $this->assertEquals($ww, $c1[1]->asString()); 
90         $this->assertEquals('.', $c1[2]); 
91     }
92     
93     function _testLink($wiki, $expected = null) {
94         $uplink = 'http://'.(defined('SERVER_NAME')?SERVER_NAME:'').DATA_PATH.'/uploads/image.jpg';
95         if (is_null($expected)) {
96             $ta = $this->_tests();
97             $expected = $ta[$wiki];
98         }     
99         $xml = TransformInline($wiki);
100         $this->assertTrue(isa($xml, 'XmlContent'));
101         $expectobj = unserialize($expected);
102         /* if (DEBUG & _DEBUG_VERBOSE)
103            echo "\t\"",$wiki,'" => \'',serialize($xml),"',\n"; flush(); */
104         $this->assertEquals($expectobj, $xml);
105     }
106 }
107
108 //$i = 0;
109 foreach (InlineParserTest::_tests() as $wiki => $expected) {
110     $name = "_test".rawurlencode($wiki);
111     $GLOBALS['suite']->addTest(new InlineParserTest($name));
112     //$i++;
113 }
114 //unset($i);
115
116 // (c-file-style: "gnu")
117 // Local Variables:
118 // mode: php
119 // tab-width: 8
120 // c-basic-offset: 4
121 // c-hanging-comment-ender-p: nil
122 // indent-tabs-mode: nil
123 // End:   
124 ?>