]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Add test suite for struct args
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 14 Aug 2010 18:39:12 +0000 (20:39 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sat, 14 Aug 2010 19:14:08 +0000 (21:14 +0200)
test/test_args.c [new file with mode: 0644]

diff --git a/test/test_args.c b/test/test_args.c
new file mode 100644 (file)
index 0000000..50608fc
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2010 Joel Rosdahl
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/*
+ * This file contains tests for the functions operating on struct args.
+ */
+
+#include "ccache.h"
+#include "test/framework.h"
+
+TEST_SUITE(args)
+
+TEST(args_init_empty)
+{
+       struct args *args = args_init(0, NULL);
+       CHECK(args);
+       CHECK_INT_EQ(0, args->argc);
+       CHECK(!args->argv[0]);
+       args_free(args);
+}
+
+TEST(args_init_populated)
+{
+       char *argv[] = {"first", "second"};
+       struct args *args = args_init(2, argv);
+       CHECK(args);
+       CHECK_INT_EQ(2, args->argc);
+       CHECK_STR_EQ("first", args->argv[0]);
+       CHECK_STR_EQ("second", args->argv[1]);
+       CHECK(!args->argv[2]);
+       args_free(args);
+}
+
+TEST(args_init_from_string)
+{
+       struct args *args = args_init_from_string("first second\tthird\nfourth");
+       CHECK(args);
+       CHECK_INT_EQ(4, args->argc);
+       CHECK_STR_EQ("first", args->argv[0]);
+       CHECK_STR_EQ("second", args->argv[1]);
+       CHECK_STR_EQ("third", args->argv[2]);
+       CHECK_STR_EQ("fourth", args->argv[3]);
+       CHECK(!args->argv[4]);
+       args_free(args);
+}
+
+TEST(args_copy)
+{
+       struct args *args1 = args_init_from_string("foo");
+       struct args *args2 = args_copy(args1);
+       CHECK_ARGS_EQ_FREE12(args1, args2);
+}
+
+TEST(args_add)
+{
+       struct args *args = args_init_from_string("first");
+       CHECK_INT_EQ(1, args->argc);
+       args_add(args, "second");
+       CHECK_INT_EQ(2, args->argc);
+       CHECK_STR_EQ("second", args->argv[1]);
+       CHECK(!args->argv[2]);
+       args_free(args);
+}
+
+TEST(args_extend)
+{
+       struct args *args1 = args_init_from_string("first");
+       struct args *args2 = args_init_from_string("second third");
+       CHECK_INT_EQ(1, args1->argc);
+       args_extend(args1, args2);
+       CHECK_INT_EQ(3, args1->argc);
+       CHECK_STR_EQ("second", args1->argv[1]);
+       CHECK_STR_EQ("third", args1->argv[2]);
+       CHECK(!args1->argv[3]);
+       args_free(args1);
+       args_free(args2);
+}
+
+TEST(args_pop)
+{
+       struct args *args = args_init_from_string("first second third");
+       args_pop(args, 2);
+       CHECK_INT_EQ(1, args->argc);
+       CHECK_STR_EQ("first", args->argv[0]);
+       CHECK(!args->argv[1]);
+       args_free(args);
+}
+
+TEST(args_set)
+{
+       struct args *args = args_init_from_string("first second third");
+       args_set(args, 1, "2nd");
+       CHECK_INT_EQ(3, args->argc);
+       CHECK_STR_EQ("first", args->argv[0]);
+       CHECK_STR_EQ("2nd", args->argv[1]);
+       CHECK_STR_EQ("third", args->argv[2]);
+       CHECK(!args->argv[3]);
+       args_free(args);
+}
+
+TEST(args_remove_first)
+{
+       struct args *args1 = args_init_from_string("first second third");
+       struct args *args2 = args_init_from_string("second third");
+       args_remove_first(args1);
+       CHECK_ARGS_EQ_FREE12(args1, args2);
+}
+
+TEST(args_add_prefix)
+{
+       struct args *args1 = args_init_from_string("second third");
+       struct args *args2 = args_init_from_string("first second third");
+       args_add_prefix(args1, "first");
+       CHECK_ARGS_EQ_FREE12(args1, args2);
+}
+
+TEST(args_strip)
+{
+       struct args *args1 = args_init_from_string("first xsecond third xfourth");
+       struct args *args2 = args_init_from_string("first third");
+       args_strip(args1, "x");
+       CHECK_ARGS_EQ_FREE12(args1, args2);
+}
+
+TEST(args_to_string)
+{
+       struct args *args = args_init_from_string("first second");
+       CHECK_STR_EQ_FREE2("first second", args_to_string(args));
+       args_free(args);
+}
+
+TEST_SUITE_END