File: CSSImportRule.t

package info (click to toggle)
libcss-dom-perl 0.17-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,044 kB
  • sloc: perl: 7,310; makefile: 2
file content (104 lines) | stat: -rw-r--r-- 2,920 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/perl -T

use strict; use warnings;
our $tests;
BEGIN { ++$INC{'tests.pm'} }
sub tests::VERSION { $tests += pop };
use Test::More;
plan tests => $tests;

use CSS::DOM::Exception;


use tests 1; # use
use_ok 'CSS::DOM::Rule::Import';

require CSS::DOM;
my $rule = (
	my $ss = CSS::DOM::parse(
		'@import "foo.css" tv, screen'
	)
)-> cssRules->[0];

use tests 1; # isa
isa_ok $rule, 'CSS::DOM::Rule::Import';

use tests 7; #constructor
{
	(my $ss = new CSS::DOM)->insertRule('@Import "print"',0);
	my $rule = $ss->cssRules->[0];
	my $empty_rule = new CSS::DOM::Rule::Import $rule;
	isa_ok $empty_rule,'CSS::DOM::Rule::Import',
		'result of new CSS::DOM::Rule::Import (empty rule)';
	is $empty_rule->parentRule, $rule, 'parentRule of empty rule';
	is $empty_rule->parentStyleSheet, $ss,
		'parentStyleSheet of empty rule';
	is $empty_rule->type, &CSS::DOM::Rule::IMPORT_RULE,
		'type of empty rule';

	$empty_rule = new CSS::DOM::Rule::Import $ss;
	isa_ok $empty_rule, 'CSS::DOM::Rule::Import',
		'empty rule with no parent rule';
	is +()=$empty_rule->parentRule, 0,
		'parentRule of empty rule without parent rule';
	is $empty_rule->parentStyleSheet, $ss,
		'parentStyleSheet of empty rule w/no parent rule';
}

use tests 2; # href
{
	(my $ss =new CSS::DOM)->insertRule('@Import "foo.css"',0);
	my $rule = $ss->cssRules->[0];
	is $rule->href, "foo.css", 'href when its a string in the source';

	($ss =new CSS::DOM)->insertRule('@Import url("har.css")',0);
	$rule = $ss->cssRules->[0];
	is $rule->href, "har.css", 'href when its a url in the source';
}

use tests 2; # media
{
	isa_ok $rule->media, 'CSS::DOM::MediaList';
	$rule->media->mediaText('tv, screen');
	is_deeply [$rule->media], [tv=>screen=>],
		'media in list context';
}


use tests 5; # styleSheet
{
	(my $ss = new CSS::DOM) ->insertRule('@Import "foo.css"',0);
	my $rule = $ss->cssRules->[0];
	is +()=$rule->styleSheet, 0, 'null styleSheet';

	($ss = new CSS::DOM url_fetcher =>
		sub {return "a { color:red}" }
	)->insertRule('@Import "foo.css"',0);
	$rule = $ss->cssRules->[0];

	isa_ok $rule->styleSheet, 'CSS::DOM', 'styleSheet';
	is join('', map $_->cssText, $rule->styleSheet->cssRules),	
		"a { color: red }\n",
		'seralised styleSheet';

	($ss = new CSS::DOM url_fetcher => sub { })
		->insertRule('@Import "foo.css"',0);
	$rule = $ss->cssRules->[0];

	$rule->styleSheet; # keep this line here; multiple calls to
	                   # styleSheet were making it return (0) in list
	                   # context instead of ()
	is +()=$rule->styleSheet, 0, 
		'null styleSheet when callback returns undef';

	my %urls = (
		'foo.css' => '@import "bar.css"',
		'bar.css' => 'a { color: blue }',
	);
	is CSS::DOM::parse('@import "foo.css',url_fetcher=>sub{$urls{$_[0]}})
		->cssRules->[0]->styleSheet
		->cssRules->[0]->styleSheet
		->cssRules->[0]->style->color,
		'blue',
	 'styleSheet of a recursive/nested @import, whatever you call it';
}