MCPcopy Create free account
hub / github.com/aguinet/dragonffi / ArrayTest

Class ArrayTest

bindings/python/tests/test_array.py:22–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20from common import DFFITest
21
22class ArrayTest(DFFITest):
23 def test_array(self):
24 CU=self.FFI.compile('''
25#include <stdio.h>
26#include <string.h>
27#include <stdbool.h>
28
29struct A
30{
31 char buf[128];
32};
33
34struct A init() {
35 struct A a;
36 strcpy(a.buf, "hello");
37 return a;
38}
39
40bool verify(struct A const* v, const char* ref) {
41 return strcmp(v->buf, ref) == 0;
42}
43 ''&#x27;)
44 A = CU.funcs.init()
45 Buf = A.buf
46 self.assertEqual(Buf.get(0), "h")
47 Buf.set(0, 'H')
48 self.assertEqual(Buf.get(0), "H")
49 self.assertTrue(CU.funcs.verify(pydffi.ptr(A), b"Hello"))
50
51 m = pydffi.view_as_bytes(Buf)
52 v = ord("Z") if sys.version_info >= (3, 0) else struct.pack("B", ord("Z"))
53 m[0] = v
54 self.assertTrue(CU.funcs.verify(pydffi.ptr(A), b"Zello"))
55
56 UIntTy = self.FFI.basicType(pydffi.BasicKind.UInt)
57 N = 10
58 ArrTy = self.FFI.arrayType(UIntTy, N)
59 Arr=pydffi.CArrayObj(ArrTy)
60 for i in range(N):
61 Arr.set(i, i)
62 for i in range(N):
63 self.assertEqual(Arr.get(i), i)
64
65 # TOFIX!
66 #m = pydffi.view_as_bytes(Arr)
67 #for i in range(N):
68 # v = m[i]
69 # if sys.version_info[0] < 3:
70 # v = struct.unpack("I", v)[0]
71 # assert(v == i)
72
73if __name__ == '__main__':
74 unittest.main()

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected