tests: VC6 compatible; plot_raster_dotty: avoid float rounding difference

This commit is contained in:
gitlost 2021-06-23 15:00:49 +01:00
parent e5115bad07
commit 70801d8932
97 changed files with 3354 additions and 1893 deletions

View file

@ -51,9 +51,6 @@ int clz_u64(uint64_t x);
static void test_clz_u64(int index) {
testStart("");
int ret;
struct item {
uint64_t s;
int ret;
@ -188,8 +185,11 @@ static void test_clz_u64(int index) {
/*125*/ { 0xFFFFFFFFFFFFFFFF, 0 },
};
int data_size = ARRAY_SIZE(data);
int i, ret;
for (int i = 0; i < data_size; i++) {
testStart("test_clz_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
@ -202,8 +202,6 @@ static void test_clz_u64(int index) {
static void test_load(int index) {
testStart("");
struct item {
large_int t;
large_int s;
@ -217,19 +215,22 @@ static void test_load(int index) {
/* 3*/ { LI(1, 1), LI(2, 3), LI(2, 3) },
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_load");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_load(&data[i].t, &data[i].s);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -238,8 +239,6 @@ static void test_load(int index) {
static void test_load_str_u64(int index) {
testStart("");
struct item {
large_int t;
const char *s;
@ -257,19 +256,22 @@ static void test_load_str_u64(int index) {
/* 6*/ { LI(2, 2), "123A1X", -1, LI(123, 0) }, // Only reads decimal
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_load_str_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_load_str_u64(&data[i].t, (unsigned char *) data[i].s, data[i].length == -1 ? (int) strlen(data[i].s) : data[i].length);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -278,8 +280,6 @@ static void test_load_str_u64(int index) {
static void test_add_u64(int index) {
testStart("");
struct item {
large_int t;
uint64_t s;
@ -300,19 +300,22 @@ static void test_add_u64(int index) {
/* 10*/ { LI(0x0000000000000001, 0xFFFFFFFFFFFFFFFF), 0xFFFFFFFFFFFFFFFF, LI(0, 0) }, // Overflow
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_add_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_add_u64(&data[i].t, data[i].s);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -321,8 +324,6 @@ static void test_add_u64(int index) {
static void test_sub_u64(int index) {
testStart("");
struct item {
large_int t;
uint64_t s;
@ -343,19 +344,22 @@ static void test_sub_u64(int index) {
/* 10*/ { LI(0, 0), 1, LI(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF) },
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_sub_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_sub_u64(&data[i].t, data[i].s);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -364,8 +368,6 @@ static void test_sub_u64(int index) {
static void test_mul_u64(int index) {
testStart("");
struct item {
large_int t;
uint64_t s;
@ -399,19 +401,22 @@ static void test_mul_u64(int index) {
/* 23*/ { LI(0xFFFFFFFFFFFFFFFF, 0), 0xFFFFFFFFFFFFFFFF, LI(1, 0xFFFFFFFFFFFFFFFE) },
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_mul_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_mul_u64(&data[i].t, data[i].s);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -420,8 +425,6 @@ static void test_mul_u64(int index) {
static void test_div_u64(int index) {
testStart("");
uint64_t r;
struct item {
large_int t;
@ -523,21 +526,24 @@ static void test_div_u64(int index) {
/* 89*/ { LI(0x4ABC16A2E5C00736, 0x16907B2A2), 1365, 1, LI(0xD93B96FDAE65FA61, 0x43B5AC) },
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_div_u64");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
r = large_div_u64(&data[i].t, data[i].s);
assert_equal(r, data[i].expected_r, "i:%d r %" LX_FMT "u (0x%" LX_FMT "X) != expected_r %" LX_FMT "u (0x%" LX_FMT "X)\n",
assert_equalu64(r, data[i].expected_r, "i:%d r %" LX_FMT "u (0x%" LX_FMT "X) != expected_r %" LX_FMT "u (0x%" LX_FMT "X)\n",
i, r, r, data[i].expected_r, data[i].expected_r);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -546,8 +552,6 @@ static void test_div_u64(int index) {
static void test_unset_bit(int index) {
testStart("");
struct item {
large_int t;
int s;
@ -688,19 +692,22 @@ static void test_unset_bit(int index) {
/*130*/ { LI(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF), 128, LI(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF) },
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char expected_dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_unset_bit");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
large_unset_bit(&data[i].t, data[i].s);
assert_equal(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.lo, data[i].expected.lo, "i:%d lo 0x%" LX_FMT "X (%s) != expected lo 0x%" LX_FMT "X (%s)\n",
i, data[i].t.lo, large_dump(&data[i].t, t_dump), data[i].expected.lo, large_dump(&data[i].expected, expected_dump));
assert_equal(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
assert_equalu64(data[i].t.hi, data[i].expected.hi, "i:%d hi 0x%" LX_FMT "X (%s) != expected hi 0x%" LX_FMT "X (%s)\n",
i, data[i].t.hi, large_dump(&data[i].t, t_dump), data[i].expected.hi, large_dump(&data[i].expected, expected_dump));
}
@ -709,8 +716,6 @@ static void test_unset_bit(int index) {
static void test_uint_array(int index) {
testStart("");
struct item {
large_int t;
int size;
@ -754,6 +759,7 @@ static void test_uint_array(int index) {
/* 32*/ { LI(0xFFFFFFFFFFFFFFFF, 0xEFFFFFFFFFFFFFFF), 127, 1, { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } }, // Truncated
};
int data_size = ARRAY_SIZE(data);
int i;
char t_dump[35];
char uint_dump[130 * 17 + 1];
@ -765,7 +771,9 @@ static void test_uint_array(int index) {
unsigned char uchar_array[130];
unsigned char uchar_expected_array[130];
for (int i = 0; i < data_size; i++) {
testStart("test_uint_array");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;
@ -778,8 +786,9 @@ static void test_uint_array(int index) {
testUtilUIntArrayDump(data[i].expected, data[i].size, uint_expected_dump, sizeof(uint_expected_dump)));
if (data[i].bits <= 8) {
int j;
memset(uchar_array, 0, sizeof(uchar_array));
for (int j = 0; j < data[i].size; j++) {
for (j = 0; j < data[i].size; j++) {
uchar_expected_array[j] = data[i].expected[j];
}
@ -796,8 +805,6 @@ static void test_uint_array(int index) {
static void test_dump(int index) {
testStart("");
struct item {
large_int t;
char *expected;
@ -851,10 +858,13 @@ static void test_dump(int index) {
/* 44*/ { LI(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF), "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" },
};
int data_size = ARRAY_SIZE(data);
int i;
char dump[35];
for (int i = 0; i < data_size; i++) {
testStart("test_dump");
for (i = 0; i < data_size; i++) {
if (index != -1 && i != index) continue;