This repository was archived by the owner on Jan 3, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathtest_algorithm.py
More file actions
49 lines (39 loc) · 1.92 KB
/
test_algorithm.py
File metadata and controls
49 lines (39 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from __future__ import absolute_import, division, print_function, unicode_literals
from .. import parse, algorithm
import unittest
class AlgorithmTestCase(unittest.TestCase):
def test_visitor(self):
class FooVisitor(algorithm.Visitor):
def __init__(self):
self.num_count = self.other_count = 0
def visit_Num(self, node):
self.num_count += 1
algorithm.Visitor.generic_visit(self, node)
def generic_visit(self, node):
self.other_count += 1
algorithm.Visitor.generic_visit(self, node)
visitor = FooVisitor()
visitor.visit(parse("[1,2,x,y]\n"))
self.assertEqual(2, visitor.num_count)
self.assertEqual(5, visitor.other_count)
def test_compare(self):
self.assertFalse(algorithm.compare(parse("1 + 2\n"), parse("1 + 3\n")))
self.assertTrue( algorithm.compare(parse("1 + 2\n"), parse("1 + 2\n")))
self.assertTrue( algorithm.compare(parse("1 + 2\n"), parse("1 + 2\n")))
self.assertFalse(algorithm.compare(parse("1 + 2\n"), parse("1 + 2\n"),
compare_locs=True))
def test_transform(self):
class FooTransformer(algorithm.Transformer):
def visit_Num(self, node):
if node.n == 42:
return None
return node
transformer = FooTransformer()
self.assertTrue(algorithm.compare(parse("return 10\n"),
transformer.visit(parse("return 10\n"))))
self.assertTrue(algorithm.compare(parse("return\n"),
transformer.visit(parse("return 42\n"))))
self.assertTrue(algorithm.compare(parse("[1,2,3]\n"),
transformer.visit(parse("[1,2,3]\n"))))
self.assertTrue(algorithm.compare(parse("[1,3]\n"),
transformer.visit(parse("[1,42,3]\n"))))