[pypy-commit] pypy default: clean up test_objectmodel.py
rlamy
noreply at buildbot.pypy.org
Wed Nov 25 11:30:58 EST 2015
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch:
Changeset: r80957:b4515dee6ebf
Date: 2015-11-25 16:31 +0000
http://bitbucket.org/pypy/pypy/changeset/b4515dee6ebf/
Log: clean up test_objectmodel.py
diff --git a/rpython/rlib/test/test_objectmodel.py b/rpython/rlib/test/test_objectmodel.py
--- a/rpython/rlib/test/test_objectmodel.py
+++ b/rpython/rlib/test/test_objectmodel.py
@@ -1,8 +1,12 @@
from collections import OrderedDict
import py
-from rpython.rlib.objectmodel import *
-from rpython.rlib import types
-from rpython.annotator import model
+from rpython.rlib.objectmodel import (
+ r_dict, UnboxedValue, Symbolic, compute_hash, compute_identity_hash,
+ compute_unique_id, current_object_addr_as_int, we_are_translated,
+ prepare_dict_update, reversed_dict, specialize, enforceargs, newlist_hint,
+ resizelist_hint, is_annotation_constant, always_inline,
+ iterkeys_with_hash, iteritems_with_hash, contains_with_hash,
+ setitem_with_hash, getitem_with_hash, delitem_with_hash, import_from_mixin)
from rpython.translator.translator import TranslationContext, graphof
from rpython.rtyper.test.tool import BaseRtypingTest
from rpython.rtyper.test.test_llinterp import interpret
@@ -72,9 +76,9 @@
rdic = r_dict(operator.eq, hash)
rdic['x'] = rdic
assert str(rdic) == "r_dict({'x': r_dict({...})})"
- assert repr(rdic)== "r_dict({'x': r_dict({...})})"
+ assert repr(rdic) == "r_dict({'x': r_dict({...})})"
-def test_r_dict():
+def func_r_dict():
# NB. this test function is also annotated/rtyped by the next tests
d = r_dict(strange_key_eq, strange_key_hash)
return play_with_r_dict(d)
@@ -82,10 +86,11 @@
class Strange:
def key_eq(strange, key1, key2):
return key1[0] == key2[0] # only the 1st character is relevant
+
def key_hash(strange, key):
return ord(key[0])
-def test_r_dict_bm():
+def func_r_dict_bm():
# NB. this test function is also annotated by the next tests
strange = Strange()
d = r_dict(strange.key_eq, strange.key_hash)
@@ -94,7 +99,7 @@
def test_annotate_r_dict():
t = TranslationContext()
a = t.buildannotator()
- a.build_types(test_r_dict, [])
+ a.build_types(func_r_dict, [])
#t.view()
graph = graphof(t, strange_key_eq)
assert a.binding(graph.getargs()[0]).knowntype == str
@@ -105,7 +110,7 @@
def test_annotate_r_dict_bm():
t = TranslationContext()
a = t.buildannotator()
- a.build_types(test_r_dict_bm, [])
+ a.build_types(func_r_dict_bm, [])
#t.view()
strange_key_eq = Strange.key_eq.im_func
strange_key_hash = Strange.key_hash.im_func
@@ -124,6 +129,7 @@
def test_unboxed_value():
class Base(object):
__slots__ = ()
+
class C(Base, UnboxedValue):
__slots__ = 'smallint'
@@ -196,7 +202,7 @@
class TestObjectModel(BaseRtypingTest):
def test_we_are_translated(self):
- assert we_are_translated() == False
+ assert we_are_translated() is False
def fn():
return we_are_translated()
@@ -204,11 +210,11 @@
assert res is True
def test_rtype_r_dict(self):
- res = self.interpret(test_r_dict, [])
+ res = self.interpret(func_r_dict, [])
assert res is True
def test_rtype_r_dict_bm(self):
- res = self.interpret(test_r_dict_bm, [])
+ res = self.interpret(func_r_dict_bm, [])
assert res is True
def test_rtype_constant_r_dicts(self):
@@ -290,24 +296,27 @@
def test_access_in_try(self):
h = lambda x: 1
- eq = lambda x,y: x==y
+ eq = lambda x, y: x == y
+
def f(d):
try:
return d[2]
except ZeroDivisionError:
return 42
return -1
+
def g(n):
d = r_dict(eq, h)
d[1] = n
- d[2] = 2*n
+ d[2] = 2 * n
return f(d)
+
res = self.interpret(g, [3])
assert res == 6
def test_access_in_try_set(self):
h = lambda x: 1
- eq = lambda x,y: x==y
+ eq = lambda x, y: x == y
def f(d):
try:
d[2] = 77
@@ -339,7 +348,7 @@
assert res == 42 # "did not crash"
def test_reversed_dict(self):
- d1 = {2:3, 4:5, 6:7}
+ d1 = {2: 3, 4: 5, 6: 7}
def g():
n1 = 0
for key in d1:
@@ -358,7 +367,7 @@
pass
def f(i):
assert compute_hash(i) == compute_hash(42)
- assert compute_hash(i+1.0) == compute_hash(43.0)
+ assert compute_hash(i + 1.0) == compute_hash(43.0)
assert compute_hash("Hello" + str(i)) == compute_hash("Hello42")
if i == 42:
p = None
@@ -373,13 +382,11 @@
assert compute_hash(INFINITY) == 314159
assert compute_hash(-INFINITY) == -271828
assert compute_hash(NAN) == 0
- return i*2
+ return i * 2
res = self.interpret(f, [42])
assert res == 84
def test_isconstant(self):
- from rpython.rlib.objectmodel import is_annotation_constant, specialize
-
@specialize.arg_or_var(0)
def f(arg):
if is_annotation_constant(arg):
@@ -396,7 +403,7 @@
def f():
x = [1]
y = ['b']
- objectmodel.keepalive_until_here(x,y)
+ objectmodel.keepalive_until_here(x, y)
return 1
res = self.interpret(f, [])
@@ -410,8 +417,8 @@
def f(i):
assert compute_hash(None) == 0
assert compute_hash(i) == h_42
- assert compute_hash(i+1.0) == h_43_dot_0
- assert compute_hash((i+3)/6.0) == h_7_dot_5
+ assert compute_hash(i + 1.0) == h_43_dot_0
+ assert compute_hash((i + 3) / 6.0) == h_7_dot_5
assert compute_hash("Hello" + str(i)) == h_Hello42
if i == 42:
p = None
@@ -420,14 +427,14 @@
assert compute_hash(p) == h_None
assert compute_hash(("world", None, i, 7.5)) == h_tuple
assert compute_hash(q) == h_q
- return i*2
- h_42 = compute_hash(42)
+ return i * 2
+ h_42 = compute_hash(42)
h_43_dot_0 = compute_hash(43.0)
- h_7_dot_5 = compute_hash(7.5)
- h_Hello42 = compute_hash("Hello42")
- h_None = compute_hash(None)
- h_tuple = compute_hash(("world", None, 42, 7.5))
- h_q = compute_hash(q)
+ h_7_dot_5 = compute_hash(7.5)
+ h_Hello42 = compute_hash("Hello42")
+ h_None = compute_hash(None)
+ h_tuple = compute_hash(("world", None, 42, 7.5))
+ h_q = compute_hash(q)
res = self.interpret(f, [42])
assert res == 84
@@ -466,18 +473,18 @@
@always_inline
def f(a, b, c):
return a, b, c
- assert f._always_inline_ == True
+ assert f._always_inline_ is True
def test_enforceargs_defaults():
@enforceargs(int, int)
def f(a, b=40):
- return a+b
+ return a + b
assert f(2) == 42
def test_enforceargs_keywords():
@enforceargs(b=int)
def f(a, b, c):
- return a+b
+ return a + b
assert f._annenforceargs_ == (None, int, None)
def test_enforceargs_int_float_promotion():
@@ -511,7 +518,7 @@
def f(a, b, c):
return a, b, c
assert f._annenforceargs_ == (int, str, None)
- assert f(1, 2, 3) == (1, 2, 3) # no typecheck
+ assert f(1, 2, 3) == (1, 2, 3) # no typecheck
def test_enforceargs_translates():
from rpython.rtyper.lltypesystem import lltype
@@ -539,39 +546,36 @@
def test_newlist():
- from rpython.annotator.model import SomeInteger
def f(z):
x = newlist_hint(sizehint=38)
if z < 0:
x.append(1)
return len(x)
- graph = getgraph(f, [SomeInteger()])
+ graph = getgraph(f, [int])
for llop in graph.startblock.operations:
if llop.opname == 'malloc_varsize':
break
assert llop.args[2].value == 38
def test_newlist_nonconst():
- from rpython.annotator.model import SomeInteger
def f(z):
x = newlist_hint(sizehint=z)
return len(x)
- graph = getgraph(f, [SomeInteger()])
+ graph = getgraph(f, [int])
for llop in graph.startblock.operations:
if llop.opname == 'malloc_varsize':
break
assert llop.args[2] is graph.startblock.inputargs[0]
def test_resizelist_hint():
- from rpython.annotator.model import SomeInteger
def f(z):
x = []
resizelist_hint(x, 39)
return len(x)
- graph = getgraph(f, [SomeInteger()])
+ graph = getgraph(f, [int])
for _, op in graph.iterblockops():
if op.opname == 'direct_call':
break
@@ -591,7 +595,7 @@
def test_iterkeys_with_hash():
def f(i):
- d = {i+.0: 5, i+.5: 6}
+ d = {i + .0: 5, i + .5: 6}
total = 0
for k, h in iterkeys_with_hash(d):
total += k * h
@@ -605,7 +609,7 @@
def test_iteritems_with_hash():
def f(i):
- d = {i+.0: 5, i+.5: 6}
+ d = {i + .0: 5, i + .5: 6}
total = 0
for k, v, h in iteritems_with_hash(d):
total += k * h * v
@@ -619,9 +623,9 @@
def test_contains_with_hash():
def f(i):
- d = {i+.5: 5}
- assert contains_with_hash(d, i+.5, compute_hash(i+.5))
- assert not contains_with_hash(d, i+.3, compute_hash(i+.3))
+ d = {i + .5: 5}
+ assert contains_with_hash(d, i + .5, compute_hash(i + .5))
+ assert not contains_with_hash(d, i + .3, compute_hash(i + .3))
return 0
f(29)
@@ -630,9 +634,9 @@
def test_setitem_with_hash():
def f(i):
d = {}
- setitem_with_hash(d, i+.5, compute_hash(i+.5), 42)
- setitem_with_hash(d, i+.6, compute_hash(i+.6), -612)
- return d[i+.5]
+ setitem_with_hash(d, i + .5, compute_hash(i + .5), 42)
+ setitem_with_hash(d, i + .6, compute_hash(i + .6), -612)
+ return d[i + .5]
assert f(29) == 42
res = interpret(f, [27])
@@ -640,8 +644,8 @@
def test_getitem_with_hash():
def f(i):
- d = {i+.5: 42, i+.6: -612}
- return getitem_with_hash(d, i+.5, compute_hash(i+.5))
+ d = {i + .5: 42, i + .6: -612}
+ return getitem_with_hash(d, i + .5, compute_hash(i + .5))
assert f(29) == 42
res = interpret(f, [27])
@@ -649,10 +653,10 @@
def test_delitem_with_hash():
def f(i):
- d = {i+.5: 42, i+.6: -612}
- delitem_with_hash(d, i+.5, compute_hash(i+.5))
+ d = {i + .5: 42, i + .6: -612}
+ delitem_with_hash(d, i + .5, compute_hash(i + .5))
try:
- delitem_with_hash(d, i+.5, compute_hash(i+.5))
+ delitem_with_hash(d, i + .5, compute_hash(i + .5))
except KeyError:
pass
else:
@@ -682,39 +686,51 @@
def test_import_from_mixin():
class M: # old-style
- def f(self): pass
+ def f(self):
+ pass
class A: # old-style
import_from_mixin(M)
assert A.f.im_func is not M.f.im_func
class M(object):
- def f(self): pass
+ def f(self):
+ pass
class A: # old-style
import_from_mixin(M)
assert A.f.im_func is not M.f.im_func
class M: # old-style
- def f(self): pass
+ def f(self):
+ pass
class A(object):
import_from_mixin(M)
assert A.f.im_func is not M.f.im_func
class M(object):
- def f(self): pass
+ def f(self):
+ pass
class A(object):
import_from_mixin(M)
assert A.f.im_func is not M.f.im_func
class MBase(object):
- a = 42; b = 43; c = 1000
- def f(self): return "hi"
- def g(self): return self.c - 1
+ a = 42
+ b = 43
+ c = 1000
+ def f(self):
+ return "hi"
+ def g(self):
+ return self.c - 1
+
class M(MBase):
a = 84
- def f(self): return "there"
+ def f(self):
+ return "there"
+
class A(object):
import_from_mixin(M)
c = 88
+
assert A.f.im_func is not M.f.im_func
assert A.f.im_func is not MBase.f.im_func
assert A.g.im_func is not MBase.g.im_func
@@ -776,7 +792,6 @@
assert B._immutable_fields_ == ['b', 'a']
assert A._immutable_fields_ == ['a']
-
class B(object):
import_from_mixin(A)
@@ -785,7 +800,6 @@
class C(A):
_immutable_fields_ = ['c']
-
class B(object):
import_from_mixin(C)
@@ -797,9 +811,9 @@
assert B._immutable_fields_ == ['b', 'c', 'a']
-
class B(object):
_immutable_fields_ = ['b']
+
class BA(B):
import_from_mixin(C)
More information about the pypy-commit
mailing list