From 0448038c680f2631f71fa609c065ad4a24ae1758 Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Wed, 16 Aug 2023 15:58:33 +0200 Subject: [PATCH] Added test. --- resources/testfragments/casting.c3 | 48 ----- resources/testfragments/comparisons.c3 | 178 ------------------ .../regression/signed_unsigned_compare.c3 | 157 +++++++++++++++ 3 files changed, 157 insertions(+), 226 deletions(-) delete mode 100644 resources/testfragments/casting.c3 delete mode 100644 resources/testfragments/comparisons.c3 create mode 100644 test/unit/regression/signed_unsigned_compare.c3 diff --git a/resources/testfragments/casting.c3 b/resources/testfragments/casting.c3 deleted file mode 100644 index 99dd21617..000000000 --- a/resources/testfragments/casting.c3 +++ /dev/null @@ -1,48 +0,0 @@ -struct Pixmap -{ - char *p; - int x; - int y; - int bpp; -} - -fn void readpgm(char* name, Pixmap* p) -{ - /* ... */ - pnm_readpaminit(fp, &inpam); - p.x = inpam.width; - p.y = inpam.height; - if (!(p.p = malloc(@safe(p.x + p.y)))) - { - @f1("Error at malloc"); - } - for (int i = 0; i < inpam.height; i++) - { - pnm_readpamrow(&inpam, tuplerow) - { - for (int j = 0; j < inpam.width; j++) - { - p.p[@nowrap(i * inpam.width + j)] = sample; - } - }; - } -} - -fn void getComm(uint len, char* src) -{ - uint size; - size = len - 2; - char* comm = malloc(size + 1); - mem::copy(comm, src, size); -} - -fn uint* decode_fh(uint* p, SvcFh* fhp) -{ - int size; - fh_init(fhp, NFS3_FHSIZE); - size = ntohl(*p++); - if (size > NFS3_FHSIZE) return NULL; - mem::copy(&fhp.fh_handle.fh_base, p, size); - fhp.fh_handle.fh_size = size; - return p + XDR_QUADLEN(size); -} diff --git a/resources/testfragments/comparisons.c3 b/resources/testfragments/comparisons.c3 deleted file mode 100644 index a32042705..000000000 --- a/resources/testfragments/comparisons.c3 +++ /dev/null @@ -1,178 +0,0 @@ -module comparisons; - -fn void test_signed() -{ - int a = 0; - int b = 1; - - bool ab_gt = a > b; - bool ab_ge = a >= b; - bool ab_le = a <= b; - bool ab_lt = a < b; - bool ab_ne = a != b; - bool ab_eq = a == b; - -} - -fn void test_unsigned() -{ - uint a = 0; - uint b = 1; - - bool ab_gt = a > b; - bool ab_ge = a >= b; - bool ab_le = a <= b; - bool ab_lt = a < b; - bool ab_ne = a != b; - bool ab_eq = a == b; - -} - -extern fn void printf(char *s); - -fn void test_signedunsigned() -{ - ichar a = 0 - 1; - char b = (char)(a); - - printf("Signed-unsigned -1 0xFF \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 1; - b = 1; - - printf("Signed-unsigned 1 1 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 1; - b = 4; - - printf("Signed-unsigned 1 4 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 4; - b = 1; - - printf("Signed-unsigned 4 1 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 4; - b = 129; - - printf("Signed-unsigned 4 129 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 0 - 4; - b = 129; - - printf("Signed-unsigned -4 129 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - -} - -fn void test_unsignedsigned() -{ - int b = -1; - uint a = (uint)(b); - - printf("Unsigned-signed 0xFFFFFFFF -1 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 1; - b = 1; - - printf("Unsigned-signed 1 1 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 4; - b = 1; - - printf("Unsigned-signed 4 1 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 1; - b = 4; - - printf("Unsigned-signed 1 4 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - a = 0x8000_0001; - b = 4; - - printf("Unsigned-signed 0x8000_0001 4 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - - b = 0 - 4; - a = 0x8000_0001; - - printf("Unsigned-signed 0x8000_0001 -4 \n"); - if (a > b) printf("a > b\n"); - if (a >= b) printf("a >= b\n"); - if (a < b) printf("a < b\n"); - if (a <= b) printf("a <= b\n"); - if (a != b) printf("a != b\n"); - if (a == b) printf("a == b\n"); - -} - -fn void main() -{ - test_signedunsigned(); - test_unsignedsigned(); - printf("-- Done ---\n"); -} \ No newline at end of file diff --git a/test/unit/regression/signed_unsigned_compare.c3 b/test/unit/regression/signed_unsigned_compare.c3 new file mode 100644 index 000000000..85f73a905 --- /dev/null +++ b/test/unit/regression/signed_unsigned_compare.c3 @@ -0,0 +1,157 @@ +module signed_unsigned_comparisons @test; + +fn void test_signed() +{ + int a = 0; + int b = 1; + + bool ab_gt = a > b; + bool ab_ge = a >= b; + bool ab_le = a <= b; + bool ab_lt = a < b; + bool ab_ne = a != b; + bool ab_eq = a == b; + +} + +fn void test_unsigned() +{ + uint a = 0; + uint b = 1; + + bool ab_gt = a > b; + bool ab_ge = a >= b; + bool ab_le = a <= b; + bool ab_lt = a < b; + bool ab_ne = a != b; + bool ab_eq = a == b; + +} + +fn void test_signedunsigned() +{ + ichar a = 0 - 1; + char b = (char)(a); + + assert(!(a > b)); + assert(!(a >= b)); + assert(a < b); + assert(a <= b); + assert(a != b); + assert(!(a == b)); + + a = 1; + b = 1; + + assert(!(a > b)); + assert(a >= b); + assert(!(a < b)); + assert(a <= b); + assert(!(a != b)); + assert(a == b); + + a = 1; + b = 4; + + assert(!(a > b)); + assert(!(a >= b)); + assert(a < b); + assert(a <= b); + assert(a != b); + assert(!(a == b)); + + a = 4; + b = 1; + + assert(a > b); + assert(a >= b); + assert(!(a < b)); + assert(!(a <= b)); + assert(a != b); + assert(!(a == b)); + + a = 4; + b = 129; + + assert(!(a > b)); + assert(!(a >= b)); + assert(a < b); + assert(a <= b); + assert(a != b); + assert(!(a == b)); + + a = 0 - 4; + b = 129; + + assert(!(a > b)); + assert(!(a >= b)); + assert(a < b); + assert(a <= b); + assert(a != b); + assert(!(a == b)); + +} + +fn void test_unsignedsigned() +{ + int b = -1; + uint a = (uint)(b); + + assert(a > b); + assert(a >= b); + assert(!(a < b)); + assert(!(a <= b)); + assert(a != b); + assert(!(a == b)); + + a = 1; + b = 1; + + assert(!(a > b)); + assert(a >= b); + assert(!(a < b)); + assert(a <= b); + assert(!(a != b)); + assert(a == b); + + a = 4; + b = 1; + + assert(a > b); + assert(a >= b); + assert(!(a < b)); + assert(!(a <= b)); + assert(a != b); + assert(!(a == b)); + + a = 1; + b = 4; + + assert(!(a > b)); + assert(!(a >= b)); + assert(a < b); + assert(a <= b); + assert(a != b); + assert(!(a == b)); + + a = 0x8000_0001; + b = 4; + + assert(a > b); + assert(a >= b); + assert(!(a < b)); + assert(!(a <= b)); + assert(a != b); + assert(!(a == b)); + + b = 0 - 4; + a = 0x8000_0001; + + assert(a > b); + assert(a >= b); + assert(!(a < b)); + assert(!(a <= b)); + assert(a != b); + assert(!(a == b)); + +}