test.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. require_once 'PHPUnit/Autoload.php';
  3. require_once '../phpQuery/phpQuery.php';
  4. //phpQuery::$debug = true;
  5. class phpQueryBasicTest extends PHPUnit_Framework_TestCase {
  6. function provider() {
  7. // TODO change filename
  8. return array( array(
  9. phpQuery::newDocumentFile('test.html')
  10. ));
  11. }
  12. /**
  13. * @param phpQueryObject $pq
  14. * @dataProvider provider
  15. * @return void
  16. */
  17. function testFilterWithPseudoclass( $pq ) {
  18. // xdebug_break();
  19. // function testFilterWithPseudoclass( $pq ) {
  20. // print_r(`ls`);
  21. // $pq = phpQuery::newDocumentFile('test.html');
  22. $pq = $pq->find('p')
  23. ->filter('.body:gt(1)');
  24. $result = array(
  25. 'p.body',
  26. );
  27. $this->assertTrue( $pq->whois() == $result );
  28. }
  29. /**
  30. * @param phpQueryObject $pq
  31. * @dataProvider provider
  32. * @return void
  33. */
  34. function testSlice( $pq ) {
  35. $testResult = array(
  36. 'li#testID',
  37. );
  38. $pq = $pq->find('li')
  39. ->slice(1, 2);
  40. $this->assertTrue( $pq->whois() == $testResult );
  41. }
  42. /**
  43. * @param phpQueryObject $pq
  44. * @dataProvider provider
  45. * @return void
  46. */
  47. function testSlice2( $pq ) {
  48. // SLICE2
  49. $testResult = array(
  50. 'li#testID',
  51. 'li',
  52. 'li#i_have_nested_list',
  53. 'li.nested',
  54. );
  55. $pq = $pq->find('li')
  56. ->slice(1, -1);
  57. $this->assertTrue( $pq->whois() == $testResult );
  58. }
  59. /**
  60. * @return void
  61. */
  62. function testMultiInsert() {
  63. // Multi-insert
  64. $pq = phpQuery::newDocument('<li><span class="field1"></span><span class="field1"></span></li>')
  65. ->find('.field1')
  66. ->php('longlongtest');
  67. $validResult = '<li><span class="field1"><php>longlongtest</php></span><span class="field1"><php>longlongtest</php></span></li>';
  68. similar_text($pq->htmlOuter(), $validResult, $similarity);
  69. $this->assertGreaterThan( 80, $similarity);
  70. }
  71. /**
  72. * @param phpQueryObject $pq
  73. * @dataProvider provider
  74. * @return void
  75. */
  76. function testIndex( $pq ) {
  77. $testResult = 1;
  78. $pq = $pq->find('p')
  79. ->index(
  80. $pq->find('p.title:first')
  81. );
  82. $this->assertTrue( $pq == $testResult );
  83. }
  84. /**
  85. * @param phpQueryObject $pq
  86. * @dataProvider provider
  87. * @return void
  88. */
  89. function testClone( $pq ) {
  90. $testResult = 3;
  91. $document = null;
  92. $pq = $pq->toReference($document)
  93. ->find('p:first');
  94. foreach(array(0,1,2) as $i) {
  95. $pq->clone()
  96. ->addClass("clone-test")
  97. ->addClass("class-$i")
  98. ->insertBefore($pq);
  99. }
  100. $size = $document->find('.clone-test')->size();
  101. $this->assertEquals( $testResult, $size);
  102. }
  103. /**
  104. * @param phpQueryObject $pq
  105. * @dataProvider provider
  106. * @return void
  107. */
  108. function testNextSibling( $pq ) {
  109. $testResult = 3;
  110. $document = null;
  111. $result = $pq->find('li:first')
  112. ->next()
  113. ->next()
  114. ->prev()
  115. ->is('#testID');
  116. $this->assertTrue( $result );
  117. }
  118. /**
  119. * @param phpQueryObject $pq
  120. * @dataProvider provider
  121. * @return void
  122. */
  123. function testSimpleDataInsertion( $pq ) {
  124. $testName = 'Simple data insertion';
  125. $testResult = <<<EOF
  126. <div class="articles">
  127. div.articles text node
  128. <ul>
  129. <li>
  130. <p>This is paragraph of first LI</p>
  131. <p class="title">News 1 title</p>
  132. <p class="body">News 1 body</p>
  133. </li>
  134. <li>
  135. <p>This is paragraph of first LI</p>
  136. <p class="title">News 2 title</p>
  137. <p class="body">News 2 body</p>
  138. </li>
  139. <li>
  140. <p>This is paragraph of first LI</p>
  141. <p class="title">News 3</p>
  142. <p class="body">News 3 body</p>
  143. </li>
  144. </ul>
  145. <p>paragraph after UL</p>
  146. </div>
  147. EOF;
  148. $rows = array(
  149. array(
  150. 'title' => 'News 1 title',
  151. 'body' => 'News 1 body',
  152. ),
  153. array(
  154. 'title' => 'News 2 title',
  155. 'body' => 'News 2 body',
  156. ),
  157. array(
  158. 'title' => 'News 3',
  159. 'body' => 'News 3 body',
  160. ),
  161. );
  162. $articles = $pq->find('.articles ul');
  163. $rowSrc = $articles->find('li')
  164. ->remove()
  165. ->eq(0);
  166. foreach ($rows as $r) {
  167. $row = $rowSrc->_clone();
  168. foreach ($r as $field => $value) {
  169. $row->find(".{$field}")
  170. ->html($value);
  171. // die($row->htmlOuter());
  172. }
  173. $row->appendTo($articles);
  174. }
  175. $result = $pq->find('.articles')->htmlOuter();
  176. //print htmlspecialchars("<pre>{$result}</pre>").'<br />';
  177. $similarity = 0.0;
  178. similar_text($testResult, $result, $similarity);
  179. $this->assertGreaterThan( 90, $similarity);
  180. }
  181. // function __construct() {
  182. // xdebug_break();
  183. // parent::__construct();
  184. // }
  185. }
  186. $test = new phpQueryBasicTest();
  187. //$test->testFilterWithPseudoclass();
  188. $result = null;
  189. //$test->run($result);