#include "test-harness.h" typedef struct foo { int x; float y; } foo; int x, y; int z = 42; foo bar, baz; foo foo_init = { 5, 6.25 }; int test_simple_global (void) { int ret = 0; x = y = z; if (x != z || y != z) { printf ("test_simple_global: x=%d y=%d z=%d\n", x, y, z); ret |= 1; } return ret; } int test_struct_global (void) { int ret = 0; bar = baz = foo_init; if (bar.x != foo_init.x || bar.y != foo_init.y) { printf ("test_struct_global: bar={%d %g} foo_init={%d %g}\n", bar.x, bar.y, foo_init.x, foo_init.y); ret |= 1; } if (baz.x != foo_init.x || baz.y != foo_init.y) { printf ("test_struct_global: baz={%d %g} foo_init={%d %g}\n", baz.x, baz.y, foo_init.x, foo_init.y); ret |= 1; } bar = baz = nil; if (bar.x || baz.x || bar.y || baz.y) { printf ("test_struct_global: bar={%d %g} baz={%d %g}\n", bar.x, bar.y, baz.x, baz.y); ret |= 1; } return ret; } int test_simple_pointer (int *x, int *y) { int ret = 0; *x = *y = z; if (*x != z || *y != z) { printf ("test_simple_pointer: *x=%d *y=%d z=%d\n", *x, *y, z); ret |= 1; } return ret; } int test_struct_pointer (foo *bar, foo *baz) { int ret = 0; *bar = *baz = foo_init; if (bar.x != foo_init.x || bar.y != foo_init.y) { printf ("test_struct_pointer: bar={%d %g} foo_init={%d %g}\n", bar.x, bar.y, foo_init.x, foo_init.y); ret |= 1; } if (baz.x != foo_init.x || baz.y != foo_init.y) { printf ("test_struct_pointer: baz={%d %g} foo_init={%d %g}\n", baz.x, baz.y, foo_init.x, foo_init.y); ret |= 1; } *bar = foo_init; *baz = foo_init; *bar = *baz = nil; if (bar.x || baz.x || bar.y || baz.y) { printf ("test_struct: bar={%d %g} baz={%d %g}\n", bar.x, bar.y, baz.x, baz.y); ret |= 1; } return ret; } int main () { int ret = 0; ret |= test_simple_global (); ret |= test_struct_global (); x = 0; y = 0; ret |= test_simple_pointer (&x, &y); ret |= test_struct_pointer (&bar, &baz); return ret; }