|
|
@@ -18,9 +18,16 @@ static inline void check1(const char *orig, const char *expand,
|
|
|
#define TESTRECURSE() R CPPMAGIC_DEFER1(_TESTRECURSE)()()
|
|
|
#define _TESTRECURSE() TESTRECURSE
|
|
|
|
|
|
+#define TESTMAP1(x) <<x>>
|
|
|
+
|
|
|
+#define TESTMAP2(x) [[ x
|
|
|
+#define TESTMAP3(x) x ]]
|
|
|
+
|
|
|
+#define TEST2MAP(x, y) x ** y
|
|
|
+
|
|
|
int main(void)
|
|
|
{
|
|
|
- plan_tests(27);
|
|
|
+ plan_tests(42);
|
|
|
|
|
|
CHECK1(CPPMAGIC_NOTHING(), "");
|
|
|
CHECK1(CPPMAGIC_GLUE2(a, b), "ab");
|
|
|
@@ -58,6 +65,28 @@ int main(void)
|
|
|
CHECK1(CPPMAGIC_EVAL1(TESTRECURSE()), "R R R _TESTRECURSE ()()");
|
|
|
CHECK1(CPPMAGIC_EVAL2(TESTRECURSE()), "R R R R R _TESTRECURSE ()()");
|
|
|
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP1), "");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP1, a), "<<a>>");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP1, a, b), "<<a>> , <<b>>");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP1, a, b, c), "<<a>> , <<b>> , <<c>>");
|
|
|
+
|
|
|
+ CHECK1(CPPMAGIC_2MAP(TEST2MAP), "");
|
|
|
+ CHECK1(CPPMAGIC_2MAP(TEST2MAP, a, 1), "a ** 1");
|
|
|
+ CHECK1(CPPMAGIC_2MAP(TEST2MAP, a, 1, b, 2), "a ** 1 , b ** 2");
|
|
|
+
|
|
|
+ CHECK1(CPPMAGIC_JOIN(;), "");
|
|
|
+ CHECK1(CPPMAGIC_JOIN(;, a), "a");
|
|
|
+ CHECK1(CPPMAGIC_JOIN(;, a, b), "a ; b");
|
|
|
+ CHECK1(CPPMAGIC_JOIN(;, a, b, c), "a ; b ; c");
|
|
|
+
|
|
|
+ /* Check chaining of MAPs */
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP2, CPPMAGIC_MAP(TESTMAP3)), "");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP2, CPPMAGIC_MAP(TESTMAP3, a)), "[[ a ]]");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP2, CPPMAGIC_MAP(TESTMAP3, a, b)),
|
|
|
+ "[[ a ]] , [[ b ]]");
|
|
|
+ CHECK1(CPPMAGIC_MAP(TESTMAP2, CPPMAGIC_MAP(TESTMAP3, a, b, c)),
|
|
|
+ "[[ a ]] , [[ b ]] , [[ c ]]");
|
|
|
+
|
|
|
/* This exits depending on whether all tests passed */
|
|
|
return exit_status();
|
|
|
}
|