Esempio n. 1
0
 def test_sizeof_cdata(self):
     ffi = FFI(backend=self.Backend())
     assert ffi.sizeof(ffi.new("short")) == SIZE_OF_PTR
     assert ffi.sizeof(ffi.cast("short", 123)) == SIZE_OF_SHORT
     #
     a = ffi.new("int[]", [10, 11, 12, 13, 14])
     assert len(a) == 5
     assert ffi.sizeof(a) == 5 * SIZE_OF_INT
Esempio n. 2
0
 def test_sizeof_cdata(self):
     ffi = FFI(backend=self.Backend())
     assert ffi.sizeof(ffi.new("short")) == SIZE_OF_PTR
     assert ffi.sizeof(ffi.cast("short", 123)) == SIZE_OF_SHORT
     #
     a = ffi.new("int[]", [10, 11, 12, 13, 14])
     assert len(a) == 5
     assert ffi.sizeof(a) == 5 * SIZE_OF_INT
Esempio n. 3
0
def test_ffi_nonfull_struct():
    py.test.skip("XXX")
    ffi = FFI()
    ffi.cdef("""
    struct sockaddr {
       int sa_family;
       ...;
    };
    """)
    py.test.raises(VerificationMissing, ffi.sizeof, 'struct sockaddr')
    ffi.verify('''
    #include <sys/types.h>
    #include <sys/socket.h>
    ''')
    assert ffi.sizeof('struct sockaddr') == 14 + ffi.sizeof(int)
Esempio n. 4
0
def test_ffi_nonfull_struct():
    py.test.skip("XXX")
    ffi = FFI()
    ffi.cdef(
        """
    struct sockaddr {
       int sa_family;
       ...;
    };
    """
    )
    py.test.raises(VerificationMissing, ffi.sizeof, "struct sockaddr")
    ffi.verify(
        """
    #include <sys/types.h>
    #include <sys/socket.h>
    """
    )
    assert ffi.sizeof("struct sockaddr") == 14 + ffi.sizeof(int)
Esempio n. 5
0
 def test_sizeof_type(self):
     ffi = FFI(backend=self.Backend())
     ffi.cdef("""
         struct foo { int a; short b, c, d; };
         union foo { int a; short b, c, d; };
     """)
     for c_type, expected_size in [
         ('char', 1),
         ('unsigned int', 4),
         ('char *', SIZE_OF_LONG),
         ('int[5]', 20),
         ('struct foo', 12),
         ('union foo', 4),
         ]:
         size = ffi.sizeof(c_type)
         assert size == expected_size
Esempio n. 6
0
 def test_sizeof_type(self):
     ffi = FFI(backend=self.Backend())
     ffi.cdef("""
         struct foo { int a; short b, c, d; };
         union foo { int a; short b, c, d; };
     """)
     for c_type, expected_size in [
         ('char', 1),
         ('unsigned int', 4),
         ('char *', SIZE_OF_LONG),
         ('int[5]', 20),
         ('struct foo', 12),
         ('union foo', 4),
     ]:
         size = ffi.sizeof(c_type)
         assert size == expected_size
Esempio n. 7
0
 def test_bitfield(self):
     ffi = FFI(backend=self.Backend())
     ffi.cdef("struct foo { int a:10, b:20, c:3; };")
     assert ffi.sizeof("struct foo") == 8
     s = ffi.new("struct foo")
     s.a = 511
     py.test.raises(OverflowError, "s.a = 512")
     py.test.raises(OverflowError, "s[0].a = 512")
     assert s.a == 511
     s.a = -512
     py.test.raises(OverflowError, "s.a = -513")
     py.test.raises(OverflowError, "s[0].a = -513")
     assert s.a == -512
     s.c = 3
     assert s.c == 3
     py.test.raises(OverflowError, "s.c = 4")
     py.test.raises(OverflowError, "s[0].c = 4")
     s.c = -4
     assert s.c == -4
Esempio n. 8
0
 def test_bitfield(self):
     ffi = FFI(backend=self.Backend())
     ffi.cdef("struct foo { int a:10, b:20, c:3; };")
     assert ffi.sizeof("struct foo") == 8
     s = ffi.new("struct foo")
     s.a = 511
     py.test.raises(OverflowError, "s.a = 512")
     py.test.raises(OverflowError, "s[0].a = 512")
     assert s.a == 511
     s.a = -512
     py.test.raises(OverflowError, "s.a = -513")
     py.test.raises(OverflowError, "s[0].a = -513")
     assert s.a == -512
     s.c = 3
     assert s.c == 3
     py.test.raises(OverflowError, "s.c = 4")
     py.test.raises(OverflowError, "s[0].c = 4")
     s.c = -4
     assert s.c == -4