aboutsummaryrefslogtreecommitdiffstats
path: root/libfonts_get_subpixel_order_class.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libfonts_get_subpixel_order_class.c129
1 files changed, 129 insertions, 0 deletions
diff --git a/libfonts_get_subpixel_order_class.c b/libfonts_get_subpixel_order_class.c
index 577b0f0..2c6e3bc 100644
--- a/libfonts_get_subpixel_order_class.c
+++ b/libfonts_get_subpixel_order_class.c
@@ -1,5 +1,6 @@
/* See LICENSE file for copyright and license details. */
#include "common.h"
+#ifndef TEST
enum libfonts_subpixel_order_class
@@ -39,3 +40,131 @@ libfonts_get_subpixel_order_class(enum libfonts_subpixel_order order,
*cell3p = c3;
return layout;
}
+
+
+#else
+
+
+int
+main(void)
+{
+ enum libfonts_subpixel_colour c1, c2, c3;
+
+#define R LIBFONTS_SUBPIXEL_COLOUR_RED
+#define G LIBFONTS_SUBPIXEL_COLOUR_GREEN
+#define B LIBFONTS_SUBPIXEL_COLOUR_BLUE
+
+#define T(ORDER, LAYOUT, C1, C2, C3)\
+ T_(LIBFONTS_SUBPIXEL_ORDER_##ORDER,\
+ LIBFONTS_SUBPIXEL_ORDER_CLASS_##LAYOUT,\
+ C1, C2, C3)
+#define T_(ORDER, LAYOUT, C1, C2, C3)\
+ do {\
+ errno = 0;\
+ c1 = c2 = c3 = -1;\
+ ASSERT(libfonts_get_subpixel_order_class(ORDER, &c1, &c2, &c3) == LAYOUT);\
+ ASSERT(c1 == C1);\
+ ASSERT(c2 == C2);\
+ ASSERT(c3 == C3);\
+ ASSERT(!errno);\
+ ASSERT(libfonts_get_subpixel_order_class(ORDER, NULL, &c2, &c3) == LAYOUT);\
+ ASSERT(c2 == C2);\
+ ASSERT(c3 == C3);\
+ ASSERT(!errno);\
+ ASSERT(libfonts_get_subpixel_order_class(ORDER, &c1, NULL, &c3) == LAYOUT);\
+ ASSERT(c1 == C1);\
+ ASSERT(c3 == C3);\
+ ASSERT(!errno);\
+ ASSERT(libfonts_get_subpixel_order_class(ORDER, &c1, &c2, NULL) == LAYOUT);\
+ ASSERT(c1 == C1);\
+ ASSERT(c2 == C2);\
+ ASSERT(!errno);\
+ } while (0)
+
+ T(UNKNOWN, OTHER, R, G, B);
+ T(NONRGB, OTHER, R, G, B);
+ T(NONLINEAR, OTHER, R, G, B);
+ T(OTHER, OTHER, R, G, B);
+ T(UNKNOWN - 1000, OTHER, R, G, B);
+ T(UNKNOWN + 9999, OTHER, R, G, B);
+
+ T(RGB, 123, R, G, B);
+ T(R_G_B, 1_2_3, R, G, B);
+ T(BGR, 123, B, G, R);
+ T(B_G_R, 1_2_3, B, G, R);
+
+ T(GBR, 123, G, B, R);
+ T(G_B_R, 1_2_3, G, B, R);
+ T(RBG, 123, R, B, G);
+ T(R_B_G, 1_2_3, R, B, G);
+
+ T(BRG, 123, B, R, G);
+ T(B_R_G, 1_2_3, B, R, G);
+ T(GRB, 123, G, R, B);
+ T(G_R_B, 1_2_3, G, R, B);
+
+ T(RR_GB, 11_23, R, G, B);
+ T(GR_BR, 21_31, R, G, B);
+ T(BG_RR, 32_11, R, G, B);
+ T(RB_RG, 13_12, R, G, B);
+
+ T(RR_BG, 11_23, R, B, G);
+ T(BR_GR, 21_31, R, B, G);
+ T(GB_RR, 32_11, R, B, G);
+ T(RG_RB, 13_12, R, B, G);
+
+ T(GG_RB, 11_23, G, R, B);
+ T(RG_BG, 21_31, G, R, B);
+ T(BR_GG, 32_11, G, R, B);
+ T(GB_GR, 13_12, G, R, B);
+
+ T(GG_BR, 11_23, G, B, R);
+ T(BG_RG, 21_31, G, B, R);
+ T(RB_GG, 32_11, G, B, R);
+ T(GR_GB, 13_12, G, B, R);
+
+ T(BB_RG, 11_23, B, R, G);
+ T(RB_GB, 21_31, B, R, G);
+ T(GR_BB, 32_11, B, R, G);
+ T(BG_BR, 13_12, B, R, G);
+
+ T(BB_GR, 11_23, B, G, R);
+ T(GB_RB, 21_31, B, G, R);
+ T(RG_BB, 32_11, B, G, R);
+ T(BR_BG, 13_12, B, G, R);
+
+ T(BALANCED_RR_GB, BALANCED_11_23, R, G, B);
+ T(BALANCED_GR_BR, BALANCED_21_31, R, G, B);
+ T(BALANCED_BG_RR, BALANCED_32_11, R, G, B);
+ T(BALANCED_RB_RG, BALANCED_13_12, R, G, B);
+
+ T(BALANCED_RR_BG, BALANCED_11_23, R, B, G);
+ T(BALANCED_BR_GR, BALANCED_21_31, R, B, G);
+ T(BALANCED_GB_RR, BALANCED_32_11, R, B, G);
+ T(BALANCED_RG_RB, BALANCED_13_12, R, B, G);
+
+ T(BALANCED_GG_RB, BALANCED_11_23, G, R, B);
+ T(BALANCED_RG_BG, BALANCED_21_31, G, R, B);
+ T(BALANCED_BR_GG, BALANCED_32_11, G, R, B);
+ T(BALANCED_GB_GR, BALANCED_13_12, G, R, B);
+
+ T(BALANCED_GG_BR, BALANCED_11_23, G, B, R);
+ T(BALANCED_BG_RG, BALANCED_21_31, G, B, R);
+ T(BALANCED_RB_GG, BALANCED_32_11, G, B, R);
+ T(BALANCED_GR_GB, BALANCED_13_12, G, B, R);
+
+ T(BALANCED_BB_RG, BALANCED_11_23, B, R, G);
+ T(BALANCED_RB_GB, BALANCED_21_31, B, R, G);
+ T(BALANCED_GR_BB, BALANCED_32_11, B, R, G);
+ T(BALANCED_BG_BR, BALANCED_13_12, B, R, G);
+
+ T(BALANCED_BB_GR, BALANCED_11_23, B, G, R);
+ T(BALANCED_GB_RB, BALANCED_21_31, B, G, R);
+ T(BALANCED_RG_BB, BALANCED_32_11, B, G, R);
+ T(BALANCED_BR_BG, BALANCED_13_12, B, G, R);
+
+ return 0;
+}
+
+
+#endif