~divmod-dev/divmod.org/trunk

« back to all changes in this revision

Viewing changes to Nevow/nevow/test/test_stan.py

  • Committer: Jean-Paul Calderone
  • Date: 2014-06-29 20:33:04 UTC
  • mfrom: (2749.1.1 remove-epsilon-1325289)
  • Revision ID: exarkun@twistedmatrix.com-20140629203304-gdkmbwl1suei4m97
mergeĀ lp:~exarkun/divmod.org/remove-epsilon-1325289

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2004 Divmod.
2
 
# See LICENSE for details.
3
 
 
4
 
 
5
 
from nevow import stan
6
 
from nevow.testutil import TestCase
7
 
 
8
 
class TestProto(TestCase):
9
 
    def test_proto(self):
10
 
        tagName = "hello"
11
 
        proto = stan.Proto(tagName)
12
 
        self.assertEquals(tagName, str(proto))
13
 
 
14
 
    def test_callCreatesTag(self):
15
 
        proto = stan.Proto("hello")
16
 
        tag = proto(world="1")
17
 
        self.assertEquals(proto, tag.tagName)
18
 
        self.assertEquals(tag.attributes['world'], '1')
19
 
 
20
 
    def test_getItemCreatesTag(self):
21
 
        proto = stan.Proto("hello")
22
 
        tag = proto[proto]
23
 
        self.assertEquals(proto, tag.tagName)
24
 
        self.assertEquals(tag.children, [proto])
25
 
 
26
 
 
27
 
proto = stan.Proto("hello")
28
 
 
29
 
 
30
 
class TestTag(TestCase):
31
 
    def test_clone(self):
32
 
        tag = proto(hello="world")["How are you"]
33
 
        tag.fillSlots('foo', 'bar')
34
 
        tag.filename = "foo/bar"
35
 
        tag.lineNumber = 6
36
 
        tag.columnNumber = 12
37
 
        clone = tag.clone()
38
 
        self.assertEquals(clone.attributes['hello'], 'world')
39
 
        self.assertNotIdentical(clone.attributes, tag.attributes)
40
 
        self.assertEquals(clone.children, ["How are you"])
41
 
        self.assertNotIdentical(clone.children, tag.children)
42
 
        self.assertEquals(tag.slotData, clone.slotData)
43
 
        self.assertNotIdentical(tag.slotData, clone.slotData)
44
 
        self.assertEqual(clone.filename, "foo/bar")
45
 
        self.assertEqual(clone.lineNumber, 6)
46
 
        self.assertEqual(clone.columnNumber, 12)
47
 
 
48
 
    ## TODO: need better clone test here to test clone(deep=True),
49
 
    ## and behavior of cloning nested lists.
50
 
 
51
 
    def test_clear(self):
52
 
        tag = proto["these are", "children", "cool"]
53
 
        tag.clear()
54
 
        self.assertEquals(tag.children, [])
55
 
 
56
 
    def test_specials(self):
57
 
        tag = proto(data=1, render=str, remember="stuff", key="myKey", **{'pattern': "item"})
58
 
        self.assertEquals(tag.data, 1)
59
 
        self.assertEquals(getattr(tag, 'render'), str)
60
 
        self.assertEquals(tag.remember, "stuff")
61
 
        self.assertEquals(tag.key, "myKey")
62
 
        self.assertEquals(tag.pattern, "item")
63
 
 
64
 
 
65
 
    def test_visit(self):
66
 
        """
67
 
        Test that L{nevow.stan.visit} invokes the visitor it is given with all
68
 
        the nodes in the DOM it is given in pre-order.
69
 
        """
70
 
        visited = []
71
 
        def visitor(t):
72
 
            visited.append(t)
73
 
        root = stan.Proto('root')()
74
 
        firstChild = stan.Proto('firstChild')()
75
 
        secondChild = stan.Proto('secondChild')()
76
 
        firstGrandchild = stan.Proto('firstGrandchild')()
77
 
        secondGrandchild = stan.Proto('secondGrandchild')()
78
 
        thirdGrandchild = 'thirdGrandchild'
79
 
        root[firstChild, secondChild]
80
 
        secondChild[firstGrandchild, secondGrandchild, thirdGrandchild]
81
 
        stan.visit(root, visitor)
82
 
        self.assertEquals(
83
 
            visited,
84
 
            [root, firstChild, secondChild,
85
 
             firstGrandchild, secondGrandchild, thirdGrandchild])
86
 
 
87
 
 
88
 
 
89
 
class TestComment(TestCase):
90
 
 
91
 
    def test_notCallable(self):
92
 
        comment = stan.CommentProto()
93
 
        self.assertRaises(NotImplementedError, comment, id='oops')
94
 
 
95
 
class TestUnderscore(TestCase):
96
 
    def test_prefix(self):
97
 
        proto = stan.Proto('div')
98
 
        tag = proto()
99
 
        tag(_class='a')
100
 
        self.assertEquals(tag.attributes, {'class': 'a'})
101
 
 
102
 
    def test_suffix(self):
103
 
        proto = stan.Proto('div')
104
 
        tag = proto()
105
 
        tag(class_='a')
106
 
        self.assertEquals(tag.attributes, {'class': 'a'})