summaryrefslogtreecommitdiffstats
path: root/test/test-args.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-args.c')
-rw-r--r--test/test-args.c222
1 files changed, 222 insertions, 0 deletions
diff --git a/test/test-args.c b/test/test-args.c
new file mode 100644
index 0000000..a29c86c
--- /dev/null
+++ b/test/test-args.c
@@ -0,0 +1,222 @@
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#include <test/test-args.h>
+
+static int test_char(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, 21, "test_char_1\\(a = 0x0a\\)" },
+ { RE_TEST_TYPE_STR, 22, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_1 = 0x64 'd'" },
+ };
+ struct re_test_data data2[] = {
+ { RE_TEST_TYPE_STR, 0, 31, "test_char_2\\(a = 0x0a, b = 0x14\\)" },
+ { RE_TEST_TYPE_STR, 32, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_2 = 0xf6" },
+ };
+ struct re_test_data data3[] = {
+ { RE_TEST_TYPE_STR, 0, 41, "test_char_3\\(a = 0x01, b = 0xfe, c = 0x07\\)" },
+ { RE_TEST_TYPE_STR, 42, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_3 = 0xf7" },
+ };
+ struct re_test_data data4[] = {
+ { RE_TEST_TYPE_STR, 0, 59, "test_char_4\\(a = 0x64 'd', b = 0x02, c = 0x63 'c', d = 0xff\\)" },
+ { RE_TEST_TYPE_STR, 60, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_4 = 0xc9" },
+ };
+ struct re_test_data data5[] = {
+ { RE_TEST_TYPE_STR, 0, 65, "test_char_5\\(a = 0xff, b = 0x15, c = 0x0d, d = 0x20, e = 0x79 'y'\\)" },
+ { RE_TEST_TYPE_STR, 66, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_5 = 0xc7" },
+ };
+ struct re_test_data data6[] = {
+ { RE_TEST_TYPE_STR, 0, 75, "test_char_6\\(a = 0x64 'd', b = 0xc8, c = 0xd5, d = 0x0c, e = 0xc7, f = 0xf2\\)" },
+ { RE_TEST_TYPE_STR, 76, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_6 = 0x63 'c'" },
+ };
+ struct re_test_data data7[] = {
+ { RE_TEST_TYPE_STR, 0, 81, "test_char_7\\(a = 0x01, b = 0x02, c = 0x03, d = 0x04, e = 0x05, f = 0x06, g = 0x07\\)" },
+ { RE_TEST_TYPE_STR, 82, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_7 = 0x19" },
+ };
+ struct re_test_data data8[] = {
+ { RE_TEST_TYPE_STR, 0, 95, "test_char_8\\(a = 0xf5, b = 0x15, c = 0x1e, d = 0xfc, e = 0x17, f = 0x85, g = 0x46 'F', h = 0x06\\)" },
+ { RE_TEST_TYPE_STR, 96, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_8 = 0xc9" },
+ };
+ struct re_test_data data9[] = {
+ { RE_TEST_TYPE_STR, 0, 109, "test_char_9\\(a = 0xf6, b = 0x01, c = 0x03, d = 0x04, e = 0x09, f = 0x63 'c', g = 0x4e 'N', h = 0xf7, i = 0x0c\\)" },
+ { RE_TEST_TYPE_STR, 110, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_char_9 = 0xd0" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ CONFIG_CLEAR_ARGS(sh);
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_char_1(10));
+ LOCAL_TEST(data2, DATA_CNT(2), test_char_2(10, 20));
+ LOCAL_TEST(data3, DATA_CNT(3), test_char_3(1, -2, 7));
+ LOCAL_TEST(data4, DATA_CNT(4), test_char_4(100, 2, 99, -1));
+ LOCAL_TEST(data5, DATA_CNT(5), test_char_5(-1, 21, 13, 32, 121));
+ LOCAL_TEST(data6, DATA_CNT(6), test_char_6(100, 200, -43, 12, 199, -14));
+ LOCAL_TEST(data7, DATA_CNT(7), test_char_7(1, 2, 3, 4, 5, 6, 7));
+ LOCAL_TEST(data8, DATA_CNT(8), test_char_8(-11, 21, 30, -4, 23, -123, 70, 6));
+ LOCAL_TEST(data9, DATA_CNT(9), test_char_9(-10, 1, 3, 4, 9, 99, 78, -9, 12));
+
+ PASSED();
+ return 0;
+}
+
+static int test_short(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, 21, "test_short_1\\(a = 100\\)" },
+ { RE_TEST_TYPE_STR, 22, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_1 = -100" },
+ };
+ struct re_test_data data2[] = {
+ { RE_TEST_TYPE_STR, 0, 28, "test_short_2\\(a = 10, b = 20\\)" },
+ { RE_TEST_TYPE_STR, 29, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_2 = 30" },
+ };
+ struct re_test_data data3[] = {
+ { RE_TEST_TYPE_STR, 0, 34, "test_short_3\\(a = 1, b = -2, c = 7\\)" },
+ { RE_TEST_TYPE_STR, 35, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_3 = -8" },
+ };
+ struct re_test_data data4[] = {
+ { RE_TEST_TYPE_STR, 0, 45, "test_short_4\\(a = 100, b = 2, c = 999, d = -1\\)" },
+ { RE_TEST_TYPE_STR, 46, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_4 = 2097" },
+ };
+ struct re_test_data data5[] = {
+ { RE_TEST_TYPE_STR, 0, 60, "test_short_5\\(a = -1, b = 21477, c = 4313, d = 100, e = 3121\\)" },
+ { RE_TEST_TYPE_STR, 61, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_5 = 1583" },
+ };
+ struct re_test_data data6[] = {
+ { RE_TEST_TYPE_STR, 0, 70, "test_short_6\\(a = 100, b = 200, c = -3543, d = 12, e = 9999, f = -1324\\)" },
+ { RE_TEST_TYPE_STR, 71, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_6 = -25344" },
+ };
+ struct re_test_data data7[] = {
+ { RE_TEST_TYPE_STR, 0, 61, "test_short_7\\(a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7\\)" },
+ { RE_TEST_TYPE_STR, 62, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_7 = -19" },
+ };
+ struct re_test_data data8[] = {
+ { RE_TEST_TYPE_STR, 0, 88, "test_short_8\\(a = -11111, b = 2143, c = 30, d = -4, e = 5123, f = -123, g = 7000, h = 76\\)" },
+ { RE_TEST_TYPE_STR, 89, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_8 = 3134" },
+ };
+ struct re_test_data data9[] = {
+ { RE_TEST_TYPE_STR, 0, 86, "test_short_9\\(a = -10, b = 1, c = 3, d = 1234, e = 9, f = 3, g = 1311, h = -99, i = 10\\)" },
+ { RE_TEST_TYPE_STR, 87, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_short_9 = -2482" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ CONFIG_CLEAR_ARGS(sh);
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_short_1(100));
+ LOCAL_TEST(data2, DATA_CNT(2), test_short_2(10, 20));
+ LOCAL_TEST(data3, DATA_CNT(3), test_short_3(1, -2, 7));
+ LOCAL_TEST(data4, DATA_CNT(4), test_short_4(100, 2, 999, -1));
+ LOCAL_TEST(data5, DATA_CNT(5), test_short_5(-1, 21477, 4313, 100, 3121));
+ LOCAL_TEST(data6, DATA_CNT(6), test_short_6(100, 200, -3543, 12, 9999, -1324));
+ LOCAL_TEST(data7, DATA_CNT(7), test_short_7(1, 2, 3, 4, 5, 6, 7));
+ LOCAL_TEST(data8, DATA_CNT(8), test_short_8(-11111, 2143, 30, -4, 5123, -123, 7000, 76));
+ LOCAL_TEST(data9, DATA_CNT(9), test_short_9(-10, 1, 3, 1234, 9, 3, 1311, -99, 10));
+
+ PASSED();
+ return 0;
+}
+
+static int test_int(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, 19, "test_int_1\\(a = 100\\)" },
+ { RE_TEST_TYPE_STR, 20, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_1 = -100" },
+ };
+ struct re_test_data data2[] = {
+ { RE_TEST_TYPE_STR, 0, 26, "test_int_2\\(a = 10, b = 20\\)" },
+ { RE_TEST_TYPE_STR, 27, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_2 = 30" },
+ };
+ struct re_test_data data3[] = {
+ { RE_TEST_TYPE_STR, 0, 32, "test_int_3\\(a = 1, b = -2, c = 7\\)" },
+ { RE_TEST_TYPE_STR, 33, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_3 = -8" },
+ };
+ struct re_test_data data4[] = {
+ { RE_TEST_TYPE_STR, 0, 46, "test_int_4\\(a = 1000, b = 2, c = 99999, d = -1\\)" },
+ { RE_TEST_TYPE_STR, 47, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_4 = 200997" },
+ };
+ struct re_test_data data5[] = {
+ { RE_TEST_TYPE_STR, 0, 66, "test_int_5\\(a = -1, b = 2147483647, c = 654313, d = 100, e = 34121\\)" },
+ { RE_TEST_TYPE_STR, 67, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_5 = -2144725863" },
+ };
+ struct re_test_data data6[] = {
+ { RE_TEST_TYPE_STR, 0, 77, "test_int_6\\(a = 100, b = 200, c = -345436543, d = 12, e = 99999999, f = -1324\\)" },
+ { RE_TEST_TYPE_STR, 78, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_6 = -1223446720" },
+ };
+ struct re_test_data data7[] = {
+ { RE_TEST_TYPE_STR, 0, 59, "test_int_7\\(a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7\\)" },
+ { RE_TEST_TYPE_STR, 60, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_7 = -19" },
+ };
+ struct re_test_data data8[] = {
+ { RE_TEST_TYPE_STR, 0, 91, "test_int_8\\(a = -11111, b = 214321543, c = 30, d = -4, e = 5123, f = -123, g = 7000, h = 76\\)" },
+ { RE_TEST_TYPE_STR, 92, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_8 = 214322534" },
+ };
+ struct re_test_data data9[] = {
+ { RE_TEST_TYPE_STR, 0, 84, "test_int_9\\(a = -10, b = 1, c = 3, d = 1234, e = 9, f = 3, g = 1311, h = -99, i = 10\\)" },
+ { RE_TEST_TYPE_STR, 85, -1, "\\[.*lib-test-args.so\\] \\{" },
+ { RE_TEST_TYPE_STR, -1, -1, "\\} test_int_9 = -2482" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ CONFIG_CLEAR_ARGS(sh);
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_int_1(100));
+ LOCAL_TEST(data2, DATA_CNT(2), test_int_2(10, 20));
+ LOCAL_TEST(data3, DATA_CNT(3), test_int_3(1, -2, 7));
+ LOCAL_TEST(data4, DATA_CNT(4), test_int_4(1000, 2, 99999, -1));
+ LOCAL_TEST(data5, DATA_CNT(5), test_int_5(-1, 2147483647, 654313, 100, 34121));
+ LOCAL_TEST(data6, DATA_CNT(6), test_int_6(100, 200, -345436543, 12, 99999999, -1324));
+ LOCAL_TEST(data7, DATA_CNT(7), test_int_7(1, 2, 3, 4, 5, 6, 7));
+ LOCAL_TEST(data8, DATA_CNT(8), test_int_8(-11111, 214321543, 30, -4, 5123, -123, 7000, 76));
+ LOCAL_TEST(data9, DATA_CNT(9), test_int_9(-10, 1, 3, 1234, 9, 3, 1311, -99, 10));
+
+ PASSED();
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ struct lt_config_shared *sh;
+
+ sh = config_init();
+ if (!sh)
+ return -1;
+
+ TEST(test_char);
+ TEST(test_short);
+ TEST(test_int);
+
+ /*
+ * test_long is arch specific, since long differes within x86 32 and
+ * 64 bits (not sure about ARM), while char/short/int are same.
+ * */
+ extern int test_long(struct lt_config_shared *sh);
+ TEST(test_long);
+
+ return 0;
+}