[pypy-commit] creflect default: more tests
arigo
noreply at buildbot.pypy.org
Fri Dec 19 17:10:10 CET 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r205:43aafe465a8b
Date: 2014-12-19 15:26 +0100
http://bitbucket.org/cffi/creflect/changeset/43aafe465a8b/
Log: more tests
diff --git a/zeffir/test/test_c.py b/zeffir/test/test_c.py
--- a/zeffir/test/test_c.py
+++ b/zeffir/test/test_c.py
@@ -153,3 +153,41 @@
assert repr(ffi.cast(p, 'A')) == "<cdata 'char' %s'A'>" % mandatory_b_prefix
assert repr(ffi.cast(p, 255)) == r"<cdata 'char' %s'\xff'>" % mandatory_b_prefix
assert repr(ffi.cast(p, 0)) == r"<cdata 'char' %s'\x00'>" % mandatory_b_prefix
+
+def test_pointer_type():
+ ffi = support.new_ffi()
+ p = ffi.typeof("int")
+ assert repr(p) == "<ctype 'int'>"
+ p = ffi.typeof("int*")
+ assert repr(p) == "<ctype 'int *'>"
+ p = ffi.typeof("int**")
+ assert repr(p) == "<ctype 'int * *'>"
+ p = ffi.typeof("int***")
+ assert repr(p) == "<ctype 'int * * *'>"
+
+def test_inspect_pointer_type():
+ ffi = support.new_ffi()
+ p1 = ffi.typeof("int")
+ p2 = ffi.typeof("int*")
+ assert p2.kind == "pointer"
+ assert p2.cname == "int *"
+ assert p2.item is p1
+ check_dir(p2, ['cname', 'kind', 'item'])
+ p3 = ffi.typeof("int**")
+ assert p3.item is p2
+
+def test_pointer_to_int():
+ ffi = support.new_ffi()
+ py.test.raises(TypeError, ffi.new, "int")
+ py.test.raises(TypeError, ffi.new, "int", None)
+ py.test.raises(TypeError, ffi.new, "int", 42)
+ p = ffi.new("int*")
+ assert repr(p) == "<cdata 'int *' owning %d bytes>" % size_of_int()
+ p = ffi.new("int*", None)
+ assert repr(p) == "<cdata 'int *' owning %d bytes>" % size_of_int()
+ p = ffi.new("int*", 5000)
+ assert repr(p) == "<cdata 'int *' owning %d bytes>" % size_of_int()
+ q = ffi.cast("int *", p)
+ assert repr(q).startswith("<cdata 'int *' 0x")
+ assert p == q
+ assert hash(p) == hash(q)
More information about the pypy-commit
mailing list