c9b4c4681314e4a3f7b66729247ee4e13683415e.svn-base 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. // $Rev: 115 $
  3. // -----------------------------------------------------------------------------
  4. // setup
  5. error_reporting(E_ALL);
  6. require_once('../simple_html_dom.php');
  7. $dom = new simple_html_dom;
  8. // -----------------------------------------------------------------------------
  9. // empty test
  10. $str = '';
  11. $dom->load($str);
  12. assert($dom->save()==$str);
  13. // -----------------------------------------------
  14. $str = null;
  15. $dom->load($str);
  16. assert($dom->save()==$str);
  17. // -----------------------------------------------------------------------------
  18. // text test
  19. $str = <<<HTML
  20. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  21. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  22. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"></html>
  23. HTML;
  24. $dom->load($str);
  25. assert(count($dom->find('unknown'))==1);
  26. assert(count($dom->find('text'))==1);
  27. // -----------------------------------------------------------------------------
  28. // string quote test
  29. $str = <<<HTML
  30. <div class="class0" id="id0" >
  31. okok<br>
  32. <input type=submit name="btnG" value="go" onclick='goto("url0")'>
  33. <br/>
  34. <div><input type=submit name="btnG2" value="go" onclick="goto('url1'+'\'')"/></div>
  35. <input type=submit name="btnG2" value="go" onclick="goto('url2')"/>
  36. <div><input type=submit name="btnG2" value="go" onclick='goto("url4"+"\"")'></div>
  37. <br/>
  38. </div>
  39. HTML;
  40. $dom->load($str);
  41. $es = $dom->find('input');
  42. assert(count($es)==4);
  43. assert($es[0]->onclick=='goto("url0")');
  44. assert($es[1]->onclick=="goto('url1'+'\'')");
  45. assert($es[2]->onclick=="goto('url2')");
  46. assert($es[3]->onclick=='goto("url4"+"\"")');
  47. // -----------------------------------------------------------------------------
  48. // clone test
  49. $str = <<<HTML
  50. <div class="class0" id="id0" >
  51. okok<br>
  52. <input type=submit name="btnG" value="go" onclick='goto("url0")'>
  53. <br/>
  54. <div><input type=submit name="btnG2" value="go" onclick="goto('url1'+'\'')"/></div>
  55. <input type=submit name="btnG2" value="go" onclick="goto('url2')"/>
  56. <div><input type=submit name="btnG2" value="go" onclick='goto("url4"+"\"")'></div>
  57. <br/>
  58. </div>
  59. HTML;
  60. $dom->load($str);
  61. $es = $dom->find('input');
  62. assert(count($es)==4);
  63. assert($es[0]->onclick=='goto("url0")');
  64. assert($es[1]->onclick=="goto('url1'+'\'')");
  65. assert($es[2]->onclick=="goto('url2')");
  66. assert($es[3]->onclick=='goto("url4"+"\"")');
  67. unset($es);
  68. $dom2 = clone($dom);
  69. $es = $dom2->find('input');
  70. assert(count($es)==4);
  71. assert($es[0]->onclick=='goto("url0")');
  72. assert($es[1]->onclick=="goto('url1'+'\'')");
  73. assert($es[2]->onclick=="goto('url2')");
  74. assert($es[3]->onclick=='goto("url4"+"\"")');
  75. // -----------------------------------------------
  76. $str = <<<HTML
  77. <div class='class0' id="id0" aa='aa' bb="bb" cc='"cc"' dd="'dd'"></div>
  78. HTML;
  79. $dom->load($str);
  80. assert($dom==$str);
  81. assert($dom->save()==$str);
  82. // -----------------------------------------------------------------------------
  83. // monkey test
  84. $str = <<<HTML
  85. <
  86. HTML;
  87. $dom->load($str);
  88. assert($dom==$str);
  89. assert($dom->save()==$str);
  90. // -----------------------------------------------
  91. $str = <<<HTML
  92. <
  93. HTML;
  94. $dom->load($str);
  95. assert($dom==$str);
  96. assert($dom->save()==$str);
  97. // -----------------------------------------------
  98. $str = <<<HTML
  99. <
  100. HTML;
  101. $dom->load($str);
  102. assert($dom==$str);
  103. assert($dom->save()==$str);
  104. // -----------------------------------------------
  105. $str = <<<HTML
  106. <a
  107. HTML;
  108. $dom->load($str);
  109. assert($dom==$str);
  110. assert($dom->save()==$str);
  111. // -----------------------------------------------
  112. $str = <<<HTML
  113. <a<
  114. HTML;
  115. $dom->load($str);
  116. assert($dom==$str);
  117. assert($dom->save()==$str);
  118. // -----------------------------------------------
  119. $str = <<<HTML
  120. <<<<ab
  121. HTML;
  122. $dom->load($str);
  123. assert($dom==$str);
  124. assert($dom->save()==$str);
  125. // -----------------------------------------------
  126. $str = <<<HTML
  127. <<<<ab
  128. HTML;
  129. $dom->load($str);
  130. assert($dom==$str);
  131. assert($dom->save()==$str);
  132. // -----------------------------------------------
  133. $str = <<<HTML
  134. <<><<>ab
  135. HTML;
  136. $dom->load($str);
  137. assert($dom==$str);
  138. assert($dom->save()==$str);
  139. // -----------------------------------------------
  140. $str = <<<HTML
  141. <abc
  142. HTML;
  143. $dom->load($str);
  144. assert($dom==$str);
  145. assert($dom->save()==$str);
  146. // -----------------------------------------------
  147. $str = <<<HTML
  148. >
  149. HTML;
  150. $dom->load($str);
  151. assert($dom==$str);
  152. assert($dom->save()==$str);
  153. // -----------------------------------------------
  154. // $str = <<<HTML
  155. // <abc
  156. // (<1 mol%)
  157. // HTML;
  158. // $dom->load($str);
  159. // echo $dom;
  160. // assert($dom==$str);
  161. // assert($dom->save()==$str);
  162. // -----------------------------------------------
  163. $str = <<<HTML
  164. (<1 mol%)
  165. HTML;
  166. $dom->load($str);
  167. assert($dom==$str);
  168. assert($dom->save()==$str);
  169. // -----------------------------------------------------------------------------
  170. // rnadom string test
  171. function str_random($length)
  172. {
  173. $str = "";
  174. srand((double)microtime()*1000000);
  175. $char_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  176. $char_list .= "abcdefghijklmnopqrstuvwxyz";
  177. $char_list .= "1234567890";
  178. $char_list .= "<>!?[]%^&*()";
  179. for($i=0; $i<$length; ++$i)
  180. $str .= substr($char_list,(rand()%(strlen($char_list))), 1);
  181. return $str;
  182. }
  183. for($i=0; $i<60; ++$i) {
  184. $str = str_random($i);
  185. //echo $str."\n<br>";
  186. $dom->load($str, false);
  187. //echo $dom->save()."\n<br>";
  188. assert($dom==$str);
  189. }
  190. // -----------------------------------------------------------------------------
  191. // lowercase test
  192. $str = <<<HTML
  193. <img class="class0" id="id0" src="src0">
  194. HTML;
  195. $dom->load($str);
  196. assert(count($dom->find('img'))==1);
  197. assert(count($dom->find('IMG'))==1);
  198. assert(isset($dom->find('img', 0)->class));
  199. assert(!isset($dom->find('img', 0)->CLASS));
  200. assert($dom->find('img', 0)->class=='class0');
  201. assert($dom==$str);
  202. // -----------------------------------------------
  203. $str = <<<HTML
  204. <IMG CLASS="class0" ID="id0" SRC="src0">
  205. HTML;
  206. $dom->load($str);
  207. assert(count($dom->find('img'))==1);
  208. assert(count($dom->find('IMG'))==1);
  209. assert(isset($dom->find('img', 0)->class));
  210. assert(!isset($dom->find('img', 0)->CLASS));
  211. assert($dom->find('img', 0)->class=='class0');
  212. assert($dom==strtolower($str));
  213. // -----------------------------------------------
  214. $str = <<<HTML
  215. <IMG CLASS="class0" ID="id0" SRC="src0">
  216. HTML;
  217. $dom->load($str, false);
  218. assert(count($dom->find('img'))==0);
  219. assert(count($dom->find('IMG'))==1);
  220. assert(isset($dom->find('IMG', 0)->CLASS));
  221. assert(!isset($dom->find('IMG', 0)->class));
  222. assert($dom->find('IMG', 0)->CLASS=='class0');
  223. assert($dom==$str);
  224. // -----------------------------------------------------------------------------
  225. // tear down
  226. $dom->clear();
  227. unset($dom);
  228. ?>