69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
|
|
||
|
from __future__ import absolute_import
|
||
|
|
||
|
from copy import deepcopy
|
||
|
from unittest import TestCase
|
||
|
|
||
|
from Cython.Compiler.FlowControl import (
|
||
|
NameAssignment, StaticAssignment, Argument, NameDeletion)
|
||
|
|
||
|
|
||
|
class FakeType(object):
|
||
|
is_pyobject = True
|
||
|
|
||
|
|
||
|
class FakeNode(object):
|
||
|
pos = ('filename.pyx', 1, 2)
|
||
|
cf_state = None
|
||
|
type = FakeType()
|
||
|
|
||
|
def infer_type(self, scope):
|
||
|
return self.type
|
||
|
|
||
|
|
||
|
class FakeEntry(object):
|
||
|
type = FakeType()
|
||
|
|
||
|
|
||
|
class TestGraph(TestCase):
|
||
|
def test_deepcopy(self):
|
||
|
lhs, rhs = FakeNode(), FakeNode()
|
||
|
entry = FakeEntry()
|
||
|
entry.pos = lhs.pos
|
||
|
|
||
|
name_ass = NameAssignment(lhs, rhs, entry)
|
||
|
ass = deepcopy(name_ass)
|
||
|
self.assertTrue(ass.lhs)
|
||
|
self.assertTrue(ass.rhs)
|
||
|
self.assertTrue(ass.entry)
|
||
|
self.assertEqual(ass.pos, name_ass.pos)
|
||
|
self.assertFalse(ass.is_arg)
|
||
|
self.assertFalse(ass.is_deletion)
|
||
|
|
||
|
static_ass = StaticAssignment(entry)
|
||
|
ass = deepcopy(static_ass)
|
||
|
self.assertTrue(ass.lhs)
|
||
|
self.assertTrue(ass.rhs)
|
||
|
self.assertTrue(ass.entry)
|
||
|
self.assertEqual(ass.pos, static_ass.pos)
|
||
|
self.assertFalse(ass.is_arg)
|
||
|
self.assertFalse(ass.is_deletion)
|
||
|
|
||
|
arg_ass = Argument(lhs, rhs, entry)
|
||
|
ass = deepcopy(arg_ass)
|
||
|
self.assertTrue(ass.lhs)
|
||
|
self.assertTrue(ass.rhs)
|
||
|
self.assertTrue(ass.entry)
|
||
|
self.assertEqual(ass.pos, arg_ass.pos)
|
||
|
self.assertTrue(ass.is_arg)
|
||
|
self.assertFalse(ass.is_deletion)
|
||
|
|
||
|
name_del = NameDeletion(lhs, entry)
|
||
|
ass = deepcopy(name_del)
|
||
|
self.assertTrue(ass.lhs)
|
||
|
self.assertTrue(ass.rhs)
|
||
|
self.assertTrue(ass.entry)
|
||
|
self.assertEqual(ass.pos, name_del.pos)
|
||
|
self.assertFalse(ass.is_arg)
|
||
|
self.assertTrue(ass.is_deletion)
|