aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhexcoder- <heiko@hexco.de>2021-06-09 21:35:16 +0200
committerhexcoder- <heiko@hexco.de>2021-06-09 21:35:16 +0200
commit706c2ac8e036ff79865c31cd818fad0388599a0e (patch)
tree87edb19d4ed0e62316beb12121755bc72ded5d2a
parenta4cb2414d5a26699f999667752d3461da20d3f82 (diff)
downloadafl++-706c2ac8e036ff79865c31cd818fad0388599a0e.tar.gz
add test cases for splitting integer comparisons
-rw-r--r--test/test-int_cases.c424
-rw-r--r--test/test-uint_cases.c217
2 files changed, 641 insertions, 0 deletions
diff --git a/test/test-int_cases.c b/test/test-int_cases.c
new file mode 100644
index 00000000..c76206c5
--- /dev/null
+++ b/test/test-int_cases.c
@@ -0,0 +1,424 @@
+/* test cases for integer comparison transformations
+ * compile with -DINT_TYPE="signed char"
+ * or -DINT_TYPE="short"
+ * or -DINT_TYPE="int"
+ * or -DINT_TYPE="long"
+ * or -DINT_TYPE="long long"
+ */
+
+#include <assert.h>
+
+int main() {
+
+ volatile INT_TYPE a, b;
+ /* different values */
+ a = -21;
+ b = -2; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 1;
+ b = 8; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 255) { /* short or bigger */
+ volatile short a, b;
+ a = 2;
+ b = 256+1; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1 - 256;
+ b = -8; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 65535) { /* int or bigger */
+ volatile int a, b;
+ a = 2;
+ b = 65536+1; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1 - 65536;
+ b = -8; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 4294967295) { /* long or bigger */
+ volatile long a, b;
+ a = 2;
+ b = 4294967296+1; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1 - 4294967296;
+ b = -8; /* signs equal */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ }
+ }
+ }
+
+ a = -1;
+ b = 1; /* signs differ */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = 0; /* signs differ */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -2;
+ b = 8; /* signs differ */
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -2; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 8;
+ b = 1; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 255) {
+ volatile short a, b;
+ a = 1 + 256;
+ b = 3; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -256; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 65535) {
+ volatile int a, b;
+ a = 1 + 65536;
+ b = 3; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -65536; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 4294967295) {
+ volatile long a, b;
+ a = 1 + 4294967296;
+ b = 3; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -4294967296; /* signs equal */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+ }
+ }
+ }
+
+ a = 1;
+ b = -1; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 0;
+ b = -1; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 8;
+ b = -2; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 1;
+ b = -2; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 255) {
+ volatile short a, b;
+ a = 1 + 256;
+ b = -2; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -2 - 256; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 65535) {
+ volatile int a, b;
+ a = 1 + 65536;
+ b = -2; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -2 - 65536; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 4294967295) {
+ volatile long a, b;
+ a = 1 + 4294967296;
+ b = -2; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = -1;
+ b = -2 - 4294967296; /* signs differ */
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ }
+ }
+ }
+
+ /* equal values */
+ a = 0;
+ b = 0;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ a = -0;
+ b = 0;
+ 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 = 5;
+ b = 5;
+ 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 = -5;
+ b = -5;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 255) {
+ volatile short a, b;
+ a = 1 + 256;
+ b = 1 + 256;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ a = -2 - 256;
+ b = -2 - 256;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 65535) {
+ volatile int a, b;
+ a = 1 + 65536;
+ b = 1 + 65536;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ a = -2 - 65536;
+ b = -2 - 65536;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ if ((unsigned)(INT_TYPE)(~0) > 4294967295) {
+ volatile long a, b;
+ a = 1 + 4294967296;
+ b = 1 + 4294967296;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ a = -2 - 4294967296;
+ b = -2 - 4294967296;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ }
+ }
+ }
+}
+
diff --git a/test/test-uint_cases.c b/test/test-uint_cases.c
new file mode 100644
index 00000000..8496cffe
--- /dev/null
+++ b/test/test-uint_cases.c
@@ -0,0 +1,217 @@
+/*
+ * compile with -DUINT_TYPE="unsigned char"
+ * or -DUINT_TYPE="unsigned short"
+ * or -DUINT_TYPE="unsigned int"
+ * or -DUINT_TYPE="unsigned long"
+ * or -DUINT_TYPE="unsigned long long"
+ */
+
+#include <assert.h>
+
+int main() {
+
+ volatile UINT_TYPE a, b;
+
+ a = 1;
+ b = 8;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((UINT_TYPE)(~0) > 255) {
+ volatile unsigned short a, b;
+ a = 256+2;
+ b = 256+21;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 21;
+ b = 256+1;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((UINT_TYPE)(~0) > 65535) {
+ volatile unsigned int a, b;
+ a = 65536+2;
+ b = 65536+21;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 21;
+ b = 65536+1;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+ }
+
+ if ((UINT_TYPE)(~0) > 4294967295) {
+ volatile unsigned long a, b;
+ a = 4294967296+2;
+ b = 4294967296+21;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 21;
+ b = 4294967296+1;
+ assert((a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert(!(a >= b));
+ assert((a != b));
+ assert(!(a == b));
+ }
+ }
+
+ a = 8;
+ b = 1;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((UINT_TYPE)(~0) > 255) {
+ volatile unsigned short a, b;
+ a = 256+2;
+ b = 256+1;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 256+2;
+ b = 6;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((UINT_TYPE)(~0) > 65535) {
+ volatile unsigned int a, b;
+ a = 65536+2;
+ b = 65536+1;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 65536+2;
+ b = 6;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ if ((UINT_TYPE)(~0) > 4294967295) {
+ volatile unsigned long a, b;
+ a = 4294967296+2;
+ b = 4294967296+1;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ a = 4294967296+2;
+ b = 6;
+ assert((a > b));
+ assert((a >= b));
+ assert(!(a < b));
+ assert(!(a <= b));
+ assert((a != b));
+ assert(!(a == b));
+
+ }
+ }
+ }
+
+
+ a = 0;
+ b = 0;
+ 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));
+
+ if ((UINT_TYPE)(~0) > 255) {
+ volatile unsigned short a, b;
+ a = 256+5;
+ b = 256+5;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ if ((UINT_TYPE)(~0) > 65535) {
+ volatile unsigned int a, b;
+ a = 65536+5;
+ b = 65536+5;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+
+ if ((UINT_TYPE)(~0) > 4294967295) {
+ volatile unsigned long a, b;
+ a = 4294967296+5;
+ b = 4294967296+5;
+ assert(!(a < b));
+ assert((a <= b));
+ assert(!(a > b));
+ assert((a >= b));
+ assert(!(a != b));
+ assert((a == b));
+ }
+ }
+
+ }
+
+}
+