quakeforge/tools/qfcc/test/compound.r
Bill Currie b6439e8dc1 [qfcc] Support compound init in assignment and params
foo({...}) and bar = {...}
2020-03-11 19:48:25 +09:00

72 lines
1.5 KiB
R

#include "test-harness.h"
typedef struct Point {
int x;
int y;
} Point;
typedef struct Size {
int width;
int height;
} Size;
typedef struct Rect {
Point origin;
Size size;
} Rect;
int test_simple_param (Point p, int x, int y)
{
int ret = !(p.x == x && p.y == y);
if (ret) {
printf ("simple param: {%d, %d} != {%d, %d}\n", p.x, p.y, x, y);
}
return ret;
}
int test_nested_param (Rect r, int x, int y, int w, int h)
{
int ret = !(r.origin.x == x && r.origin.y == y
&& r.size.width == w && r.size.height == h);
if (ret) {
printf ("nested param: {{%d, %d}, {%d, %d}} != ",
r.origin.x, r.origin.y, r.size.width, r.size.height);
printf ("{{%d, %d}, {%d, %d}}\n", x, y, w, h);
}
return ret;
}
int test_simple_assign (int x, int y)
{
Point p;
p = { x, y };
int ret = !(p.x == x && p.y == y);
if (ret) {
printf ("simple assign: {%d, %d} != {%d, %d}\n", p.x, p.y, x, y);
}
return ret;
}
int test_nested_assign (int x, int y, int w, int h)
{
Rect r;
r = {{x, y}, {w, h}};
int ret = !(r.origin.x == x && r.origin.y == y
&& r.size.width == w && r.size.height == h);
if (ret) {
printf ("nested assign: {{%d, %d}, {%d, %d}} != ",
r.origin.x, r.origin.y, r.size.width, r.size.height);
printf ("{{%d, %d}, {%d, %d}}\n", x, y, w, h);
}
return ret;
}
int main (void)
{
int ret = 0;
ret |= test_simple_param ({1, 2}, 1, 2);
ret |= test_nested_param ({{1, 2}, {3, 4}}, 1, 2, 3, 4);
ret |= test_simple_assign (1, 2);
ret |= test_nested_assign (1, 2, 3, 4);
return ret;
}