File: CSSMediaRule.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 (136 lines) | stat: -rw-r--r-- 3,634 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/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::Media';


require CSS::DOM;
my $rule = (
	my $ss = CSS::DOM::parse(
		'@media print { body { background: none } }'
	)
)-> cssRules->[0];

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

use tests 7; #constructor
{
	(my $ss = new CSS::DOM)->insertRule('@media print {}',0);
	my $rule = $ss->cssRules->[0];
	my $empty_rule = new CSS::DOM::Rule::Media $rule;
	isa_ok $empty_rule,'CSS::DOM::Rule::Media',
		'result of new CSS::DOM::Rule::Media (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::MEDIA_RULE,
		'type of empty rule';

	$empty_rule = new CSS::DOM::Rule::Media $ss;
	isa_ok $empty_rule, 'CSS::DOM::Rule::Media',
		'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; # media
{
	isa_ok $rule->media, 'CSS::DOM::MediaList';
	$rule->media->mediaText('screen, printer');
	is_deeply [$rule->media], [screen=>printer=>],
		'media in list context';
}

use tests 2; # cssRules
{
	my $rule = (
		CSS::DOM::parse(
			'@media print {
				a{text-decoration: none} p { margin: 0 }
			 }'
		)
	)-> cssRules->[0];

	is +()=$rule->cssRules, 2, 'cssRules in list context';
	isa_ok my $rules = cssRules $rule, 'CSS::DOM::RuleList',
		'cssRules in scalar context';
}

use tests 13; # insertRule
{
	my $rule = (
		my $ss = CSS::DOM::parse(
			'@media print {
				a{text-decoration: none} p { margin: 0 }
			 }'
		)
	)-> cssRules->[0];
	
	is $rule->insertRule('b { font-weight: bold }', 0), 0,
		'retval of insertRule';
	is_deeply [map $_->selectorText, $rule->cssRules], [qw/ b a p /],
		'result of insertRule with 0 for the index';
	is $rule->cssRules->[0]->style->cssText, 'font-weight: bold',
		'Are the contents of insertRule\'s new rule present?';
	isa_ok $rule->cssRules->[0], 'CSS::DOM::Rule';

	is $rule->insertRule('i {}', -1), 2,
		'retval of insertRule with negative index';
	is_deeply [map $_->selectorText, $rule->cssRules], [qw/ b a i p /],
		'result of insertRule with negative index';

	{
		local $SIG{__WARN__} = sub{};
		is $rule->insertRule('u {}', 27), 4,
			'retval of insertRule with large index';
	}
	is_deeply [map $_->selectorText, $rule->cssRules],
		 [qw/ b a i p u /],
		'result of insertRule with large index';

	is +()=eval{$rule->insertRule(' two{} rules{}',0)}, 0,
		'insertRule fails with two rules';
	isa_ok $@, 'CSS::DOM::Exception','$@';
	cmp_ok $@, '==', CSS::DOM::Exception::SYNTAX_ERR,
		'$@ is a SYNTAX_ERR';

	my $subrule = $rule->cssRules->[
		$rule->insertRule('foo{bar:baz}',0)
	];
	is $subrule->parentStyleSheet, $ss,
		'parentStyleSheet is set by insertRule';
	is $subrule->parentRule, $rule, 'insertRule sets teh parentRule';
}

use tests 4; # deleteRule
{
	my $rule = (
		CSS::DOM::parse(
			'@media print {
			  a{text-decoration: none} p { margin: 0 } i {}
			 }'
		)
	)-> cssRules->[0];
	is +()=$rule->deleteRule(1), 0, 'retval of deleteRule';
	is_deeply [map $_->selectorText, $rule->cssRules], [qw/ a i /],
		'result of deleteRule';
	eval {
		$rule->deleteRule(79);
	};
	isa_ok $@, 'CSS::DOM::Exception', 'exception thrown by deleteRule';
	cmp_ok $@, '==', CSS::DOM::Exception::INDEX_SIZE_ERR,
		'error raised by deleteRule';

}