aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test_gen.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/test_gen.c b/test_gen.c
index 7b36afc..7a559b6 100644
--- a/test_gen.c
+++ b/test_gen.c
@@ -137,8 +137,9 @@ static void unsigned_check(FILE *out, const struct fmtinfo *fi, enum endian e, u
fprintf(out, "\tCHECK_EQUAL(PRIdMAX, (uintmax_t)v[%d], UINTMAX_C(%" PRIuMAX "));\n", i, testval);
}
-static void generate_simple(FILE *out, enum fmt fmt)
+static void generate_simple(FILE *out, enum fmt fmt, int arraysize)
{
+ int realsize = arraysize == 0 ? 1 : arraysize;
struct fmtinfo *fi;
bool sign;
@@ -148,15 +149,21 @@ static void generate_simple(FILE *out, enum fmt fmt)
sign = islower(fi->fmt);
- fprintf(out, "TEST(%s, \"simple unpack %s\")\n", cname(fi->type), fi->type);
+ fprintf(out, "TEST(simple%d_%s, \"simple", arraysize, cname(fi->type));
+ if (arraysize != 0)
+ fprintf(out, " array[%d]", arraysize);
+ fprintf(out, " unpack %s\")\n", fi->type);
fprintf(out, "{\n");
- fprintf(out, "\t%s v[1] = { __LINE__ };\n", fi->type);
+ fprintf(out, "\t%s v[%d] = { ", fi->type, realsize );
+ for (int i = 0; i < realsize; i++)
+ fprintf(out, "%s__LINE__ + %d", i == 0 ? "" : ", ", i);
+ fprintf(out, " };\n");
for (size_t e = 0; e < sizeof endian / sizeof endian[0]; e++) {
for (int i = sign ? -1 : 0; i <= 1; i++)
- signed_check(out, fi, e, i, 0);
+ signed_check(out, fi, e, i, arraysize);
if (sign)
- signed_check(out, fi, e, fi->min, 0);
- unsigned_check(out, fi, e, fi->max, 0);
+ signed_check(out, fi, e, fi->min, arraysize);
+ unsigned_check(out, fi, e, fi->max, arraysize);
}
fprintf(out, "\treturn true;\n");
fprintf(out, "}\n");
@@ -166,5 +173,5 @@ int main(void)
{
FILE *out = stdout;
for (enum fmt fmt = FMT_BEGIN; fmt < FMT_END; fmt++)
- generate_simple(out, fmt);
+ generate_simple(out, fmt, 0);
}