Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom_tests/parse/ast_unittest.py

Issue 814543006: Move //mojo/{public, edk} underneath //third_party (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import imp
6 import os.path
7 import sys
8 import unittest
9
10 def _GetDirAbove(dirname):
11 """Returns the directory "above" this file containing |dirname| (which must
12 also be "above" this file)."""
13 path = os.path.abspath(__file__)
14 while True:
15 path, tail = os.path.split(path)
16 assert tail
17 if tail == dirname:
18 return path
19
20 try:
21 imp.find_module("mojom")
22 except ImportError:
23 sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
24 import mojom.parse.ast as ast
25
26
27 class _TestNode(ast.NodeBase):
28 """Node type for tests."""
29
30 def __init__(self, value, **kwargs):
31 super(_TestNode, self).__init__(**kwargs)
32 self.value = value
33
34 def __eq__(self, other):
35 return super(_TestNode, self).__eq__(other) and self.value == other.value
36
37
38 class _TestNodeList(ast.NodeListBase):
39 """Node list type for tests."""
40
41 _list_item_type = _TestNode
42
43
44 class ASTTest(unittest.TestCase):
45 """Tests various AST classes."""
46
47 def testNodeBase(self):
48 # Test |__eq__()|; this is only used for testing, where we want to do
49 # comparison by value and ignore filenames/line numbers (for convenience).
50 node1 = ast.NodeBase(filename="hello.mojom", lineno=123)
51 node2 = ast.NodeBase()
52 self.assertEquals(node1, node2)
53 self.assertEquals(node2, node1)
54
55 # Check that |__ne__()| just defers to |__eq__()| properly.
56 self.assertFalse(node1 != node2)
57 self.assertFalse(node2 != node1)
58
59 # Check that |filename| and |lineno| are set properly (and are None by
60 # default).
61 self.assertEquals(node1.filename, "hello.mojom")
62 self.assertEquals(node1.lineno, 123)
63 self.assertIsNone(node2.filename)
64 self.assertIsNone(node2.lineno)
65
66 # |NodeBase|'s |__eq__()| should compare types (and a subclass's |__eq__()|
67 # should first defer to its superclass's).
68 node3 = _TestNode(123)
69 self.assertNotEqual(node1, node3)
70 self.assertNotEqual(node3, node1)
71 # Also test |__eq__()| directly.
72 self.assertFalse(node1 == node3)
73 self.assertFalse(node3 == node1)
74
75 node4 = _TestNode(123, filename="world.mojom", lineno=123)
76 self.assertEquals(node4, node3)
77 node5 = _TestNode(456)
78 self.assertNotEquals(node5, node4)
79
80 def testNodeListBase(self):
81 node1 = _TestNode(1, filename="foo.mojom", lineno=1)
82 # Equal to, but not the same as, |node1|:
83 node1b = _TestNode(1, filename="foo.mojom", lineno=1)
84 node2 = _TestNode(2, filename="foo.mojom", lineno=2)
85
86 nodelist1 = _TestNodeList() # Contains: (empty).
87 self.assertEquals(nodelist1, nodelist1)
88 self.assertEquals(nodelist1.items, [])
89 self.assertIsNone(nodelist1.filename)
90 self.assertIsNone(nodelist1.lineno)
91
92 nodelist2 = _TestNodeList(node1) # Contains: 1.
93 self.assertEquals(nodelist2, nodelist2)
94 self.assertEquals(nodelist2.items, [node1])
95 self.assertNotEqual(nodelist2, nodelist1)
96 self.assertEquals(nodelist2.filename, "foo.mojom")
97 self.assertEquals(nodelist2.lineno, 1)
98
99 nodelist3 = _TestNodeList([node2]) # Contains: 2.
100 self.assertEquals(nodelist3.items, [node2])
101 self.assertNotEqual(nodelist3, nodelist1)
102 self.assertNotEqual(nodelist3, nodelist2)
103 self.assertEquals(nodelist3.filename, "foo.mojom")
104 self.assertEquals(nodelist3.lineno, 2)
105
106 nodelist1.Append(node1b) # Contains: 1.
107 self.assertEquals(nodelist1.items, [node1])
108 self.assertEquals(nodelist1, nodelist2)
109 self.assertNotEqual(nodelist1, nodelist3)
110 self.assertEquals(nodelist1.filename, "foo.mojom")
111 self.assertEquals(nodelist1.lineno, 1)
112
113 nodelist1.Append(node2) # Contains: 1, 2.
114 self.assertEquals(nodelist1.items, [node1, node2])
115 self.assertNotEqual(nodelist1, nodelist2)
116 self.assertNotEqual(nodelist1, nodelist3)
117 self.assertEquals(nodelist1.lineno, 1)
118
119 nodelist2.Append(node2) # Contains: 1, 2.
120 self.assertEquals(nodelist2.items, [node1, node2])
121 self.assertEquals(nodelist2, nodelist1)
122 self.assertNotEqual(nodelist2, nodelist3)
123 self.assertEquals(nodelist2.lineno, 1)
124
125 nodelist3.Insert(node1) # Contains: 1, 2.
126 self.assertEquals(nodelist3.items, [node1, node2])
127 self.assertEquals(nodelist3, nodelist1)
128 self.assertEquals(nodelist3, nodelist2)
129 self.assertEquals(nodelist3.lineno, 1)
130
131 # Test iteration:
132 i = 1
133 for item in nodelist1:
134 self.assertEquals(item.value, i)
135 i += 1
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698