aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common.h91
-rw-r--r--libfonts_calculate_subpixel_order.c14
-rw-r--r--libfonts_parse_aa__.c46
-rw-r--r--libfonts_parse_order__.c99
-rw-r--r--libfonts_parse_uint32__.c38
5 files changed, 184 insertions, 104 deletions
diff --git a/common.h b/common.h
index 0759f5c..fe0d5ad 100644
--- a/common.h
+++ b/common.h
@@ -31,6 +31,97 @@
X(11, "v-coloured-text-aa", vertical_colour_text_antialiasing, LIBFONTS_ANTIALIASING_GREYSCALE, libfonts_parse_aa__) _\
X(12, "d-coloured-text-aa", diagonal_colour_text_antialiasing, LIBFONTS_ANTIALIASING_GREYSCALE, libfonts_parse_aa__)
+#define LIST_ANTIALIASINGS(X, _)\
+ X(LIBFONTS_ANTIALIASING_UNSPECIFIED, "unspecified") _\
+ X(LIBFONTS_ANTIALIASING_NONE, "none") _\
+ X(LIBFONTS_ANTIALIASING_NONE, "aliased") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE, "greyscale") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE, "grayscale") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE, "grey") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE, "gray") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE, "antialiased") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "greyscale!") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "grayscale!") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "grey!") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "gray!") _\
+ X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "antialiased!") _\
+ X(LIBFONTS_ANTIALIASING_SUBPIXEL, "subpixel") _\
+ X(LIBFONTS_ANTIALIASING_SUBPIXEL, "glitter") _\
+ X(LIBFONTS_ANTIALIASING_SUBPIXEL_FORCED, "subpixel!") _\
+ X(LIBFONTS_ANTIALIASING_SUBPIXEL_FORCED, "glitter!")
+
+#define LIST_SUBPIXEL_ORDERS(X, _)\
+ X(LIBFONTS_SUBPIXEL_ORDER_UNKNOWN, "unknown") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_NONRGB, "non-rgb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_NONLINEAR, "non-linear") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_OTHER, "other") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RGB, "rgb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_R_G_B, "r:g:b") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_R_G_B, "vrgb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BGR, "bgr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_B_G_R, "b:g:r") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_B_G_R, "vbgr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GBR, "gbr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_G_B_R, "g:b:r") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_G_B_R, "vgbr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RBG, "rbg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_R_B_G, "r:b:g") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_R_B_G, "vrbg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BRG, "brg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_B_R_G, "b:r:g") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_B_R_G, "vbrg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GRB, "grb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_G_R_B, "g:r:b") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_G_R_B, "vgrb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RR_GB, "rr:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GR_BR, "gr:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BG_RR, "bg:rr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RB_RG, "rb:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RR_BG, "rr:bg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BR_GR, "br:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GB_RR, "gb:rr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RG_RB, "rg:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GG_RB, "gg:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RG_BG, "rg:bg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BR_GG, "br:gg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GB_GR, "gb:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GG_BR, "gg:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BG_RG, "bg:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RB_GG, "rb:gg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GR_GB, "gr:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BB_RG, "bb:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RB_GB, "rb:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GR_BB, "gr:bb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BG_BR, "bg:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BB_GR, "bb:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_GB_RB, "gb:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_RG_BB, "rg:bb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BR_BG, "br:bg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RR_GB, "balanced rr:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_BR, "balanced gr:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_RR, "balanced bg:rr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_RG, "balanced rb:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RR_BG, "balanced rr:bg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_GR, "balanced br:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_RR, "balanced gb:rr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_RB, "balanced rg:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GG_RB, "balanced gg:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_BG, "balanced rg:bg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_GG, "balanced br:gg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_GR, "balanced gb:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GG_BR, "balanced gg:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_RG, "balanced bg:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_GG, "balanced rb:gg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_GB, "balanced gr:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BB_RG, "balanced bb:rg") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_GB, "balanced rb:gb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_BB, "balanced gr:bb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_BR, "balanced bg:br") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BB_GR, "balanced bb:gr") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_RB, "balanced gb:rb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_BB, "balanced rg:bb") _\
+ X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_BG, "balanced br:bg")
+
static inline void
transform(double *x_out, double *y_out, double x, double y, const struct libfonts_transformation *transformation)
diff --git a/libfonts_calculate_subpixel_order.c b/libfonts_calculate_subpixel_order.c
index 5727fc9..d674be0 100644
--- a/libfonts_calculate_subpixel_order.c
+++ b/libfonts_calculate_subpixel_order.c
@@ -173,22 +173,22 @@ test(int xtrans, int ytrans, int zscale, int xscale, int yscale)
do {\
FLIP_(A, B);\
FLIP_(B, A);\
- } while(0)
+ } while (0)
#define FLOP(A, B)\
do {\
FLOP_(A, B);\
FLOP_(B, A);\
- } while(0)
+ } while (0)
#define TRANSPOSE(A, B)\
do {\
TRANSPOSE_(A, B);\
TRANSPOSE_(B, A);\
- } while(0)
+ } while (0)
#define ANTITRANSPOSE(A, B)\
do {\
ANTITRANSPOSE_(A, B);\
ANTITRANSPOSE_(B, A);\
- } while(0)
+ } while (0)
#define NONLINEAR(IN) NONLINEAR_(IN, NONLINEAR)
#define UNKNOWN(IN) UNKNOWN_(IN, UNKNOWN)
@@ -201,17 +201,17 @@ test(int xtrans, int ytrans, int zscale, int xscale, int yscale)
do {\
M(A, B);\
M(BALANCED_##A, BALANCED_##B);\
- } while(0)
+ } while (0)
#define NONLINEARX(A)\
do {\
NONLINEAR(A);\
NONLINEAR(BALANCED_##A);\
- } while(0)
+ } while (0)
#define UNKNOWNX(A)\
do {\
UNKNOWN(A);\
UNKNOWN(BALANCED_##A);\
- } while(0)
+ } while (0)
struct libfonts_transformation asis_matrix = {.m = {
{+xscale, 0, xtrans},
diff --git a/libfonts_parse_aa__.c b/libfonts_parse_aa__.c
index 5946b1c..0ed9a3d 100644
--- a/libfonts_parse_aa__.c
+++ b/libfonts_parse_aa__.c
@@ -3,25 +3,6 @@
#ifndef TEST
-#define LIST_ANTIALIASINGS(X)\
- X(LIBFONTS_ANTIALIASING_UNSPECIFIED, "unspecified")\
- X(LIBFONTS_ANTIALIASING_NONE, "none")\
- X(LIBFONTS_ANTIALIASING_NONE, "aliased")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE, "greyscale")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE, "grayscale")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE, "grey")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE, "gray")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE, "antialiased")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "greyscale!")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "grayscale!")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "grey!")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "gray!")\
- X(LIBFONTS_ANTIALIASING_GREYSCALE_FORCED, "antialiased!")\
- X(LIBFONTS_ANTIALIASING_SUBPIXEL, "subpixel")\
- X(LIBFONTS_ANTIALIASING_SUBPIXEL, "glitter")\
- X(LIBFONTS_ANTIALIASING_SUBPIXEL_FORCED, "subpixel!")\
- X(LIBFONTS_ANTIALIASING_SUBPIXEL_FORCED, "glitter!")
-
int
libfonts_parse_aa__(enum libfonts_antialiasing *outp, const char *value)
{
@@ -29,7 +10,7 @@ libfonts_parse_aa__(enum libfonts_antialiasing *outp, const char *value)
if (!strcasecmp(value, S)) {\
*outp = C;\
} else
- LIST_ANTIALIASINGS(X) {
+ LIST_ANTIALIASINGS(X,) {
return 0;
}
#undef X
@@ -44,7 +25,30 @@ libfonts_parse_aa__(enum libfonts_antialiasing *outp, const char *value)
int
main(void)
{
- return 0; /* TODO add test */
+ enum libfonts_antialiasing res;
+ char buf[1024];
+ size_t i;
+
+#define X(C, S)\
+ do {\
+ res = 999;\
+ ASSERT(libfonts_parse_aa__(&res, S) == 1);\
+ ASSERT(res == C);\
+ strcpy(buf, S);\
+ for (i = 0; buf[i]; i++)\
+ buf[i] = toupper(buf[i]);\
+ res = 999;\
+ ASSERT(libfonts_parse_aa__(&res, buf) == 1);\
+ ASSERT(res == C);\
+ } while (0)
+ LIST_ANTIALIASINGS(X, ;);
+#undef X
+
+ res = 999;
+ ASSERT(libfonts_parse_aa__(&res, " something else ") == 0);
+ ASSERT(res == 999);
+
+ return 0;
}
diff --git a/libfonts_parse_order__.c b/libfonts_parse_order__.c
index 53b4aa4..349347e 100644
--- a/libfonts_parse_order__.c
+++ b/libfonts_parse_order__.c
@@ -3,78 +3,6 @@
#ifndef TEST
-#define LIST_SUBPIXEL_ORDERS(X)\
- X(LIBFONTS_SUBPIXEL_ORDER_UNKNOWN, "unknown")\
- X(LIBFONTS_SUBPIXEL_ORDER_NONRGB, "non-rgb")\
- X(LIBFONTS_SUBPIXEL_ORDER_NONLINEAR, "non-linear")\
- X(LIBFONTS_SUBPIXEL_ORDER_OTHER, "other")\
- X(LIBFONTS_SUBPIXEL_ORDER_RGB, "rgb")\
- X(LIBFONTS_SUBPIXEL_ORDER_R_G_B, "r:g:b")\
- X(LIBFONTS_SUBPIXEL_ORDER_R_G_B, "vrgb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BGR, "bgr")\
- X(LIBFONTS_SUBPIXEL_ORDER_B_G_R, "b:g:r")\
- X(LIBFONTS_SUBPIXEL_ORDER_B_G_R, "vbgr")\
- X(LIBFONTS_SUBPIXEL_ORDER_GBR, "gbr")\
- X(LIBFONTS_SUBPIXEL_ORDER_G_B_R, "g:b:r")\
- X(LIBFONTS_SUBPIXEL_ORDER_G_B_R, "vgbr")\
- X(LIBFONTS_SUBPIXEL_ORDER_RBG, "rbg")\
- X(LIBFONTS_SUBPIXEL_ORDER_R_B_G, "r:b:g")\
- X(LIBFONTS_SUBPIXEL_ORDER_R_B_G, "vrbg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BRG, "brg")\
- X(LIBFONTS_SUBPIXEL_ORDER_B_R_G, "b:r:g")\
- X(LIBFONTS_SUBPIXEL_ORDER_B_R_G, "vbrg")\
- X(LIBFONTS_SUBPIXEL_ORDER_GRB, "grb")\
- X(LIBFONTS_SUBPIXEL_ORDER_G_R_B, "g:r:b")\
- X(LIBFONTS_SUBPIXEL_ORDER_G_R_B, "vgrb")\
- X(LIBFONTS_SUBPIXEL_ORDER_RR_GB, "rr:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_GR_BR, "gr:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BG_RR, "bg:rr")\
- X(LIBFONTS_SUBPIXEL_ORDER_RB_RG, "rb:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_RR_BG, "rr:bg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BR_GR, "br:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_GB_RR, "gb:rr")\
- X(LIBFONTS_SUBPIXEL_ORDER_RG_RB, "rg:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_GG_RB, "gg:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_RG_BG, "rg:bg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BR_GG, "br:gg")\
- X(LIBFONTS_SUBPIXEL_ORDER_GB_GR, "gb:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_GG_BR, "gg:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BG_RG, "bg:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_RB_GG, "rb:gg")\
- X(LIBFONTS_SUBPIXEL_ORDER_GR_GB, "gr:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BB_RG, "bb:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_RB_GB, "rb:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_GR_BB, "gr:bb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BG_BR, "bg:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BB_GR, "bb:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_GB_RB, "gb:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_RG_BB, "rg:bb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BR_BG, "br:bg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RR_GB, "balanced rr:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_BR, "balanced gr:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_RR, "balanced bg:rr")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_RG, "balanced rb:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RR_BG, "balanced rr:bg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_GR, "balanced br:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_RR, "balanced gb:rr")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_RB, "balanced rg:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GG_RB, "balanced gg:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_BG, "balanced rg:bg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_GG, "balanced br:gg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_GR, "balanced gb:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GG_BR, "balanced gg:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_RG, "balanced bg:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_GG, "balanced rb:gg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_GB, "balanced gr:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BB_RG, "balanced bb:rg")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RB_GB, "balanced rb:gb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GR_BB, "balanced gr:bb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BG_BR, "balanced bg:br")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BB_GR, "balanced bb:gr")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_GB_RB, "balanced gb:rb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_RG_BB, "balanced rg:bb")\
- X(LIBFONTS_SUBPIXEL_ORDER_BALANCED_BR_BG, "balanced br:bg")
-
int
libfonts_parse_order__(enum libfonts_subpixel_order *outp, const char *value)
{
@@ -82,7 +10,7 @@ libfonts_parse_order__(enum libfonts_subpixel_order *outp, const char *value)
if (!strcasecmp(value, S)) {\
*outp = C;\
} else
- LIST_SUBPIXEL_ORDERS(X) {
+ LIST_SUBPIXEL_ORDERS(X,) {
*outp = LIBFONTS_SUBPIXEL_ORDER_OTHER;
return 0;
}
@@ -98,7 +26,30 @@ libfonts_parse_order__(enum libfonts_subpixel_order *outp, const char *value)
int
main(void)
{
- return 0; /* TODO add test */
+ enum libfonts_subpixel_order res;
+ char buf[1024];
+ size_t i;
+
+#define X(C, S)\
+ do {\
+ res = 999;\
+ ASSERT(libfonts_parse_order__(&res, S) == 1);\
+ ASSERT(res == C);\
+ strcpy(buf, S);\
+ for (i = 0; buf[i]; i++)\
+ buf[i] = toupper(buf[i]);\
+ res = 999;\
+ ASSERT(libfonts_parse_order__(&res, buf) == 1);\
+ ASSERT(res == C);\
+ } while (0)
+ LIST_SUBPIXEL_ORDERS(X, ;);
+#undef X
+
+ res = 999;
+ ASSERT(libfonts_parse_order__(&res, " something else ") == 0);
+ ASSERT(res == LIBFONTS_SUBPIXEL_ORDER_OTHER);
+
+ return 0;
}
diff --git a/libfonts_parse_uint32__.c b/libfonts_parse_uint32__.c
index f87f19e..d35ddd3 100644
--- a/libfonts_parse_uint32__.c
+++ b/libfonts_parse_uint32__.c
@@ -11,7 +11,7 @@ libfonts_parse_uint32__(uint32_t *outp, const char *value)
if (!*value)
return 0;
while (isdigit(*value)) {
- digit = (*value & 15);
+ digit = (*value++ & 15);
if (out > (UINT32_C(0xFFFFFFFF) - digit) / 10)
return 0;
out = out * 10 + digit;
@@ -29,7 +29,41 @@ libfonts_parse_uint32__(uint32_t *outp, const char *value)
int
main(void)
{
- return 0; /* TODO add test */
+ uint32_t res;
+
+#define F(S)\
+ do {\
+ res = 999;\
+ ASSERT(libfonts_parse_uint32__(&res, S) == 0);\
+ ASSERT(res == 999);\
+ } while (0)
+
+#define T(N)\
+ do {\
+ res = (uint32_t)(UINT32_C(N) ^ UINT32_C(0x87654321));\
+ ASSERT(libfonts_parse_uint32__(&res, #N) == 1);\
+ ASSERT(res == UINT32_C(N));\
+ res ^= UINT32_C(0x87654321);\
+ ASSERT(libfonts_parse_uint32__(&res, "+"#N) == 1);\
+ ASSERT(res == UINT32_C(N));\
+ F("-"#N);\
+ } while (0)
+
+ T(0);
+ T(10);
+ T(12);
+ T(1235);
+ T(53251);
+ T(4294967294);
+ T(4294967295);
+
+ F("4294967296");
+ F("11111111111");
+ F("+");
+ F("100x");
+ F("a");
+
+ return 0;
}