The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#============================================================= -*-perl-*-
#
# t/element.t
#
# Test 'query' export hook which monkey patches the query() method
# into HTML::Element.
#
# Written by Andy Wardley, October 2008
#
#========================================================================

use strict;
use warnings;
use lib qw( ./lib ../lib );
use Badger::Filesystem '$Bin Dir';
use Badger::Test
    tests => 24,
    debug => 'HTML::Query',
    args  => \@ARGV;

use HTML::TreeBuilder;
use HTML::Query 'Query query';

my %rules = (
    "li"                    => 1,
    "ul li"                 => 2,
    "ul ol li"              => 3,
    "li.red"                => 11,
    "ul ol li.red"          => 13,
    "td.foo p.bar em"       => 23,
    "td.foo"                => 11,
    "td.foo p"              => 12,
    "td.foo p.bar em.blah"  => 33,
    "td p em"               => 3,
    "td #blah"              => 101,
    "#blah td"              => 101,
    "#blah td.foo"          => 111,
    "#blah td.foo span"     => 112,
    "#blah td.foo span.bar" => 122,
    "div#id-one p>em span[class=under_class2] + span[class~=under_class3]" => 125,
    "span[title='w00t'][title].new-class#test-id[lang='en']" => 141,
    "div em" => 2,
    "div>em" => 2,
    "*" => 0,
    "div#id-one div p>em" => 104,
    "html#simple body#internal" => 202,
    "body#internal" => 101,
    "div:first-child" => 11,
);

foreach my $rule (keys %rules) {
  my $weight = Query->get_specificity($rule);

  is($weight, $rules{$rule}, "correct weight for \"$rule\"");
}