aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/common/pack.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/common/pack.h b/test/common/pack.h
new file mode 100644
index 0000000000..a46a2a98b8
--- /dev/null
+++ b/test/common/pack.h
@@ -0,0 +1,36 @@
+#include <cxxtest/TestSuite.h>
+
+#include "common/stdafx.h"
+#include "common/scummsys.h"
+
+#include <common/pack-start.h> // START STRUCT PACKING
+
+struct TestStruct {
+ uint32 x;
+ byte y;
+ uint16 z;
+ uint32 a;
+ byte b;
+};
+
+#include <common/pack-end.h> // END STRUCT PACKING
+
+#define OFFS(type,item) (int)(&((type*)0)->type::item)
+
+class PackTestSuite : public CxxTest::TestSuite
+{
+ public:
+ void test_packing( void )
+ {
+ TS_ASSERT_EQUALS( sizeof(TestStruct), 4+1+2+4+1 );
+ }
+
+ void test_offsets( void )
+ {
+ TS_ASSERT_EQUALS( OFFS(TestStruct, x), 0 );
+ TS_ASSERT_EQUALS( OFFS(TestStruct, y), 4 );
+ TS_ASSERT_EQUALS( OFFS(TestStruct, z), 5 );
+ TS_ASSERT_EQUALS( OFFS(TestStruct, a), 7 );
+ TS_ASSERT_EQUALS( OFFS(TestStruct, b), 11 );
+ }
+};