[pypy-commit] pypy py3k: merge default
pjenvey
noreply at buildbot.pypy.org
Mon Feb 3 06:43:33 CET 2014
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r69056:5b5f0da64f64
Date: 2014-02-02 21:42 -0800
http://bitbucket.org/pypy/pypy/changeset/5b5f0da64f64/
Log: merge default
diff --git a/rpython/rlib/test/test_rarithmetic.py b/rpython/rlib/test/test_rarithmetic.py
--- a/rpython/rlib/test/test_rarithmetic.py
+++ b/rpython/rlib/test/test_rarithmetic.py
@@ -492,9 +492,9 @@
py.test.raises(ParseStringError, string_to_int, '-0x', 16)
exc = py.test.raises(ParseStringError, string_to_int, '')
- assert exc.value.msg == "invalid literal for int() with base 10: ''"
+ assert exc.value.msg == "invalid literal for int() with base 10"
exc = py.test.raises(ParseStringError, string_to_int, '', 0)
- assert exc.value.msg == "invalid literal for int() with base 0: ''"
+ assert exc.value.msg == "invalid literal for int() with base 0"
def test_string_to_int_overflow(self):
import sys
diff --git a/rpython/rtyper/test/test_llannotation.py b/rpython/rtyper/test/test_llannotation.py
new file mode 100644
--- /dev/null
+++ b/rpython/rtyper/test/test_llannotation.py
@@ -0,0 +1,89 @@
+import py.test
+from rpython.annotator.model import (
+ SomeInteger, SomeBool, SomeChar, unionof, SomeImpossibleValue,
+ UnionError, SomeInstance, SomeSingleFloat)
+from rpython.rlib.rarithmetic import r_uint, r_singlefloat
+from rpython.rtyper.llannotation import (
+ SomePtr, annotation_to_lltype, ll_to_annotation)
+from rpython.rtyper.typesystem import lltype
+import rpython.rtyper.rtyper # make sure to import the world
+
+class C(object):
+ pass
+
+class DummyClassDef:
+ def __init__(self, cls=C):
+ self.cls = cls
+ self.name = cls.__name__
+
+def test_ll_to_annotation():
+ s_z = ll_to_annotation(lltype.Signed._defl())
+ s_s = SomeInteger()
+ s_u = SomeInteger(nonneg=True, unsigned=True)
+ assert s_z.contains(s_s)
+ assert not s_z.contains(s_u)
+ s_uz = ll_to_annotation(lltype.Unsigned._defl())
+ assert s_uz.contains(s_u)
+ assert ll_to_annotation(lltype.Bool._defl()).contains(SomeBool())
+ assert ll_to_annotation(lltype.Char._defl()).contains(SomeChar())
+ S = lltype.GcStruct('s')
+ A = lltype.GcArray()
+ s_p = ll_to_annotation(lltype.malloc(S))
+ assert isinstance(s_p, SomePtr) and s_p.ll_ptrtype == lltype.Ptr(S)
+ s_p = ll_to_annotation(lltype.malloc(A, 0))
+ assert isinstance(s_p, SomePtr) and s_p.ll_ptrtype == lltype.Ptr(A)
+
+def test_annotation_to_lltype():
+ s_i = SomeInteger()
+ s_pos = SomeInteger(nonneg=True)
+ s_1 = SomeInteger(nonneg=True)
+ s_1.const = 1
+ s_m1 = SomeInteger(nonneg=False)
+ s_m1.const = -1
+ s_u = SomeInteger(nonneg=True, unsigned=True)
+ s_u1 = SomeInteger(nonneg=True, unsigned=True)
+ s_u1.const = r_uint(1)
+ assert annotation_to_lltype(s_i) == lltype.Signed
+ assert annotation_to_lltype(s_pos) == lltype.Signed
+ assert annotation_to_lltype(s_1) == lltype.Signed
+ assert annotation_to_lltype(s_m1) == lltype.Signed
+ assert annotation_to_lltype(s_u) == lltype.Unsigned
+ assert annotation_to_lltype(s_u1) == lltype.Unsigned
+ assert annotation_to_lltype(SomeBool()) == lltype.Bool
+ assert annotation_to_lltype(SomeChar()) == lltype.Char
+ PS = lltype.Ptr(lltype.GcStruct('s'))
+ s_p = SomePtr(ll_ptrtype=PS)
+ assert annotation_to_lltype(s_p) == PS
+ si0 = SomeInstance(DummyClassDef(), True)
+ with py.test.raises(ValueError):
+ annotation_to_lltype(si0)
+ s_singlefloat = SomeSingleFloat()
+ s_singlefloat.const = r_singlefloat(0.0)
+ assert annotation_to_lltype(s_singlefloat) == lltype.SingleFloat
+
+def test_ll_union():
+ PS1 = lltype.Ptr(lltype.GcStruct('s'))
+ PS2 = lltype.Ptr(lltype.GcStruct('s'))
+ PS3 = lltype.Ptr(lltype.GcStruct('s3'))
+ PA1 = lltype.Ptr(lltype.GcArray())
+ PA2 = lltype.Ptr(lltype.GcArray())
+
+ assert unionof(SomePtr(PS1), SomePtr(PS1)) == SomePtr(PS1)
+ assert unionof(SomePtr(PS1), SomePtr(PS2)) == SomePtr(PS2)
+ assert unionof(SomePtr(PS1), SomePtr(PS2)) == SomePtr(PS1)
+
+ assert unionof(SomePtr(PA1), SomePtr(PA1)) == SomePtr(PA1)
+ assert unionof(SomePtr(PA1), SomePtr(PA2)) == SomePtr(PA2)
+ assert unionof(SomePtr(PA1), SomePtr(PA2)) == SomePtr(PA1)
+
+ assert unionof(SomePtr(PS1), SomeImpossibleValue()) == SomePtr(PS1)
+ assert unionof(SomeImpossibleValue(), SomePtr(PS1)) == SomePtr(PS1)
+
+ with py.test.raises(UnionError):
+ unionof(SomePtr(PA1), SomePtr(PS1))
+ with py.test.raises(UnionError):
+ unionof(SomePtr(PS1), SomePtr(PS3))
+ with py.test.raises(UnionError):
+ unionof(SomePtr(PS1), SomeInteger())
+ with py.test.raises(UnionError):
+ unionof(SomeInteger(), SomePtr(PS1))
More information about the pypy-commit
mailing list