<s> """<STR_LIT>""" <EOL> from __future__ import division , unicode_literals <EOL> import math <EOL> from . testing_utils import assert_no_logs , capture_logs , almost_equal <EOL> from . . css import PARSER , preprocess_declarations <EOL> from . . css . properties import INITIAL_VALUES <EOL> from . . images import LinearGradient , RadialGradient <EOL> def expand_to_dict ( css , expected_error = None ) : <EOL> """<STR_LIT>""" <EOL> declarations , errors = PARSER . parse_style_attr ( css ) <EOL> assert not errors <EOL> with capture_logs ( ) as logs : <EOL> base_url = '<STR_LIT>' <EOL> declarations = list ( preprocess_declarations ( base_url , declarations ) ) <EOL> if expected_error : <EOL> assert len ( logs ) == <NUM_LIT:1> <EOL> assert expected_error in logs [ <NUM_LIT:0> ] <EOL> else : <EOL> assert not logs <EOL> return dict ( <EOL> ( name , value ) for name , value , _priority in declarations <EOL> if value != '<STR_LIT>' ) <EOL> def assert_invalid ( css , message = '<STR_LIT>' ) : <EOL> assert expand_to_dict ( css , message ) == { } <EOL> @ assert_no_logs <EOL> def test_not_print ( ) : <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' , '<STR_LIT>' ) == { } <EOL> @ assert_no_logs <EOL> def test_function ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( <NUM_LIT:1> , '<STR_LIT>' ) , ( <NUM_LIT:3> , '<STR_LIT>' ) , '<STR_LIT>' , '<STR_LIT>' ] } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_counters ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:foo>' , <NUM_LIT:0> ) , ( '<STR_LIT:bar>' , <NUM_LIT:2> ) , ( '<STR_LIT>' , <NUM_LIT:0> ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:foo>' , <NUM_LIT:1> ) , ( '<STR_LIT:bar>' , <NUM_LIT:2> ) , ( '<STR_LIT>' , <NUM_LIT:1> ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:foo>' , <NUM_LIT:0> ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT>' , <NUM_LIT:0> ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:foo>' , <NUM_LIT:1> ) , ( '<STR_LIT>' , <NUM_LIT:2> ) , ( '<STR_LIT>' , <NUM_LIT:1> ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' , '<STR_LIT>' ) == { } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' , '<STR_LIT>' ) == { } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_spacing ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , '<STR_LIT>' ) } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' , '<STR_LIT>' ) == { } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , '<STR_LIT>' ) } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_decoration ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT:none>' } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : frozenset ( [ '<STR_LIT>' ] ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : frozenset ( [ '<STR_LIT>' , '<STR_LIT>' ] ) } <EOL> @ assert_no_logs <EOL> def test_size ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT:200> , '<STR_LIT>' ) , ( <NUM_LIT:200> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT:200> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT:size>' : ( ( <NUM_LIT> , '<STR_LIT>' ) , ( <NUM_LIT> , '<STR_LIT>' ) ) } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_transforms ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> ) == { '<STR_LIT>' : [ ( '<STR_LIT>' , ( ( <NUM_LIT:6> , '<STR_LIT>' ) , ( <NUM_LIT:0> , '<STR_LIT>' ) ) ) , <EOL> ( '<STR_LIT>' , math . pi / <NUM_LIT:2> ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> ) == { '<STR_LIT>' : [ ( '<STR_LIT>' , ( ( - <NUM_LIT:4> , '<STR_LIT>' ) , ( <NUM_LIT:0> , None ) ) ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> ) == { '<STR_LIT>' : [ ( '<STR_LIT>' , ( ( <NUM_LIT:6> , '<STR_LIT>' ) , ( <NUM_LIT:20> , '<STR_LIT:%>' ) ) ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> ) == { '<STR_LIT>' : [ ( '<STR_LIT>' , ( <NUM_LIT:2> , <NUM_LIT:2> ) ) ] } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' , <EOL> '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_expand_four_sides ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( - <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:20> , '<STR_LIT:%>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , None ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , None ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , None ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:2> , '<STR_LIT:%>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , None ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , None ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:2> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:5> , '<STR_LIT>' ) , <EOL> } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' ) == { } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_expand_borders ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:3> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:6> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:6> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:6> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> '<STR_LIT>' : ( <NUM_LIT:6> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_expand_list_style ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( '<STR_LIT:url>' , '<STR_LIT>' ) , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( '<STR_LIT:none>' , None ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( '<STR_LIT:none>' , None ) , <EOL> '<STR_LIT>' : '<STR_LIT:none>' , <EOL> } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' , <EOL> '<STR_LIT>' ) <EOL> def assert_background ( css , ** expected ) : <EOL> """<STR_LIT>""" <EOL> expanded = expand_to_dict ( '<STR_LIT>' + css ) <EOL> assert expanded . pop ( '<STR_LIT>' ) == expected . pop ( <EOL> '<STR_LIT>' , INITIAL_VALUES [ '<STR_LIT>' ] ) <EOL> nb_layers = len ( expanded [ '<STR_LIT>' ] ) <EOL> for name , value in expected . items ( ) : <EOL> assert expanded . pop ( name ) == value <EOL> for name , value in expanded . items ( ) : <EOL> assert value == INITIAL_VALUES [ name ] * nb_layers <EOL> @ assert_no_logs <EOL> def test_expand_background ( ) : <EOL> """<STR_LIT>""" <EOL> assert_background ( '<STR_LIT>' , background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_image = [ ( '<STR_LIT:url>' , '<STR_LIT>' ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] ) <EOL> assert_background ( '<STR_LIT>' , background_attachment = [ '<STR_LIT>' ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_attachment = [ '<STR_LIT>' ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_position = [ ( '<STR_LIT:right>' , ( <NUM_LIT:20> , '<STR_LIT>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_position = [ ( '<STR_LIT:right>' , ( <NUM_LIT:20> , '<STR_LIT>' ) , '<STR_LIT>' , ( <NUM_LIT:1> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:right>' , ( <NUM_LIT:20> , '<STR_LIT>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:right>' , ( <NUM_LIT:20> , '<STR_LIT>' ) , '<STR_LIT>' , ( <NUM_LIT:1> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> background_image = [ ( '<STR_LIT:url>' , '<STR_LIT>' ) ] , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_attachment = [ '<STR_LIT>' ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_color = ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ) , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:200> , '<STR_LIT>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_attachment = [ '<STR_LIT>' ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT> , '<STR_LIT>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_size = [ '<STR_LIT>' ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ] , <EOL> background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_size = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ] , <EOL> background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_size = [ ( ( <NUM_LIT> , '<STR_LIT>' ) , '<STR_LIT>' ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_size = [ ( ( <NUM_LIT:7> , '<STR_LIT:%>' ) , ( <NUM_LIT:4> , '<STR_LIT>' ) ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> background_origin = [ '<STR_LIT>' ] , <EOL> background_clip = [ '<STR_LIT>' ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_color = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) , <EOL> background_origin = [ '<STR_LIT>' ] , <EOL> background_clip = [ '<STR_LIT>' ] ) <EOL> assert_background ( <EOL> '<STR_LIT>' , <EOL> background_color = ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ) , <EOL> background_image = [ ( '<STR_LIT:url>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:none>' , None ) ] , <EOL> background_position = [ ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) , <EOL> ( '<STR_LIT:left>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) ] , <EOL> background_repeat = [ ( '<STR_LIT>' , '<STR_LIT>' ) , ( '<STR_LIT>' , '<STR_LIT>' ) ] ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_expand_background_position ( ) : <EOL> """<STR_LIT>""" <EOL> def position ( css , * expected ) : <EOL> [ ( name , [ value ] ) ] = expand_to_dict ( <EOL> '<STR_LIT>' + css ) . items ( ) <EOL> assert name == '<STR_LIT>' <EOL> assert value == expected <EOL> for css_x , val_x in [ <EOL> ( '<STR_LIT:left>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) , ( '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) , ( '<STR_LIT:right>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) ) , <EOL> ( '<STR_LIT>' , ( <NUM_LIT> , '<STR_LIT:%>' ) ) , ( '<STR_LIT>' , ( <NUM_LIT:12> , '<STR_LIT>' ) ) <EOL> ] : <EOL> for css_y , val_y in [ <EOL> ( '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) , ( '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) , ( '<STR_LIT>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) ) , <EOL> ( '<STR_LIT>' , ( <NUM_LIT:7> , '<STR_LIT:%>' ) ) , ( '<STR_LIT>' , ( <NUM_LIT> , '<STR_LIT>' ) ) <EOL> ] : <EOL> position ( '<STR_LIT>' % ( css_x , css_y ) , '<STR_LIT:left>' , val_x , '<STR_LIT>' , val_y ) <EOL> position ( css_x , '<STR_LIT:left>' , val_x , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:3> , '<STR_LIT>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:3> , '<STR_LIT>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:3> , '<STR_LIT>' ) ) <EOL> position ( '<STR_LIT>' , '<STR_LIT:right>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:3> , '<STR_LIT>' ) ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_font ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : ( <NUM_LIT:12> , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : ( <NUM_LIT> , None ) , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_line_height ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT> , '<STR_LIT:%>' ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT:1> , '<STR_LIT>' ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT:1> , None ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT> , None ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT:0> , None ) } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { '<STR_LIT>' : ( <NUM_LIT:0> , '<STR_LIT>' ) } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_string_set ( ) : <EOL> """<STR_LIT>""" <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT:content>' , '<STR_LIT:text>' ) ] ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT:content>' , '<STR_LIT>' ) ] ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , '<STR_LIT:string>' ) ] ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ <EOL> ( '<STR_LIT>' , [ ( '<STR_LIT>' , '<STR_LIT:string>' ) ] ) , <EOL> ( '<STR_LIT>' , [ ( '<STR_LIT>' , '<STR_LIT:string>' ) ] ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , '<STR_LIT:class>' ) ] ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , [ '<STR_LIT:count>' , '<STR_LIT>' ] ) ] ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , [ '<STR_LIT:count>' , '<STR_LIT>' ] ) ] ) ] } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , [ '<STR_LIT:count>' , '<STR_LIT:.>' , '<STR_LIT>' ] ) ] ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ <EOL> ( '<STR_LIT:test>' , [ ( '<STR_LIT>' , [ '<STR_LIT:count>' , '<STR_LIT:.>' , '<STR_LIT>' ] ) ] ) ] } <EOL> assert expand_to_dict ( <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : [ ( '<STR_LIT:test>' , [ <EOL> ( '<STR_LIT:content>' , '<STR_LIT:text>' ) , ( '<STR_LIT>' , '<STR_LIT:string>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT:title>' ) , ( '<STR_LIT>' , '<STR_LIT:title>' ) , <EOL> ( '<STR_LIT>' , [ '<STR_LIT:count>' , '<STR_LIT>' ] ) ] ) ] } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_linear_gradient ( ) : <EOL> red = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> lime = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> blue = ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> pi = math . pi <EOL> def gradient ( css , direction , colors = [ blue ] , stop_positions = [ None ] ) : <EOL> for repeating , prefix in ( ( False , '<STR_LIT>' ) , ( True , '<STR_LIT>' ) ) : <EOL> expanded = expand_to_dict ( <EOL> '<STR_LIT>' % ( prefix , css ) ) <EOL> [ ( _ , [ ( type_ , image ) ] ) ] = expanded . items ( ) <EOL> assert type_ == '<STR_LIT>' <EOL> assert isinstance ( image , LinearGradient ) <EOL> assert image . repeating == repeating <EOL> assert almost_equal ( ( image . direction_type , image . direction ) , <EOL> direction ) <EOL> assert almost_equal ( image . colors , colors ) <EOL> assert almost_equal ( image . stop_positions , stop_positions ) <EOL> def invalid ( css ) : <EOL> assert_invalid ( '<STR_LIT>' % css ) <EOL> assert_invalid ( '<STR_LIT>' % css ) <EOL> invalid ( '<STR_LIT:U+0020>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi ) , [ red ] , [ None ] ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi ) , <EOL> [ blue , lime , red ] , [ ( <NUM_LIT:1> , '<STR_LIT:%>' ) , None , ( <NUM_LIT:2> , '<STR_LIT>' ) ] ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi / <NUM_LIT:10> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , <NUM_LIT:4> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi / <NUM_LIT:2> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi / <NUM_LIT:2> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , <NUM_LIT:12> ) , <EOL> [ blue , lime , red ] , [ ( <NUM_LIT:1> , '<STR_LIT:%>' ) , None , ( <NUM_LIT:2> , '<STR_LIT>' ) ] ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , <NUM_LIT:0> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi / <NUM_LIT:2> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi * <NUM_LIT:3> / <NUM_LIT:2> ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , pi / <NUM_LIT:2> ) , <EOL> [ blue , lime , red ] , [ ( <NUM_LIT:1> , '<STR_LIT:%>' ) , None , ( <NUM_LIT:2> , '<STR_LIT>' ) ] ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_overflow_wrap ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_expand_word_wrap ( ) : <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert expand_to_dict ( '<STR_LIT>' ) == { <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> assert_invalid ( '<STR_LIT>' ) <EOL> @ assert_no_logs <EOL> def test_radial_gradient ( ) : <EOL> red = ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> lime = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) <EOL> blue = ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> def gradient ( css , shape = '<STR_LIT>' , size = ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> center = ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) , <EOL> colors = [ blue ] , stop_positions = [ None ] ) : <EOL> for repeating , prefix in ( ( False , '<STR_LIT>' ) , ( True , '<STR_LIT>' ) ) : <EOL> expanded = expand_to_dict ( <EOL> '<STR_LIT>' % ( prefix , css ) ) <EOL> [ ( _ , [ ( type_ , image ) ] ) ] = expanded . items ( ) <EOL> assert type_ == '<STR_LIT>' <EOL> assert isinstance ( image , RadialGradient ) <EOL> assert image . repeating == repeating <EOL> assert image . shape == shape <EOL> assert almost_equal ( ( image . size_type , image . size ) , size ) <EOL> assert almost_equal ( image . center , center ) <EOL> assert almost_equal ( image . colors , colors ) <EOL> assert almost_equal ( image . stop_positions , stop_positions ) <EOL> def invalid ( css ) : <EOL> assert_invalid ( '<STR_LIT>' % css ) <EOL> assert_invalid ( '<STR_LIT>' % css ) <EOL> invalid ( '<STR_LIT:U+0020>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , colors = [ red ] ) <EOL> gradient ( '<STR_LIT>' , colors = [ blue , lime , red ] , <EOL> stop_positions = [ ( <NUM_LIT:1> , '<STR_LIT:%>' ) , None , ( <NUM_LIT:2> , '<STR_LIT>' ) ] ) <EOL> gradient ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:5> , '<STR_LIT>' ) , ( <NUM_LIT:5> , '<STR_LIT>' ) ) ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:5> , '<STR_LIT>' ) , ( <NUM_LIT:5> , '<STR_LIT>' ) ) ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:5> , '<STR_LIT>' ) , ( <NUM_LIT:5> , '<STR_LIT>' ) ) ) ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:10> , '<STR_LIT>' ) , ( <NUM_LIT:50> , '<STR_LIT>' ) ) ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:10> , '<STR_LIT>' ) , ( <NUM_LIT:50> , '<STR_LIT>' ) ) ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:10> , '<STR_LIT>' ) , ( <NUM_LIT:50> , '<STR_LIT>' ) ) ) ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , <EOL> '<STR_LIT>' , ( '<STR_LIT>' , ( ( <NUM_LIT:10> , '<STR_LIT>' ) , ( <NUM_LIT:50> , '<STR_LIT>' ) ) ) ) <EOL> invalid ( '<STR_LIT>' ) <EOL> gradient ( '<STR_LIT>' , <EOL> center = ( '<STR_LIT:right>' , ( <NUM_LIT:0> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:10> , '<STR_LIT:%>' ) ) ) <EOL> gradient ( '<STR_LIT>' , shape = '<STR_LIT>' , <EOL> center = ( '<STR_LIT:left>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) ) ) <EOL> gradient ( '<STR_LIT>' , shape = '<STR_LIT>' , <EOL> center = ( '<STR_LIT:left>' , ( <NUM_LIT:10> , '<STR_LIT>' ) , '<STR_LIT>' , ( <NUM_LIT:50> , '<STR_LIT:%>' ) ) ) <EOL> gradient ( '<STR_LIT>' , <EOL> shape = '<STR_LIT>' , size = ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> center = ( '<STR_LIT:left>' , ( <NUM_LIT:100> , '<STR_LIT:%>' ) , '<STR_LIT>' , ( <NUM_LIT:5> , '<STR_LIT>' ) ) ) </s>
