summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2016-04-15 18:23:28 +0200
committerArmin Rigo <arigo@tunes.org>2016-04-15 18:23:28 +0200
commitf5d81838a8eb7a0108192eb5abb9410ee7c038ea (patch)
tree014faf77b252512489d0baf5ccc2436a470c9692 /testing
parent9289e76f6e2f207be49f71734727194558c16351 (diff)
downloadcffi-f5d81838a8eb7a0108192eb5abb9410ee7c038ea.tar.gz
ffi.rawstring(), with a minimal interface
Diffstat (limited to 'testing')
-rw-r--r--testing/cffi0/test_ffi_backend.py9
-rw-r--r--testing/cffi1/test_ffi_obj.py12
2 files changed, 21 insertions, 0 deletions
diff --git a/testing/cffi0/test_ffi_backend.py b/testing/cffi0/test_ffi_backend.py
index c5ef188..5be6dff 100644
--- a/testing/cffi0/test_ffi_backend.py
+++ b/testing/cffi0/test_ffi_backend.py
@@ -472,3 +472,12 @@ class TestBitfield:
assert ffi.list_types() == (['b', 'bb', 'bbb'],
['a', 'cc', 'ccc'],
['aa', 'aaa', 'g'])
+
+ def test_rawstring(self):
+ ffi = FFI()
+ p = ffi.new("char[]", "abc\x00def")
+ assert ffi.rawstring(p) == "abc\x00def\x00"
+ assert ffi.rawstring(p[1:6]) == "bc\x00de"
+ p = ffi.new("wchar_t[]", u"abc\x00def")
+ assert ffi.rawstring(p) == u"abc\x00def\x00"
+ assert ffi.rawstring(p[1:6]) == u"bc\x00de"
diff --git a/testing/cffi1/test_ffi_obj.py b/testing/cffi1/test_ffi_obj.py
index 4002e9d..02f42a6 100644
--- a/testing/cffi1/test_ffi_obj.py
+++ b/testing/cffi1/test_ffi_obj.py
@@ -495,3 +495,15 @@ def test_init_once_multithread_failure():
assert i < 20
time.sleep(0.51)
assert seen == ['init!', 'oops'] * 3
+
+def test_rawstring():
+ ffi = _cffi1_backend.FFI()
+ p = ffi.new("char[]", "abc\x00def")
+ assert ffi.rawstring(p) == "abc\x00def\x00"
+ assert ffi.rawstring(p[1:6]) == "bc\x00de"
+ p = ffi.new("wchar_t[]", u"abc\x00def")
+ assert ffi.rawstring(p) == u"abc\x00def\x00"
+ assert ffi.rawstring(p[1:6]) == u"bc\x00de"
+ #
+ py.test.raises(TypeError, ffi.rawstring, "foobar")
+ py.test.raises(TypeError, ffi.rawstring, p + 1)