test_selectors.php 3.7 KB
<?php
require_once('../phpQuery/phpQuery.php');
phpQuery::$debug = true;
$testName = 'Selectors';
$tests = array(
	array(
		'div:first',
		array(
			'div.articles',
		)
	),
	array(
		"p:contains('title')",
		array(
			'p.title',
			'p.title',
			'p.noTitle',
		)
	),
	array(
		"p:contains('title 2')",
		array(
			'p.title',
		)
	),
	array(
		'li:eq(1)',
		array(
			'li#testID',
		)
	),
	array(
		'li:eq(1) p:eq(1)',
		array(
			'p.title',
		)
	),
	array(
		'*[rel="test"]',
		array(
			'p',
			'p'
		)
	),
	array(
		'#testID p:first',
		array(
			'p'
		)
	),
	array(
		"p:not('.title'):not('.body')",
		array(
			'p',
			'p',
			'p',
			'p.noTitle',
			'p.after',
		)
	),
	array(
		"[content*=html]",
		array(
			'meta'
		)
	),
	array(
		"li#testID, div.articles",
		array(
			'li#testID',
			'div.articles'
		)
	),
	array(
		"script[src]:not([src^=<?php])",
		array(
			'script'
		)
	),
//	array(
//		'li:not([ul/li])',
//		array(
//			'li',
//			'li#testID',
//			'li',
//			'li.nested',
//			'li.second',
//		)
//	),
	array(
		'li:has(ul)',
		array(
			'li#i_have_nested_list',
		)
	),
	array(
		'p[rel] + p',
		array(
			'p.title',
			'p.noTitle',
		)
	),
	array(
		'ul:first > li:first ~ *',
		array(
			'li#testID',
			'li',
		)
	),
	// CSS3 pseudoclasses
	array(
		'li:only-child',
		array(
			'li.nested',
		)
	),
	array(
		'p[rel=test]:parent',
		array(
			'p',
			'p',
		)
	),
	array(
		'li:first-child',
		array(
			'li',
			'li#i_have_nested_list',
			'li.nested',
		)
	),
	array(
		':last-child',
		array(
			'html',
			'script',
			'body',
			'p.body',
			'p.body',
			'li',
			'p.body',
			'p.after',
			'ul',
			'ul',
			'li.nested',
			'li.second',
		)
	),
	array(
		':nth-child(1n+1)',
		array(
			'html',
			'head',
			'meta',
			'div.articles',
			'ul',
			'li',
			'p',
			'p',
			'p',
			'li#i_have_nested_list',
			'ul',
			'li.nested',
		)
	),
	array(
		':nth-child(3n+6)',
		array(
			'script',
			'p.body',
			'p.body',
			'li',
			'p.body',
		)
	),
	array(
		':nth-child(2n)',
		array(
			'title',
			'script',
			'body',
			'p.title',
			'li#testID',
			'p.title',
			'p.noTitle',
			'p.after',
			'ul',
			'li.second',
		)
	),
	array(
		':nth-child(1)',
		array(
			'html',
			'head',
			'meta',
			'div.articles',
			'ul',
			'li',
			'p',
			'p',
			'p',
			'li#i_have_nested_list',
			'ul',
			'li.nested',
		)
	),
	array(
		':nth-child(odd)',
		array(
			'html',
			'head',
			'meta',
			'script',
			'div.articles',
			'ul',
			'li',
			'p',
			'p.body',
			'p',
			'p.body',
			'li',
			'p',
			'p.body',
			'li#i_have_nested_list',
			'ul',
			'li.nested',
		)
	),
	array(
		':nth-child(even)',
		array(
			'title',
			'script',
			'body',
			'p.title',
			'li#testID',
			'p.title',
			'p.noTitle',
			'p.after',
			'ul',
			'li.second',
		)
	),
	array(
		':empty',
		array(
			'meta',
			'script',
			'script',
			'li.nested',
		)
	),


//	array(
//		'',
//		array(
//			'',
//		)
//	),
//	array(
//		'',
//		array(
//			'',
//		)
//	),
//	array(
//		'',
//		array(
//			'',
//		)
//	),
);

phpQuery::newDocumentFile('test.html');
foreach( $tests as $k => $test ) {
	$tests[ $k ][2] = pq( $test[0] )->whois();
}
foreach( $tests as $test ) {
	if ( $test[1] == $test[2] )
		print "Test '{$test[0]}' PASSED :)";
	else {
		print "Test '{$test[0]}' <strong>FAILED</strong> !!!";
		print_r($test[2]);
	}
	print "<br /><br />";
}

//
$testName = 'Complicated selector 1';
phpQuery::newDocumentFile('test.html');
pq('<select name="test[]"><option value=3>test</option></select>')
	->appendTo('body');
$result = pq('select[name="test[]"]:has(option[value=3])');
if ( $result->size() == 1 )
	print "Test '{$testName}' PASSED :)";
else
	print "Test '{$testName}' <strong>FAILED</strong> !!! ";
$result->dump();
print "\n";
?>