217 lines
5.4 KiB
PHP
217 lines
5.4 KiB
PHP
|
<?php
|
||
|
require_once 'PHPUnit/Autoload.php';
|
||
|
require_once '../phpQuery/phpQuery.php';
|
||
|
//phpQuery::$debug = true;
|
||
|
|
||
|
class phpQueryBasicTest extends PHPUnit_Framework_TestCase {
|
||
|
function provider() {
|
||
|
// TODO change filename
|
||
|
return array( array(
|
||
|
phpQuery::newDocumentFile('test.html')
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testFilterWithPseudoclass( $pq ) {
|
||
|
// xdebug_break();
|
||
|
// function testFilterWithPseudoclass( $pq ) {
|
||
|
// print_r(`ls`);
|
||
|
// $pq = phpQuery::newDocumentFile('test.html');
|
||
|
$pq = $pq->find('p')
|
||
|
->filter('.body:gt(1)');
|
||
|
$result = array(
|
||
|
'p.body',
|
||
|
);
|
||
|
|
||
|
$this->assertTrue( $pq->whois() == $result );
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testSlice( $pq ) {
|
||
|
$testResult = array(
|
||
|
'li#testID',
|
||
|
);
|
||
|
$pq = $pq->find('li')
|
||
|
->slice(1, 2);
|
||
|
|
||
|
$this->assertTrue( $pq->whois() == $testResult );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testSlice2( $pq ) {
|
||
|
// SLICE2
|
||
|
$testResult = array(
|
||
|
'li#testID',
|
||
|
'li',
|
||
|
'li#i_have_nested_list',
|
||
|
'li.nested',
|
||
|
);
|
||
|
|
||
|
$pq = $pq->find('li')
|
||
|
->slice(1, -1);
|
||
|
|
||
|
$this->assertTrue( $pq->whois() == $testResult );
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @return void
|
||
|
*/
|
||
|
function testMultiInsert() {
|
||
|
// Multi-insert
|
||
|
$pq = phpQuery::newDocument('<li><span class="field1"></span><span class="field1"></span></li>')
|
||
|
->find('.field1')
|
||
|
->php('longlongtest');
|
||
|
$validResult = '<li><span class="field1"><php>longlongtest</php></span><span class="field1"><php>longlongtest</php></span></li>';
|
||
|
similar_text($pq->htmlOuter(), $validResult, $similarity);
|
||
|
|
||
|
$this->assertGreaterThan( 80, $similarity);
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testIndex( $pq ) {
|
||
|
$testResult = 1;
|
||
|
$pq = $pq->find('p')
|
||
|
->index(
|
||
|
$pq->find('p.title:first')
|
||
|
);
|
||
|
|
||
|
$this->assertTrue( $pq == $testResult );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testClone( $pq ) {
|
||
|
$testResult = 3;
|
||
|
$document = null;
|
||
|
$pq = $pq->toReference($document)
|
||
|
->find('p:first');
|
||
|
|
||
|
foreach(array(0,1,2) as $i) {
|
||
|
$pq->clone()
|
||
|
->addClass("clone-test")
|
||
|
->addClass("class-$i")
|
||
|
->insertBefore($pq);
|
||
|
}
|
||
|
|
||
|
$size = $document->find('.clone-test')->size();
|
||
|
$this->assertEquals( $testResult, $size);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testNextSibling( $pq ) {
|
||
|
$testResult = 3;
|
||
|
$document = null;
|
||
|
$result = $pq->find('li:first')
|
||
|
->next()
|
||
|
->next()
|
||
|
->prev()
|
||
|
->is('#testID');
|
||
|
|
||
|
$this->assertTrue( $result );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param phpQueryObject $pq
|
||
|
* @dataProvider provider
|
||
|
* @return void
|
||
|
*/
|
||
|
function testSimpleDataInsertion( $pq ) {
|
||
|
$testName = 'Simple data insertion';
|
||
|
$testResult = <<<EOF
|
||
|
<div class="articles">
|
||
|
div.articles text node
|
||
|
<ul>
|
||
|
|
||
|
<li>
|
||
|
<p>This is paragraph of first LI</p>
|
||
|
<p class="title">News 1 title</p>
|
||
|
<p class="body">News 1 body</p>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<p>This is paragraph of first LI</p>
|
||
|
<p class="title">News 2 title</p>
|
||
|
<p class="body">News 2 body</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>This is paragraph of first LI</p>
|
||
|
<p class="title">News 3</p>
|
||
|
<p class="body">News 3 body</p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<p>paragraph after UL</p>
|
||
|
</div>
|
||
|
EOF;
|
||
|
$rows = array(
|
||
|
array(
|
||
|
'title' => 'News 1 title',
|
||
|
'body' => 'News 1 body',
|
||
|
),
|
||
|
array(
|
||
|
'title' => 'News 2 title',
|
||
|
'body' => 'News 2 body',
|
||
|
),
|
||
|
array(
|
||
|
'title' => 'News 3',
|
||
|
'body' => 'News 3 body',
|
||
|
),
|
||
|
);
|
||
|
$articles = $pq->find('.articles ul');
|
||
|
$rowSrc = $articles->find('li')
|
||
|
->remove()
|
||
|
->eq(0);
|
||
|
foreach ($rows as $r) {
|
||
|
$row = $rowSrc->_clone();
|
||
|
foreach ($r as $field => $value) {
|
||
|
$row->find(".{$field}")
|
||
|
->html($value);
|
||
|
// die($row->htmlOuter());
|
||
|
}
|
||
|
$row->appendTo($articles);
|
||
|
}
|
||
|
$result = $pq->find('.articles')->htmlOuter();
|
||
|
//print htmlspecialchars("<pre>{$result}</pre>").'<br />';
|
||
|
$similarity = 0.0;
|
||
|
similar_text($testResult, $result, $similarity);
|
||
|
|
||
|
$this->assertGreaterThan( 90, $similarity);
|
||
|
}
|
||
|
|
||
|
|
||
|
// function __construct() {
|
||
|
// xdebug_break();
|
||
|
// parent::__construct();
|
||
|
// }
|
||
|
}
|
||
|
|
||
|
$test = new phpQueryBasicTest();
|
||
|
//$test->testFilterWithPseudoclass();
|
||
|
$result = null;
|
||
|
//$test->run($result);
|