aboutsummaryrefslogtreecommitdiff
path: root/test/common/pack.h
diff options
context:
space:
mode:
authorMax Horn2006-07-22 18:39:41 +0000
committerMax Horn2006-07-22 18:39:41 +0000
commitb4af5bc33122903a6b7a86abe8ec9bcb2efa8cfb (patch)
tree10f3350058ee993581d42af691037c0545b06973 /test/common/pack.h
parent2859b647026af1a927d1a74100f125bbc0f77db3 (diff)
downloadscummvm-rg350-b4af5bc33122903a6b7a86abe8ec9bcb2efa8cfb.tar.gz
scummvm-rg350-b4af5bc33122903a6b7a86abe8ec9bcb2efa8cfb.tar.bz2
scummvm-rg350-b4af5bc33122903a6b7a86abe8ec9bcb2efa8cfb.zip
Adding unit test for struct packing
svn-id: r23570
Diffstat (limited to 'test/common/pack.h')
-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 );
+ }
+};