~ubuntu-branches/ubuntu/karmic/pypy/karmic

« back to all changes in this revision

Viewing changes to pypy/objspace/flow/test/test_checkgraph.py

  • Committer: Bazaar Package Importer
  • Author(s): Alexandre Fayolle
  • Date: 2007-04-13 09:33:09 UTC
  • Revision ID: james.westby@ubuntu.com-20070413093309-yoojh4jcoocu2krz
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from pypy.objspace.flow.model import *
 
2
import py
 
3
 
 
4
def test_mingraph():
 
5
    g = FunctionGraph("g", Block([]))
 
6
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
7
    checkgraph(g)
 
8
 
 
9
def template():
 
10
    g = FunctionGraph("g", Block([]))
 
11
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
12
    checkgraph(g)
 
13
    py.test.raises(AssertionError, checkgraph, g)
 
14
 
 
15
 
 
16
def test_nostartblock():
 
17
    g = FunctionGraph("g", Block([]))
 
18
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
19
    g.startblock.isstartblock = False
 
20
    py.test.raises(AssertionError, checkgraph, g)
 
21
 
 
22
def test_twostartblocks():
 
23
    g = FunctionGraph("g", Block([]))
 
24
    b = Block([])
 
25
    b.isstartblock = True
 
26
    g.startblock.closeblock(Link([], b))
 
27
    b.closeblock(Link([Constant(1)], g.returnblock))
 
28
    py.test.raises(AssertionError, checkgraph, g)
 
29
 
 
30
def test_exitlessblocknotexitblock():
 
31
    g = FunctionGraph("g", Block([]))
 
32
    py.test.raises(AssertionError, checkgraph, g)
 
33
 
 
34
 
 
35
def test_nonvariableinputarg():
 
36
    b = Block([Constant(1)])
 
37
    g = FunctionGraph("g", b)
 
38
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
39
 
 
40
    py.test.raises(AssertionError, checkgraph, g)
 
41
 
 
42
def test_multiplydefinedvars():
 
43
    v = Variable()
 
44
    g = FunctionGraph("g", Block([v, v]))
 
45
    g.startblock.closeblock(Link([v], g.returnblock))
 
46
    py.test.raises(AssertionError, checkgraph, g)
 
47
 
 
48
    v = Variable()
 
49
    b = Block([v])
 
50
    b.operations.append(SpaceOperation("add", [Constant(1), Constant(2)], v))
 
51
    g = FunctionGraph("g", b)
 
52
    g.startblock.closeblock(Link([v], g.returnblock))
 
53
 
 
54
    py.test.raises(AssertionError, checkgraph, g)
 
55
 
 
56
def test_varinmorethanoneblock():
 
57
    v = Variable()
 
58
    g = FunctionGraph("g", Block([]))
 
59
    g.startblock.operations.append(SpaceOperation("pos", [Constant(1)], v))
 
60
    b = Block([v])
 
61
    g.startblock.closeblock(Link([v], b))
 
62
    b.closeblock(Link([v], g.returnblock))
 
63
    py.test.raises(AssertionError, checkgraph, g)
 
64
    
 
65
def test_useundefinedvar():
 
66
    v = Variable()
 
67
    g = FunctionGraph("g", Block([]))
 
68
    g.startblock.closeblock(Link([v], g.returnblock))
 
69
    py.test.raises(AssertionError, checkgraph, g)
 
70
 
 
71
    v = Variable()
 
72
    g = FunctionGraph("g", Block([]))
 
73
    g.startblock.exitswitch = v
 
74
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
75
    py.test.raises(AssertionError, checkgraph, g)
 
76
 
 
77
def test_invalid_arg():
 
78
    v = Variable()
 
79
    g = FunctionGraph("g", Block([]))
 
80
    g.startblock.operations.append(SpaceOperation("pos", [1], v))
 
81
    g.startblock.closeblock(Link([v], g.returnblock))
 
82
    py.test.raises(AssertionError, checkgraph, g)
 
83
 
 
84
def test_invalid_links():
 
85
    g = FunctionGraph("g", Block([]))
 
86
    g.startblock.closeblock(Link([Constant(1)], g.returnblock), Link([Constant(1)], g.returnblock))
 
87
    py.test.raises(AssertionError, checkgraph, g)
 
88
 
 
89
    v = Variable()
 
90
    g = FunctionGraph("g", Block([v]))
 
91
    g.startblock.exitswitch = v
 
92
    g.startblock.closeblock(Link([Constant(1)], g.returnblock, True),
 
93
                            Link([Constant(1)], g.returnblock, True))
 
94
    py.test.raises(AssertionError, checkgraph, g)
 
95
 
 
96
    v = Variable()
 
97
    g = FunctionGraph("g", Block([v]))
 
98
    g.startblock.exitswitch = v
 
99
    g.startblock.closeblock(Link([Constant(1)], g.returnblock))
 
100
    py.test.raises(AssertionError, checkgraph, g)
 
101