Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / lib / cssutils / tests / test_cssvariablesrule.py @ 475

History | View | Annotate | Download (5.44 KB)

1
"""Testcases for cssutils.css.CSSPageRule"""
2
__version__ = '$Id: test_csspagerule.py 1869 2009-10-17 19:37:40Z cthedot $'
3

    
4
import xml.dom
5
import test_cssrule
6
import cssutils
7

    
8
class CSSVariablesRuleTestCase(test_cssrule.CSSRuleTestCase):
9

    
10
    def setUp(self):
11
        super(CSSVariablesRuleTestCase, self).setUp()
12
        self.r = cssutils.css.CSSVariablesRule()
13
        self.rRO = cssutils.css.CSSVariablesRule(readonly=True)
14
        self.r_type = cssutils.css.CSSPageRule.VARIABLES_RULE
15
        self.r_typeString = 'VARIABLES_RULE'
16
        
17
        cssutils.ser.prefs.resolveVariables = False
18

    
19
    def test_init(self):
20
        "CSSVariablesRule.__init__()"
21
        super(CSSVariablesRuleTestCase, self).test_init()
22

    
23
        r = cssutils.css.CSSVariablesRule()
24
        self.assertEqual(cssutils.css.CSSVariablesDeclaration, 
25
                         type(r.variables))
26
        self.assertEqual(r, r.variables.parentRule)
27

    
28
        # until any variables
29
        self.assertEqual(u'', r.cssText)
30

    
31
        # only possible to set @... similar name
32
        self.assertRaises(xml.dom.InvalidModificationErr, 
33
                          self.r._setAtkeyword, 'x')
34

    
35
    def test_InvalidModificationErr(self):
36
        "CSSVariablesRule.cssText InvalidModificationErr"
37
        self._test_InvalidModificationErr(u'@variables')
38
        tests = {
39
            u'@var {}': xml.dom.InvalidModificationErr,
40
            }
41
        self.do_raise_r(tests)
42

    
43
    def test_incomplete(self):
44
        "CSSVariablesRule (incomplete)"
45
        tests = {
46
            u'@variables { ':
47
                u'', # no } and no content
48
            u'@variables { x: red':
49
                u'@variables {\n    x: red\n    }', # no }
50
        }
51
        self.do_equal_p(tests) # parse
52

    
53
    def test_cssText(self):
54
        "CSSVariablesRule"
55
        EXP = u'@variables {\n    margin: 0\n    }'
56
        tests = {
57
             u'@variables {}': u'',
58
             u'@variables     {margin:0;}': EXP,
59
             u'@variables     {margin:0}': EXP,
60
             u'@VaRIables {   margin    :   0   ;    }': EXP,
61
            u'@\\VaRIables {    margin : 0    }': EXP,
62

    
63
            u'@variables {a:1;b:2}': 
64
                u'@variables {\n    a: 1;\n    b: 2\n    }',
65

    
66
            # comments
67
            u'@variables   /*1*/   {margin:0;}': 
68
                u'@variables /*1*/ {\n    margin: 0\n    }',
69
            u'@variables/*1*/{margin:0;}': 
70
                u'@variables /*1*/ {\n    margin: 0\n    }',
71
            }
72
        self.do_equal_r(tests)
73
        self.do_equal_p(tests)
74

    
75
    def test_media(self):
76
        "CSSVariablesRule.media"
77
        r = cssutils.css.CSSVariablesRule()
78
        self.assertRaises(AttributeError, r.__getattribute__, 'media')
79
        self.assertRaises(AttributeError, r.__setattr__, 'media', '?')
80
        
81
    def test_variables(self):
82
        "CSSVariablesRule.variables"                
83
        r = cssutils.css.CSSVariablesRule(
84
                 variables=cssutils.css.CSSVariablesDeclaration('x: 1'))
85
        self.assertEqual(r, r.variables.parentRule)
86

    
87
        # cssText
88
        r = cssutils.css.CSSVariablesRule()
89
        r.cssText = u'@variables { x: 1 }'
90
        vars1 = r.variables
91
        self.assertEqual(r, r.variables.parentRule)
92
        self.assertEqual(vars1, r.variables)
93
        self.assertEqual(r.variables.cssText, u'x: 1')
94
        self.assertEqual(r.cssText, u'@variables {\n    x: 1\n    }')
95
        
96
        r.cssText = u'@variables {y:2}'
97
        self.assertEqual(r, r.variables.parentRule)
98
        self.assertNotEqual(vars1, r.variables)
99
        self.assertEqual(r.variables.cssText, u'y: 2')
100
        self.assertEqual(r.cssText, u'@variables {\n    y: 2\n    }')
101

    
102
        vars2 = r.variables
103
        
104
        # fail
105
        try:
106
            r.cssText = u'@variables {$:1}'
107
        except xml.dom.DOMException, e:
108
            pass
109

    
110
        self.assertEqual(vars2, r.variables)
111
        self.assertEqual(r.variables.cssText, u'y: 2')
112
        self.assertEqual(r.cssText, u'@variables {\n    y: 2\n    }')
113

    
114
        # var decl
115
        vars3 = cssutils.css.CSSVariablesDeclaration('z: 3')
116
        r.variables = vars3
117

    
118
        self.assertEqual(r, r.variables.parentRule)
119
        self.assertEqual(vars3, r.variables)
120
        self.assertEqual(r.variables.cssText, u'z: 3')
121
        self.assertEqual(r.cssText, u'@variables {\n    z: 3\n    }')
122

    
123
        # string
124
        r.variables = 'a: x'
125
        self.assertNotEqual(vars3, r.variables)
126
        self.assertEqual(r, r.variables.parentRule)
127
        self.assertEqual(r.variables.cssText, u'a: x')
128
        self.assertEqual(r.cssText, u'@variables {\n    a: x\n    }')
129
        vars4 = r.variables
130

    
131
        # string fail
132
        try:
133
            r.variables = '$: x'
134
        except xml.dom.DOMException, e:
135
            pass
136
        self.assertEqual(vars4, r.variables)
137
        self.assertEqual(r, r.variables.parentRule)
138
        self.assertEqual(r.variables.cssText, u'a: x')
139
        self.assertEqual(r.cssText, u'@variables {\n    a: x\n    }')
140
        
141
        
142
    def test_reprANDstr(self):
143
        "CSSVariablesRule.__repr__(), .__str__()"
144
        r = cssutils.css.CSSVariablesRule()
145
        r.cssText = '@variables { xxx: 1 }'
146
        self.assertTrue('xxx' in str(r))
147

    
148
        r2 = eval(repr(r))
149
        self.assertTrue(isinstance(r2, r.__class__))
150
        self.assertTrue(r.cssText == r2.cssText)
151

    
152

    
153
if __name__ == '__main__':
154
    import unittest
155
    unittest.main()