Skip to content

Commit 1305651

Browse files
committed
vm: start of test suite
1 parent 0273331 commit 1305651

File tree

2 files changed

+156
-0
lines changed

2 files changed

+156
-0
lines changed

vm/tests/ops.py

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#!/usr/bin/env python3.4
2+
3+
_2 = 2
4+
_10 = 10
5+
_11 = 11
6+
_100 = 100
7+
a=[0,1,2,3,4]
8+
9+
# Unary Ops
10+
assert +_2 == 2
11+
assert -_2 == -2
12+
assert not _2 is False
13+
assert ~_2 == -3
14+
15+
# Binary Ops
16+
assert _2**_10 == 1024
17+
assert _2*_10 == 20
18+
assert _10//_2 == 5
19+
assert _11//_2 == 5
20+
assert _10/_2 == 5.0
21+
assert _11/_2 == 5.5
22+
assert _10 % _2 == 0
23+
assert _11 % _2 == 1
24+
assert _10 + _2 == 12
25+
assert _10 - _2 == 8
26+
assert a[1] == 1
27+
assert a[4] == 4
28+
assert _2 << _10 == 2048
29+
assert _100 >> 2 == 25
30+
assert _10 & _2 == 2
31+
assert _100 | _2 == 102
32+
assert _10 ^ _2 == 8
33+
34+
# Inplace Ops
35+
a = _2
36+
a **= _10
37+
assert a == 1024
38+
a = _2
39+
a *= _10
40+
assert a == 20
41+
a = _10
42+
a //= _2
43+
assert a == 5
44+
a = _11
45+
a //= _2
46+
assert a == 5
47+
a = _10
48+
a /= _2
49+
assert a == 5.0
50+
a = _11
51+
a /= _2
52+
assert a == 5.5
53+
a = _10
54+
a %= _2
55+
assert a == 0
56+
a = _11
57+
a %= _2
58+
assert a == 1
59+
a = _10
60+
a += _2
61+
assert a == 12
62+
a = _10
63+
a -= _2
64+
assert a == 8
65+
a = _2
66+
a <<= _10
67+
assert a == 2048
68+
a = _100
69+
a >>= 2
70+
assert a == 25
71+
a = _10
72+
a &= _2
73+
assert a == 2
74+
a = _100
75+
a |= _2
76+
assert a == 102
77+
a = _10
78+
a ^= _2
79+
assert a == 8
80+
81+
# Comparison
82+
assert _2 < _10
83+
assert _2 <= _10
84+
assert _2 <= _2
85+
assert _2 == _2
86+
assert _2 != _10
87+
assert _10 > _2
88+
assert _10 >= _2
89+
assert _2 >= _2
90+
# FIXME in
91+
# FIXME not in
92+
assert True is True
93+
assert True is not False
94+
# FIXME EXC_MATCH

vm/vm_test.go

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package vm_test
2+
3+
import (
4+
"fmt"
5+
"io/ioutil"
6+
"os"
7+
"path"
8+
"strings"
9+
"testing"
10+
11+
_ "github.com/ncw/gpython/builtin"
12+
"github.com/ncw/gpython/compile"
13+
"github.com/ncw/gpython/py"
14+
"github.com/ncw/gpython/vm"
15+
)
16+
17+
const testDir = "tests"
18+
19+
// Run the code in str
20+
func run(t *testing.T, prog string) {
21+
f, err := os.Open(prog)
22+
if err != nil {
23+
t.Fatalf("Open failed: %v", err)
24+
}
25+
defer f.Close()
26+
27+
str, err := ioutil.ReadAll(f)
28+
if err != nil {
29+
t.Fatalf("ReadAll failed: %v", err)
30+
}
31+
32+
obj, err := compile.Compile(string(str), prog, "exec", 0, true)
33+
if err != nil {
34+
t.Fatalf("Compile failed: %v", err)
35+
}
36+
37+
code := obj.(*py.Code)
38+
module := py.NewModule("__main__", "", nil, nil)
39+
module.Globals["__file__"] = py.String(prog)
40+
41+
res, err := vm.Run(module.Globals, module.Globals, code, nil)
42+
if err != nil {
43+
py.TracebackDump(err)
44+
t.Fatalf("Run failed: %v", err)
45+
}
46+
47+
fmt.Printf("Return = %v\n", res)
48+
}
49+
50+
func TestVm(t *testing.T) {
51+
files, err := ioutil.ReadDir(testDir)
52+
if err != nil {
53+
t.Fatalf("ReadDir failed: %v", err)
54+
}
55+
for _, f := range files {
56+
name := path.Join(testDir, f.Name())
57+
if strings.HasSuffix(name, ".py") {
58+
t.Logf("Running %q", name)
59+
run(t, name)
60+
}
61+
}
62+
}

0 commit comments

Comments
 (0)