diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2025-10-19 13:53:57 +0200 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2025-10-19 13:54:04 +0200 |
| commit | 9b33e6879b79905adfa415eba911d7e8b540429f (patch) | |
| tree | c0ca248df3cb396778ae9ed03b03ba306457b4a6 /test | |
| parent | 197fd727099d264cbf7c746f752f762dd3618814 (diff) | |
Add tests
Diffstat (limited to 'test')
| -rw-r--r-- | test/construction.c | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/test/construction.c b/test/construction.c new file mode 100644 index 0000000..10a377c --- /dev/null +++ b/test/construction.c @@ -0,0 +1,133 @@ +#include "cad/construction.h" + +int main(int argc, char *argv[]) { + { + struct drawing drawing = {}; + + struct element* origin = insert_cmd(&drawing, (struct command){ + .op = CMD_ORIGIN, + .hidden = true, + .result.type = ETYPE_POINT, + }); + + struct element *xaxis = insert_cmd(&drawing, (struct command){ + .op = CMD_LINE_X, + .hidden = true, + .result.type = ETYPE_LINE, + }); + + struct element* r1 = insert_cmd(&drawing, (struct command){ + .op = CMD_VALUE_INPUT, + .hidden = true, + .result.type = ETYPE_VALUE, + }); + + struct element *c1 = insert_cmd(&drawing, (struct command){ + .op = CMD_CIRCLE_CENTER_RADIUS, + .hidden = true, + .result.type = ETYPE_CIRCLE, + .arg1 = origin, + .arg2 = r1, + }); + + struct element *p2 = insert_cmd(&drawing, (struct command){ + .op = CMD_POINT_CIRCLE_LINE, + .hidden = true, + .result.type = ETYPE_POINT, + .arg1 = c1, + .arg2 = xaxis, + }); + + + struct element* r2 = insert_cmd(&drawing, (struct command){ + .op = CMD_VALUE_INPUT, + .hidden = true, + .result.type = ETYPE_VALUE, + }); + + struct element *c2 = insert_cmd(&drawing, (struct command){ + .op = CMD_CIRCLE_CENTER_RADIUS, + .hidden = true, + .result.type = ETYPE_CIRCLE, + .arg1 = p2, + .arg2 = r2, + }); + + struct element *p3 = insert_cmd(&drawing, (struct command){ + .op = CMD_POINT_CIRCLE_CIRCLE, + .hidden = true, + .result.type = ETYPE_POINT, + .arg1 = c1, + .arg2 = c2, + }); + + execute_drawing(&drawing, (double[]){1, 1}); + + assert(p3->point.pos[0] == 0.5 && fabs(p3->point.pos[1] - 0.866025) < 0.001); + } + + { + struct drawing drawing = {}; + + struct element* origin = insert_cmd(&drawing, (struct command){ + .op = CMD_ORIGIN, + .hidden = true, + .result.type = ETYPE_POINT, + }); + + struct element *xaxis = insert_cmd(&drawing, (struct command){ + .op = CMD_LINE_X, + .hidden = true, + .result.type = ETYPE_LINE, + }); + + struct element* r1 = insert_cmd(&drawing, (struct command){ + .op = CMD_VALUE_INPUT, + .hidden = true, + .result.type = ETYPE_VALUE, + }); + + struct element *c1 = insert_cmd(&drawing, (struct command){ + .op = CMD_CIRCLE_CENTER_RADIUS, + .hidden = true, + .result.type = ETYPE_CIRCLE, + .arg1 = origin, + .arg2 = r1, + }); + + struct element *p2 = insert_cmd(&drawing, (struct command){ + .op = CMD_POINT_CIRCLE_LINE, + .hidden = true, + .result.type = ETYPE_POINT, + .arg1 = c1, + .arg2 = xaxis, + }); + + + struct element* r2 = insert_cmd(&drawing, (struct command){ + .op = CMD_VALUE_INPUT, + .hidden = true, + .result.type = ETYPE_VALUE, + }); + + struct element *c2 = insert_cmd(&drawing, (struct command){ + .op = CMD_CIRCLE_CENTER_RADIUS, + .hidden = true, + .result.type = ETYPE_CIRCLE, + .arg1 = p2, + .arg2 = r2, + }); + + struct element *p3 = insert_cmd(&drawing, (struct command){ + .op = CMD_POINT_CIRCLE_CIRCLE, + .hidden = true, + .result.type = ETYPE_POINT, + .arg1 = c2, + .arg2 = c1, + }); + + execute_drawing(&drawing, (double[]){1, 1}); + + assert(p3->point.pos[0] == 0.5 && fabs(p3->point.pos[1] - 0.866025) < 0.001); + } +} |
