[4/5] winapi_test: The real tests are done at compile time so use C_ASSERT() instead of ok(). Do only one test per line so one can know exactly what went wrong.
Francois Gouget
fgouget at free.fr
Wed Jan 7 17:26:10 CST 2009
---
This patch applies on top of the previous ones.
tools/winapi/winapi_test | 88 +++++++++++++++++++--------------------------
1 files changed, 37 insertions(+), 51 deletions(-)
diff --git a/tools/winapi/winapi_test b/tools/winapi/winapi_test
index 7cce9e0..58333dc 100755
--- a/tools/winapi/winapi_test
+++ b/tools/winapi/winapi_test
@@ -536,59 +536,41 @@ sub output_header($$$) {
print OUT " * Test helper macros\n";
print OUT " */\n";
print OUT "\n";
- print OUT "#ifdef FIELD_ALIGNMENT\n";
- print OUT "# define TEST_FIELD_ALIGNMENT(type, field, align) \\\n";
- print OUT " ok(_TYPE_ALIGNMENT(((type*)0)->field) == align, \\\n";
- print OUT " \"FIELD_ALIGNMENT(\" #type \", \" #field \") == %d (expected \" #align \")\\n\", \\\n";
- print OUT " (int)_TYPE_ALIGNMENT(((type*)0)->field))\n";
- print OUT "#else\n";
- print OUT "# define TEST_FIELD_ALIGNMENT(type, field, align) do { } while (0)\n";
- print OUT "#endif\n";
+ print OUT "#ifdef _WIN64\n";
print OUT "\n";
- print OUT "#define TEST_FIELD_OFFSET(type, field, offset) \\\n";
- print OUT " ok(FIELD_OFFSET(type, field) == offset, \\\n";
- print OUT " \"FIELD_OFFSET(\" #type \", \" #field \") == %ld (expected \" #offset \")\\n\", \\\n";
- print OUT " (long int)FIELD_OFFSET(type, field))\n";
+ print OUT "# define TEST_TYPE_SIZE(type, size)\n";
+ print OUT "# define TEST_TYPE_ALIGN(type, align)\n";
+ print OUT "# define TEST_TARGET_ALIGN(type, align)\n";
+ print OUT "# define TEST_FIELD_ALIGN(type, field, align)\n";
+ print OUT "# define TEST_FIELD_OFFSET(type, field, offset)\n";
print OUT "\n";
- print OUT "#ifdef _TYPE_ALIGNMENT\n";
- print OUT "#define TEST__TYPE_ALIGNMENT(type, align) \\\n";
- print OUT " ok(_TYPE_ALIGNMENT(type) == align, \"TYPE_ALIGNMENT(\" #type \") == %d (expected \" #align \")\\n\", (int)_TYPE_ALIGNMENT(type))\n";
print OUT "#else\n";
- print OUT "# define TEST__TYPE_ALIGNMENT(type, align) do { } while (0)\n";
- print OUT "#endif\n";
print OUT "\n";
- print OUT "#ifdef TYPE_ALIGNMENT\n";
- print OUT "#define TEST_TYPE_ALIGNMENT(type, align) \\\n";
- print OUT " ok(TYPE_ALIGNMENT(type) == align, \"TYPE_ALIGNMENT(\" #type \") == %d (expected \" #align \")\\n\", (int)TYPE_ALIGNMENT(type))\n";
- print OUT "#else\n";
- print OUT "# define TEST_TYPE_ALIGNMENT(type, align) do { } while (0)\n";
- print OUT "#endif\n";
+ print OUT "# define TEST_TYPE_SIZE(type, size) C_ASSERT(sizeof(type) == size);\n";
print OUT "\n";
- print OUT "#define TEST_TYPE_SIZE(type, size) \\\n";
- print OUT " ok(sizeof(type) == size, \"sizeof(\" #type \") == %d (expected \" #size \")\\n\", ((int) sizeof(type)))\n";
+ print OUT "# ifdef TYPE_ALIGNMENT\n";
+ print OUT "# define TEST_TYPE_ALIGN(type, align) C_ASSERT(TYPE_ALIGNMENT(type) == align);\n";
+ print OUT "# else\n";
+ print OUT "# define TEST_TYPE_ALIGN(type, align)\n";
+ print OUT "# endif\n";
print OUT "\n";
- print OUT "/***********************************************************************\n";
- print OUT " * Test macros\n";
- print OUT " */\n";
+ print OUT "# ifdef _TYPE_ALIGNMENT\n";
+ print OUT "# define TEST_TARGET_ALIGN(type, align) C_ASSERT(_TYPE_ALIGNMENT(*(type)0) == align);\n";
+ print OUT "# define TEST_FIELD_ALIGN(type, field, align) C_ASSERT(_TYPE_ALIGNMENT(((type*)0)->field) == align);\n";
+ print OUT "# else\n";
+ print OUT "# define TEST_TARGET_ALIGN(type, align)\n";
+ print OUT "# define TEST_FIELD_ALIGN(type, field, align)\n";
+ print OUT "# endif\n";
print OUT "\n";
- print OUT "#define TEST_FIELD(type, field, field_offset, field_size, field_align) \\\n";
- print OUT " TEST_TYPE_SIZE((((type*)0)->field), field_size); \\\n";
- print OUT " TEST_FIELD_ALIGNMENT(type, field, field_align); \\\n";
- print OUT " TEST_FIELD_OFFSET(type, field, field_offset)\n";
+ print OUT "# define TEST_FIELD_OFFSET(type, field, offset) C_ASSERT(FIELD_OFFSET(type, field) == offset);\n";
print OUT "\n";
- print OUT "#define TEST_TYPE(type, size, align) \\\n";
- print OUT " TEST_TYPE_ALIGNMENT(type, align); \\\n";
- print OUT " TEST_TYPE_SIZE(type, size)\n";
- print OUT "\n";
- print OUT "#define TEST_TYPE_POINTER(type, size, align) \\\n";
- print OUT " TEST__TYPE_ALIGNMENT(*(type)0, align); \\\n";
- print OUT " TEST_TYPE_SIZE(*(type)0, size)\n";
+ print OUT "#endif\n";
print OUT "\n";
- print OUT "#define TEST_TYPE_SIGNED(type) \\\n";
- print OUT " ok((type) -1 < 0, \"(\" #type \") -1 < 0\\n\");\n";
+ print OUT "#define TEST_TARGET_SIZE(type, size) TEST_TYPE_SIZE(*(type)0, size)\n";
+ print OUT "#define TEST_FIELD_SIZE(type, field, size) TEST_TYPE_SIZE((((type*)0)->field), size)\n";
+ print OUT "#define TEST_TYPE_SIGNED(type) C_ASSERT((type) -1 < 0);\n";
+ print OUT "#define TEST_TYPE_UNSIGNED(type) C_ASSERT((type) -1 > 0);\n";
print OUT "\n";
- print OUT "#define TEST_TYPE_UNSIGNED(type) \\\n";
- print OUT " ok((type) -1 > 0, \"(\" #type \") -1 > 0\\n\");\n";
print OUT "\n";
}
@@ -639,7 +621,8 @@ sub output_test_pack_type($$$$$$) {
}
if (!scalar(keys(%$optional_fields)) && defined($type_align) && defined($type_size)) {
- print OUT " TEST_TYPE($type_name, $type_size, $type_align);\n";
+ print OUT " TEST_TYPE_SIZE ($type_name, $type_size)\n";
+ print OUT " TEST_TYPE_ALIGN ($type_name, $type_align)\n";
}
if ($type_kind eq "float") {
@@ -688,15 +671,16 @@ sub output_test_pack_type($$$$$$) {
my $optional_fields2 = $$type_name2optional_fields{$type_name2};
if (!$optional && !scalar(keys(%$optional_fields2)) && defined($type_align2) && defined($type_size2)) {
- print OUT " TEST_TYPE_POINTER($type_name, $type_size2, $type_align2);\n";
+ print OUT " TEST_TARGET_SIZE ($type_name, $type_size2)\n";
+ print OUT " TEST_TARGET_ALIGN($type_name, $type_align2)\n";
} else {
# $output->write("$type_name: warning: type size not found\n");
}
}
} elsif ($type_kind eq "signed") {
- print OUT " TEST_TYPE_SIGNED($type_name);\n";
+ print OUT " TEST_TYPE_SIGNED($type_name)\n";
} elsif ($type_kind eq "unsigned") {
- print OUT " TEST_TYPE_UNSIGNED($type_name);\n";
+ print OUT " TEST_TYPE_UNSIGNED($type_name)\n";
}
}
@@ -731,15 +715,17 @@ sub output_test_pack_fields($$$$$$$) {
$field_offset += $offset;
if ($field_name eq "DUMMYSTRUCTNAME") {
print OUT "#ifdef NONAMELESSSTRUCT\n";
- print OUT " TEST_FIELD($type_name, $field_name, ";
- print OUT "$field_offset, $field_size, $field_align);\n";
+ print OUT " TEST_TYPE_SIZE ($type_name.$field_name, $field_size)\n";
+ print OUT " TEST_FIELD_ALIGN ($type_name, $field_name, $field_align)\n";
+ print OUT " TEST_FIELD_OFFSET($type_name, $field_name, $field_offset)\n";
print OUT "#else\n";
output_test_pack_fields(\*OUT, $type_name2type, $type_name2optional, $type_name2optional_fields,
$type_name, $$type_name2type{$field_type_name}, $field_offset);
print OUT "#endif\n";
} else {
- print OUT " TEST_FIELD($type_name, $field_name, ";
- print OUT "$field_offset, $field_size, $field_align);\n";
+ print OUT " TEST_FIELD_SIZE ($type_name, $field_name, $field_size)\n";
+ print OUT " TEST_FIELD_ALIGN ($type_name, $field_name, $field_align)\n";
+ print OUT " TEST_FIELD_OFFSET($type_name, $field_name, $field_offset)\n";
}
} else {
# $output->write("$type_name: $field_type_name: $field_name: test not generated (offset not defined)\n");
--
1.5.6.5
More information about the wine-patches
mailing list