[pypy-commit] pypy faster-rstruct-2: write tests to check that USE_FASTPATH and ALLOW_SLOWPATH actually do what they are supposed to do
antocuni
pypy.commits at gmail.com
Thu May 18 11:13:33 EDT 2017
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: faster-rstruct-2
Changeset: r91331:ce82d5756ddd
Date: 2017-05-18 11:56 +0200
http://bitbucket.org/pypy/pypy/changeset/ce82d5756ddd/
Log: write tests to check that USE_FASTPATH and ALLOW_SLOWPATH actually
do what they are supposed to do
diff --git a/rpython/rlib/rstruct/test/test_pack.py b/rpython/rlib/rstruct/test/test_pack.py
--- a/rpython/rlib/rstruct/test/test_pack.py
+++ b/rpython/rlib/rstruct/test/test_pack.py
@@ -31,7 +31,7 @@
raise AttributeError(name)
-class BaseTestPack(object):
+class PackSupport(object):
"""
These test tests only the various pack_* functions, individually. There
is no RPython interface to them, as for now they are used only to
@@ -71,6 +71,32 @@
got = self.mypack(fmt, value)
assert got == expected
+
+class TestAllowSlowpath(PackSupport):
+ ALLOW_SLOWPATH = False
+ bigendian = not nativefmttable.native_is_bigendian
+ fmttable = standardfmttable.standard_fmttable
+
+ def test_slowpath_not_allowed(self):
+ # we are using a non-native endianess and ALLOW_SLOWPATH is False, so
+ # the following MUST raise
+ pytest.raises(ValueError, "self.mypack('i', 42)")
+
+
+class TestUseFastpath(PackSupport):
+ ALLOW_SLOWPATH = False
+ bigendian = nativefmttable.native_is_bigendian
+ fmttable = standardfmttable.standard_fmttable
+
+ def test_fastpath_taken(self):
+ # we are using native endianess and slowpath is not allowed, so the
+ # following MUST succeed
+ expected = struct.pack('i', 42)
+ assert self.mypack('i', 42) == expected
+
+
+class BaseTestPack(PackSupport):
+
def test_pack_int(self):
self.check('b', 42)
self.check('B', 242)
@@ -153,3 +179,4 @@
bigendian = nativefmttable.native_is_bigendian
fmt_prefix = '@'
fmttable = nativefmttable.native_fmttable
+
More information about the pypy-commit
mailing list