1<?php
2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
3//
4// All Rights Reserved. See copyright.txt for details and a complete list of authors.
5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
6// $Id$
7
8/**
9 * @group unit
10 *
11 */
12class EditLib_ParseToWiki_ListTest extends TikiTestCase
13{
14
15	private $el = null; // the EditLib
16
17	function setUp()
18	{
19		TikiLib::lib('edit');
20		$this->el = new EditLib();
21	}
22
23
24	function tearDown()
25	{
26	}
27
28
29	/**
30	 * Test bullet lists
31	 *
32	 * Test single lines with different numbers of <ul>
33	 */
34	function testBulletList()
35	{
36
37		/*
38		 * *Item 1
39		 * *Item 2
40		 */
41		$ex = '*Item 1\n*Item 2\n';
42		$inData = "<ul><li>Item 1\n";
43		$inData .= "</li><li>Item 2\n";
44		$inData .= "</li></ul>\n";
45		$out = $this->el->parseToWiki($inData);
46		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
47		$this->assertEquals($ex, $out);
48
49
50		/*
51		 * *Item 1
52		 * **Item 1a
53		 * *Item 2
54		 */
55		$ex = '*Item 1\n**Item 1a\n*Item 2\n';
56		$inData = "<ul><li>Item 1\n";
57		$inData .= "<ul><li>Item 1a\n";
58		$inData .= "</li></ul></li><li>Item 2\n";
59		$inData .= "</li></ul>\n";
60		$out = $this->el->parseToWiki($inData);
61		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
62		$this->assertEquals($ex, $out);
63	}
64
65
66	/**
67	 * Test the continuation of bullet lists
68	 *
69	 * Test level one and two
70	 */
71	function testBulletListContinuation()
72	{
73
74		/*
75		 * *Item 1
76		 * +Continuation
77		 * *Item 2
78		 */
79		$ex = '*Item 1\n+Continuation\n*Item 2\n';
80		$inData = "<ul><li>Item 1\n";
81		$inData .= "<br />Continuation\n";
82		$inData .= "</li><li>Item 2\n";
83		$inData .= "</li></ul>\n";
84		$out = $this->el->parseToWiki($inData);
85		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
86		$this->assertEquals($ex, $out);
87
88
89		/*
90		 * *Item A
91		 * **Item 1
92		 * ++Continuation
93		 * **Item 2
94		 */
95		$ex = '*Item A\n**Item 1\n++Continuation\n**Item 2\n';
96		$inData = "<ul><li>Item A\n";
97		$inData .= "<ul><li>Item 1\n";
98		$inData .= "<br />Continuation\n";
99		$inData .= "</li><li>Item 2\n";
100		$inData .= "</li></ul></li></ul>\n";
101		$out = $this->el->parseToWiki($inData);
102		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
103		$this->assertEquals($ex, $out);
104	}
105
106
107	/**
108	 * Test numbered lists
109	 *
110	 * Test single lines with different numbers of <ol>
111	 */
112	function testNumberedList()
113	{
114
115		/*
116		 * #Item 1
117		 * #Item 2
118		 */
119		$ex = '#Item 1\n#Item 2\n';
120		$inData = "<ol><li>Item 1\n";
121		$inData .= "</li><li>Item 2\n";
122		$inData .= "</li></ol>\n";
123		$out = $this->el->parseToWiki($inData);
124		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
125		$this->assertEquals($ex, $out);
126
127
128		/*
129		 * #Item 1
130		 * ##Item 1a
131		 * #Item 2
132		 */
133		$ex = '#Item 1\n##Item 1a\n#Item 2\n';
134		$inData = "<ol><li>Item 1\n";
135		$inData .= "<ol><li>Item 1a\n";
136		$inData .= "</li></ol></li><li>Item 2\n";
137		$inData .= "</li></ol>\n";
138		$out = $this->el->parseToWiki($inData);
139		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
140		$this->assertEquals($ex, $out);
141	}
142
143
144	/**
145	 * Test the continuation of numbered lists
146	 *
147	 * Test level one and two
148	 */
149	function testNumberedListContinuation()
150	{
151
152		/*
153		 * #Item 1
154		 * +Continuation
155		 * #Item 2
156		 */
157		$ex = '#Item 1\n+Continuation\n#Item 2\n';
158		$inData = "<ol><li>Item 1\n";
159		$inData .= "<br />Continuation\n";
160		$inData .= "</li><li>Item 2\n";
161		$inData .= "</li></ol>\n";
162		$out = $this->el->parseToWiki($inData);
163		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
164		$this->assertEquals($ex, $out);
165
166
167		/*
168		 * #Item A
169		 * ##Item 1
170		 * ++Continuation
171		 * ##Item 2
172		 */
173		$ex = '#Item A\n##Item 1\n++Continuation\n##Item 2\n';
174		$inData = "<ol><li>Item A\n";
175		$inData .= "<ol><li>Item 1\n";
176		$inData .= "<br />Continuation\n";
177		$inData .= "</li><li>Item 2\n";
178		$inData .= "</li></ol></li></ol>\n";
179		$out = $this->el->parseToWiki($inData);
180		$out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison
181		$this->assertEquals($ex, $out);
182	}
183}
184