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