MODULE test_rect ; (* m2SDL3 unit test: pure-Modula-2 SDL3Rect helpers, no SDL needed. *) FROM SDL3Rect IMPORT SDLRect, SDLFRect, MakePoint, MakeFPoint, MakeRect, MakeFRect, PointEquals, FPointEquals, RectEquals, FRectEquals, RectEmpty, FRectEmpty; FROM libc IMPORT printf; VAR r: SDLRect; fr: SDLFRect; BEGIN IF NOT PointEquals(MakePoint(1, 2), MakePoint(1, 2)) THEN printf("FAIL test_rect: PointEquals\n"); HALT(1) END; IF PointEquals(MakePoint(1, 2), MakePoint(3, 4)) THEN printf("FAIL test_rect: PointEquals negative\n"); HALT(1) END; IF NOT RectEquals(MakeRect(0, 0, 10, 20), MakeRect(0, 0, 10, 20)) THEN printf("FAIL test_rect: RectEquals\n"); HALT(1) END; r := MakeRect(0, 0, 10, 20); IF RectEmpty(r) THEN printf("FAIL test_rect: RectEmpty false positive\n"); HALT(1) END; r := MakeRect(0, 0, 0, 20); IF NOT RectEmpty(r) THEN printf("FAIL test_rect: RectEmpty zero width\n"); HALT(1) END; IF NOT FPointEquals(MakeFPoint(VAL(SHORTREAL, 1.5), VAL(SHORTREAL, 2.5)), MakeFPoint(VAL(SHORTREAL, 1.5), VAL(SHORTREAL, 2.5))) THEN printf("FAIL test_rect: FPointEquals\n"); HALT(1) END; IF NOT FRectEquals(MakeFRect(VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 10.0), VAL(SHORTREAL, 20.0)), MakeFRect(VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 10.0), VAL(SHORTREAL, 20.0))) THEN printf("FAIL test_rect: FRectEquals\n"); HALT(1) END; fr := MakeFRect(VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 0.0), VAL(SHORTREAL, 5.0)); IF NOT FRectEmpty(fr) THEN printf("FAIL test_rect: FRectEmpty zero width\n"); HALT(1) END; printf("PASS test_rect\n") END test_rect.