php-src/ext/ffi/tests/021.phpt
2019-01-14 11:47:50 +03:00

58 lines
2.0 KiB
PHP

--TEST--
FFI 021: packed enums
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--INI--
ffi.enable=1
--FILE--
<?php
function test($size, $type) {
if (FFI::sizeof(FFI::new($type)) !== $size) {
echo "FAIL: sizeof($type) != $size\n";
}
}
test(4, "enum {a1, b1}");
test(1, "enum __attribute__((packed)) {a2, b2}");
test(4, "enum {a3=0, b3=0x80000000}");
test(8, "enum {a4=-1, b4=0x80000000}");
test(8, "enum {a5=0x80000000, b5=-1}");
test(4, "enum {a6=-1, b6=0x7fffffff}");
test(8, "enum {a7=-1, b7=0x7fffffff, c7}");
test(1, "enum __attribute__((packed)) {a8=0, b8=0xff}");
test(2, "enum __attribute__((packed)) {a9=0, b9=0x100}");
test(1, "enum __attribute__((packed)) {a10=-1, b10=0x7f}");
test(2, "enum __attribute__((packed)) {a11=-1, b11=0x80}");
test(1, "enum __attribute__((packed)) {a12=0x7f, b12=-0x80}");
test(2, "enum __attribute__((packed)) {a13=0x7f, b13=-0x81}");
test(2, "enum __attribute__((packed)) {a8=0, b8=0xffff}");
test(4, "enum __attribute__((packed)) {a9=0, b9=0x10000}");
test(2, "enum __attribute__((packed)) {a10=-1, b10=0x7f00}");
test(4, "enum __attribute__((packed)) {a11=-1, b11=0x8000}");
test(2, "enum __attribute__((packed)) {a12=0x7f00, b12=-0x8000}");
test(4, "enum __attribute__((packed)) {a13=0x7f00, b13=-0x8001}");
test(4, "enum __attribute__((packed)) {a8=0, b8=0xffffffff}");
test(8, "enum __attribute__((packed)) {a9=0, b9=0x100000000}");
test(4, "enum __attribute__((packed)) {a10=-1, b10=0x7f000000}");
test(8, "enum __attribute__((packed)) {a11=-1, b11=0x80000000}");
test(4, "enum __attribute__((packed)) {a12=0x7f000000, b12=-0x80000000}");
test(8, "enum __attribute__((packed)) {a13=0x7f000000, b13=-0x80000001}");
test(1, "enum __attribute__((packed)) {a14=-0x80}");
test(2, "enum __attribute__((packed)) {a14=-0x81}");
test(2, "enum __attribute__((packed)) {a14=-0x8000}");
test(4, "enum __attribute__((packed)) {a14=-0x8001}");
test(4, "enum __attribute__((packed)) {a14=-0x80000000}");
test(8, "enum __attribute__((packed)) {a14=-0x80000001}");
?>
ok
--EXPECT--
ok