public function testToArray() { $root = new HtmlNode(new Tag('root')); $parent = new HtmlNode(new Tag('div')); $child1 = new HtmlNode(new Tag('a')); $child2 = new HtmlNode(new Tag('p')); $child3 = new HtmlNode(new Tag('a')); $root->addChild($parent); $parent->addChild($child1); $parent->addChild($child2); $child2->addChild($child3); $selector = new Selector('a'); $collection = $selector->find($root); $array = $collection->toArray(); $lastA = end($array); $this->assertEquals($child3->id(), $lastA->id()); }
public function testFindChildUsingChildSelector() { $root = new HtmlNode(new Tag('root')); $parent = new HtmlNode(new Tag('div')); $child1 = new HtmlNode(new Tag('ul')); $child2 = new HtmlNode(new Tag('span')); $child3 = new HtmlNode(new Tag('ul')); $root->addChild($parent); $parent->addChild($child1); $child2->addChild($child3); $parent->addChild($child2); $selector = new Selector('div > ul'); $this->assertEquals(1, count($selector->find($root))); }
public function testTextLookInChildrenAndNoChildren() { $p = new HtmlNode('p'); $a = new HtmlNode('a'); $a->addChild(new TextNode('click me')); $p->addChild(new TextNode('Please ')); $p->addChild($a); $p->addChild(new TextNode('!')); $p->text; $p->text(true); $this->assertEquals('Please click me!', $p->text(true)); }
public function testFindXpathKeySelector() { $parent = new HtmlNode(new Tag('div')); $child1 = new HtmlNode(new Tag('a')); $child2 = new HtmlNode(new Tag('p')); $child3 = new HtmlNode(new Tag('a')); $child3->getTag()->setAttributes(['class' => ['value' => 'link outer', 'doubleQuote' => false]]); $parent->addChild($child1); $parent->addChild($child2); $parent->addChild($child3); $selector = new Selector('div[1]'); $this->assertEquals($parent->id(), $selector->find($parent)[0]->id()); }
public function testIterator() { $div = new Tag('div'); $div->setAttributes(['class' => ['value' => 'all', 'doubleQuote' => true]]); $a = new Tag('a'); $a->setAttributes(['href' => ['value' => 'http://google.com', 'doubleQuote' => false]]); $br = new Tag('br'); $br->selfClosing(); $parent = new HtmlNode($div); $childa = new HtmlNode($a); $childbr = new HtmlNode($br); $parent->addChild($childa); $parent->addChild($childbr); $childa->addChild(new TextNode('link')); $children = 0; foreach ($parent as $child) { ++$children; } $this->assertEquals(2, $children); }