CSS-DOM
view release on metacpan or search on metacpan
t/CSSValue.t view on Meta::CPAN
[ in => '73' , 'top' , '73in' , 'inch' ],
[ pt => '73' , 'top' , '73pt' , 'point' ],
[ pc => '73' , 'top' , '73pc' , 'pica' ],
[ deg => '73' , 'azimuth', '73deg' , 'degree' ],
[ rad => '73' , 'azimuth', '73rad' , 'radian' ],
[ grad => '73' , 'azimuth', '73grad' , 'grad' ],
[ s => '73' , 'pause-after', '73s' , 'second' ],
[ ms => '73' , 'pause-after', '73ms' , 'ms' ],
[ Hz => '73' , 'pitch' , '73Hz' , 'hertz' ],
[ kHz => '73' , 'pitch' , '73kHz' , 'kHertz' ],
[ dimension => ['73', 'wob' ], '' , '73wob' , 'misc dim' ],
[ string => '73' , 's' , "'73'" , 'string' ],
[ uri => '73' , 'cue-after', "url(73)", 'URI' ],
[ ident => 'red' , 'color' , "red" , 'ident' ],
[ attr => 'red' , 'a' , "attr(red)", 'attr' ],
[ counter => ['red' ], 'c' , 'counter(red)', 'counter' ],
[ counter => ['red',undef,'lower-roman'], 'c',
'counter(red, lower-roman)', 'counter with style'],
[ counter => ['red','. '], 'c',
"counters(red, '. ')", 'counters'],
[ counter => ['red','. ','upper-latin'], 'c',
"counters(red, '. ', upper-latin)", 'counters with style'],
[ rect => [
[type=>&CSS::DOM::Value::Primitive::CSS_PX,value=>1],
[type=>&CSS::DOM::Value::Primitive::CSS_EMS,value=>2],
[type=>&CSS::DOM::Value::Primitive::CSS_IDENT,value=>'auto'],
[type=>&CSS::DOM::Value::Primitive::CSS_CM,value=>4],
], 'clip', "rect(1px, 2em, auto, 4cm)", 'rect'],
[ rgbcolor => 'red' , 'color' , 'red' , 'colour (ident)'],
[ rgbcolor => '#fff' , 'color' , '#fff', 'colour (#hhh)' ],
[ rgbcolor => '#abcdef' , 'color', '#abcdef', 'colour (#hhhhhh)'],
[ rgbcolor => [
[type=>$css_num,value=>255],
[type=>$css_num,value=>0],
[type=>$css_num,value=>0]
], 'color', 'rgb(255, 0, 0)', 'colour (rgb)'],
[ rgbcolor => [
[type=>$css_num,value=>255],
[type=>$css_num,value=>0],
[type=>$css_num,value=>0],
[type=>$css_num,value=>.5]
], 'color', 'rgba(255, 0, 0, 0.5)', 'colour (rgba)'],
[ ident => 'activeborder' , 'color', 'activeborder', 'system colour'],
) {
test_value $s, $$_[2], "::Primitive",
[
type =>
&{\&{"CSS::DOM::Value::Primitive::CSS_\U$$_[0]"}},
value => $$_[1],
],
$$_[3], &CSS_PRIMITIVE_VALUE, $$_[4]
}
use tests 20;
test_value $s,"counter-increment","::List", [
separator => ' ', values => [
[type => &CSS::DOM::Value::Primitive::CSS_IDENT, value => 'open-quote'],
[type => &CSS::DOM::Value::Primitive::CSS_NUMBER, value => '8'],
]
], "open-quote 8", &CSS_VALUE_LIST, 'space-separated list';
test_value $s,"cursor","::List", [
separator => ', ', values => [
[type => &CSS::DOM::Value::Primitive::CSS_URI, value => 'frew'],
[type => &CSS::DOM::Value::Primitive::CSS_IDENT, value => 'crosshair'],
]
], "url(frew), crosshair", &CSS_VALUE_LIST, 'comma-separated list';
test_value $s,"content","::List", [
separator => ', ', values => [
[type => &CSS::DOM::Value::Primitive::CSS_URI, value => 'cror'],
]
], "url(cror)", &CSS_VALUE_LIST, 'single-valued list';
test_value $s,"font-family","::List", [
separator => ', ', values => [
[type => &CSS::DOM::Value::Primitive::CSS_STRING, value => 'dat drin',
css => 'dat drin'],
]
], "dat drin", &CSS_VALUE_LIST,
'single-valued nominally comma-separated list';
test_value $s,"counter-reset","::List", [
separator => ' ', values => []
], 'none', &CSS_VALUE_LIST,
'empty list';
use tests 14; # writing cssText on inherit/custom values
{
my $v = new CSS::DOM::Value type => &CSS_INHERIT;
ok !eval{ $v->cssText('aaa'); 1 },
'setting cssText on an unowned css value object dies';
isa_ok $@, 'CSS::DOM::Exception', 'class of error after cssText dies';
cmp_ok $@, '==', &CSS::DOM::Exception::NO_MODIFICATION_ALLOWED_ERR,
'and the right type of error, too (after cssText dies)';
$v = new CSS::DOM::Value type => &CSS_INHERIT, owner => $s;
ok !eval{ $v->cssText('aaa'); 1 },
'setting cssText on a css value object with no property dies';
isa_ok $@, 'CSS::DOM::Exception',
'class of error after cssText dies (val with no prop)';
cmp_ok $@, '==', &CSS::DOM::Exception::NO_MODIFICATION_ALLOWED_ERR,
'and the right type of error, too (after cssText dies [val w/no prop])';
$s->backgroundPosition('inherit');
$v = $s->getPropertyCSSValue('background-position');
$v->cssText('top left'); # We write it twice on purpose, to make sure the
$v->cssText('top left'); # change in type did not discard the
is $s->backgroundPosition, 'top left', # internal owner attribute.
'value->cssText("top left") sets the owner CSS property';
is $v->cssValueType, &CSS_CUSTOM, ' and the value type';
is $v->cssText, 'top left', ' and the value object\'s own cssText';
$s->backgroundColor('inherit');
$v = $s->getPropertyCSSValue('background-color');
$v->cssText('red');
is $s->backgroundColor, 'red',
'setting the cssText of an inherit value to a colour changes the prop';
is $v->cssText, 'red',
'setting the cssText of an inherit value changes the cssText thereof';
is $v->cssValueType, &CSS_PRIMITIVE_VALUE,
'value type after setting an inherit value to a colour';
isa_ok $v, "CSS::DOM::Value::Primitive",
'object class after setting an inherit value to a colour';
( run in 0.541 second using v1.01-cache-2.11-cpan-524268b4103 )