Exemplo n.º 1
0
 function testCSSSelectors()
 {
     $xmlString = \arc\xml::{'list'}(\arc\xml::item(['class' => 'first item', 'id' => 'special'], 'item1', \arc\xml::input(['type' => 'radio', 'checked' => 'checked'], 'a radio')), \arc\xml::item(['class' => 'item special-class'], 'item2', \arc\xml::item(['class' => 'item last', 'data' => 'extra data'], 'item3')));
     $xml = \arc\xml::parse($xmlString);
     $selectors = ['list item' => ['item1', 'item2', 'item3'], 'list > item' => ['item1', 'item2'], 'item:first-child' => ['item1', 'item3'], 'input:checked' => ['a radio'], 'item + item' => ['item2'], 'item ~ item' => ['item2'], 'item[data]' => ['item3'], 'item[data="extra data"]' => ['item3'], 'item[data="extra"]' => ['item3'], 'item#special' => ['item1'], '#special' => ['item1'], 'item.first' => ['item1'], 'item.last' => ['item3'], 'item.item' => ['item1', 'item2', 'item3'], '.first' => ['item1'], '.last' => ['item3'], '.item' => ['item1', 'item2', 'item3'], 'item.special-class' => ['item2'], 'list > item.item' => ['item1', 'item2'], 'list > item > item.last' => ['item3'], 'list > item ~ item' => ['item2']];
     foreach ($selectors as $css => $expectedValues) {
         $result = $xml->find($css);
         foreach ($result as $index => $value) {
             $result[$index] = (string) trim($value->nodeValue);
         }
         $this->assertEquals($expectedValues, $result, 'selector: ' . $css);
     }
 }