The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use lib qw( ./lib ../lib );

use Test::More;
use Cwd;
use CSS::Inliner;

plan(tests => 23);

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
);

my $inliner = CSS::Inliner->new();

foreach my $rule (keys %rules) {
  
  my $weight = $inliner->specificity({selector => $rule});

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