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_medialist.py @ 475

History | View | Annotate | Download (7.09 KB)

1
# -*- coding: iso-8859-1 -*-
2
"""Testcases for cssutils.stylesheets.MediaList"""
3

    
4
import xml.dom
5
import basetest
6
import cssutils.stylesheets
7

    
8
class MediaListTestCase(basetest.BaseTestCase):
9

    
10
    def setUp(self):
11
        super(MediaListTestCase, self).setUp()
12
        self.r = cssutils.stylesheets.MediaList()
13

    
14
    def test_set(self):
15
        "MediaList.mediaText 1"
16
        ml = cssutils.stylesheets.MediaList()
17

    
18
        self.assertEqual(0, ml.length)
19
        self.assertEqual(u'all', ml.mediaText)
20

    
21
        ml.mediaText = u' print   , screen '
22
        self.assertEqual(2, ml.length)
23
        self.assertEqual(u'print, screen', ml.mediaText)
24
        
25
        #self.assertRaisesMsg(xml.dom.InvalidModificationErr, 
26
        #                     basetest.msg3x('''MediaList: Ignoring new medium cssutils.stylesheets.MediaQuery(mediaText=u'tv') as already specified "all" (set ``mediaText`` instead).'''), 
27
        #                     ml._setMediaText, u' print , all  , tv ')
28
        #
29
        #self.assertEqual(u'all', ml.mediaText)
30
        #self.assertEqual(1, ml.length)
31

    
32
        self.assertRaises(xml.dom.SyntaxErr,
33
                          ml.appendMedium, u'test')
34

    
35
    def test_appendMedium(self):
36
        "MediaList.appendMedium() 1"
37
        ml = cssutils.stylesheets.MediaList()
38

    
39
        ml.appendMedium(u'print')
40
        self.assertEqual(1, ml.length)
41
        self.assertEqual(u'print', ml.mediaText)
42

    
43
        ml.appendMedium(u'screen')
44
        self.assertEqual(2, ml.length)
45
        self.assertEqual(u'print, screen', ml.mediaText)
46

    
47
        # automatic del and append!
48
        ml.appendMedium(u'print')
49
        self.assertEqual(2, ml.length)
50
        self.assertEqual(u'screen, print', ml.mediaText)
51

    
52
        # automatic del and append!
53
        ml.appendMedium(u'SCREEN')
54
        self.assertEqual(2, ml.length)
55
        self.assertEqual(u'print, SCREEN', ml.mediaText)
56

    
57
        # append invalid MediaQuery
58
        mq = cssutils.stylesheets.MediaQuery()
59
        ml.appendMedium(mq)
60
        self.assertEqual(2, ml.length)
61
        self.assertEqual(u'print, SCREEN', ml.mediaText)
62
        
63
        # append()
64
        mq = cssutils.stylesheets.MediaQuery('tv')
65
        ml.append(mq)
66
        self.assertEqual(3, ml.length)
67
        self.assertEqual(u'print, SCREEN, tv', ml.mediaText)
68

    
69
        # __setitem__
70
        self.assertRaises(IndexError, ml.__setitem__, 10, 'all')
71
        ml[0] = 'handheld'
72
        self.assertEqual(3, ml.length)
73
        self.assertEqual(u'handheld, SCREEN, tv', ml.mediaText)
74

    
75
    def test_appendAll(self):
76
        "MediaList.append() 2"
77
        ml = cssutils.stylesheets.MediaList()
78
        ml.appendMedium(u'print')
79
        ml.appendMedium(u'tv')
80
        self.assertEqual(2, ml.length)
81
        self.assertEqual(u'print, tv', ml.mediaText)
82

    
83
        ml.appendMedium(u'all')
84
        self.assertEqual(1, ml.length)
85
        self.assertEqual(u'all', ml.mediaText)
86

    
87
        self.assertRaisesMsg(xml.dom.InvalidModificationErr, 
88
                             basetest.msg3x('''MediaList: Ignoring new medium cssutils.stylesheets.MediaQuery(mediaText=u'tv') as already specified "all" (set ``mediaText`` instead).'''), 
89
                             ml.appendMedium, 'tv')
90
        self.assertEqual(1, ml.length)
91
        self.assertEqual(u'all', ml.mediaText)
92

    
93
        self.assertRaises(xml.dom.SyntaxErr, ml.appendMedium, u'test')
94

    
95
    def test_append2All(self):
96
        "MediaList all"
97
        ml = cssutils.stylesheets.MediaList()
98
        ml.appendMedium(u'all')
99
        self.assertRaisesMsg(xml.dom.InvalidModificationErr, 
100
                             basetest.msg3x('''MediaList: Ignoring new medium cssutils.stylesheets.MediaQuery(mediaText=u'print') as already specified "all" (set ``mediaText`` instead).'''), 
101
                             ml.appendMedium, 'print')
102
        
103
        sheet = cssutils.parseString('@media all, print { /**/ }')
104
        self.assertEqual(u'@media all {\n    /**/\n    }'.encode(), sheet.cssText)
105

    
106
    def test_delete(self):
107
        "MediaList.deleteMedium()"
108
        ml = cssutils.stylesheets.MediaList()
109

    
110
        self.assertRaises(xml.dom.NotFoundErr, ml.deleteMedium, u'all')
111
        self.assertRaises(xml.dom.NotFoundErr, ml.deleteMedium, u'test')
112

    
113
        ml.appendMedium(u'print')
114
        ml.deleteMedium(u'print')
115
        ml.appendMedium(u'tV')
116
        ml.deleteMedium(u'Tv')
117
        self.assertEqual(0, ml.length)
118
        self.assertEqual(u'all', ml.mediaText)
119

    
120
    def test_item(self):
121
        "MediaList.item()"
122
        ml = cssutils.stylesheets.MediaList()
123
        ml.appendMedium(u'print')
124
        ml.appendMedium(u'screen')
125

    
126
        self.assertEqual(u'print', ml.item(0))
127
        self.assertEqual(u'screen', ml.item(1))
128
        self.assertEqual(None, ml.item(2))
129

    
130
    # REMOVED special case!
131
    #def test_handheld(self):
132
    #    "MediaList handheld"
133
    #    ml = cssutils.stylesheets.MediaList()
134

    
135
    #    ml.mediaText = u' handheld , all  '
136
    #    self.assertEqual(2, ml.length)
137
    #    self.assertEqual(u'handheld, all', ml.mediaText)
138
        
139
    #    self.assertRaisesMsg(xml.dom.InvalidModificationErr, 
140
    #                         basetest.msg3x('''MediaList: Ignoring new medium cssutils.stylesheets.MediaQuery(mediaText=u'handheld') as already specified "all" (set ``mediaText`` instead).'''), 
141
    #                         ml._setMediaText, u' handheld , all  , tv ')
142
        
143
    def test_mediaText(self):
144
        "MediaList.mediaText 2"
145
        tests = {
146
            u'ALL': u'ALL',
147
            u'Tv': u'Tv',
148
            u'all': None,
149
            u'all, handheld': u'all',
150
            u'tv': None,
151
            u'tv, handheld, print': None,
152
            u'tv and (color), handheld and (width: 1px) and (color)': None,
153
            }
154
        self.do_equal_r(tests, att='mediaText')
155

    
156
        tests = {
157
            u'': xml.dom.SyntaxErr,
158
            u'UNKNOWN': xml.dom.SyntaxErr,
159
            u'a,b': xml.dom.SyntaxErr,
160
            u'a and (color)': xml.dom.SyntaxErr,
161
            u'not': xml.dom.SyntaxErr, # known but need media
162
            u'only': xml.dom.SyntaxErr, # known but need media
163
            u'not tv,': xml.dom.SyntaxErr, # known but need media
164
            u'all;': xml.dom.SyntaxErr,
165
            u'all, and(color)': xml.dom.SyntaxErr,
166
            u'all,': xml.dom.SyntaxErr,
167
            u'all, ': xml.dom.SyntaxErr,
168
            u'all ,': xml.dom.SyntaxErr,
169
            u'all, /*1*/': xml.dom.SyntaxErr,
170
            u'all and (color),': xml.dom.SyntaxErr,
171
            u'all tv, print': xml.dom.SyntaxErr,
172
            }
173
        self.do_raise_r(tests, att='_setMediaText')
174

    
175
    def test_comments(self):
176
        "MediaList.mediaText comments"
177
        tests = {
178
            u'/*1*/ tv /*2*/, /*3*/ handheld /*4*/, print': 
179
            u'/*1*/ tv /*2*/ /*3*/, handheld /*4*/, print',
180
            }
181
        self.do_equal_r(tests, att='mediaText')
182

    
183
    def test_reprANDstr(self):
184
        "MediaList.__repr__(), .__str__()"
185
        mediaText='tv, print'
186

    
187
        s = cssutils.stylesheets.MediaList(mediaText=mediaText)
188

    
189
        self.assertTrue(mediaText in str(s))
190

    
191
        s2 = eval(repr(s))
192
        self.assertTrue(isinstance(s2, s.__class__))
193
        self.assertTrue(mediaText == s2.mediaText)
194

    
195

    
196
if __name__ == '__main__':
197
    import unittest
198
    unittest.main()