{"thread":{"id":"25020","subject":"[PATCH v3] Add test-string-list.c","startedAt":"2010-09-07T12:00:37Z","lastAt":"2010-09-07T12:00:37Z","messageCount":1,"participants":["Thiago Farina"],"isPatch":true,"patchVersion":3,"patchTotal":null},"messages":[{"id":"150208","messageId":"1283860837-7375-1-git-send-email-tfransosi@gmail.com","threadId":"25020","inReplyTo":null,"subject":"[PATCH v3] Add test-string-list.c","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-09-07T12:00:37Z","receivedAt":"2010-09-07T12:00:37Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Add a simple test that demonstrates how to create and manipulate\na list of strings using the string-list.h API.\n\nTo see the test, call it by:\n./bin-wrappers/test-string-list\n\nOr to run it on the git test suite:\ncd t && sh t0070-fundamental.sh\n\nSigned-off-by: Thiago Farina <tfransosi@gmail.com>\n---\n Makefile               |    1 +\n t/t0070-fundamental.sh |    3 +\n test-string-list.c     |  110 ++++++++++++++++++++++++++++++++++++++++++++++++\n 3 files changed, 114 insertions(+), 0 deletions(-)\n create mode 100644 test-string-list.c\n\ndiff --git a/Makefile b/Makefile\nindex 40fbcae..287bc2c 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -422,6 +422,7 @@ TEST_PROGRAMS_NEED_X += test-string-pool\n TEST_PROGRAMS_NEED_X += test-svn-fe\n TEST_PROGRAMS_NEED_X += test-treap\n TEST_PROGRAMS_NEED_X += test-index-version\n+TEST_PROGRAMS_NEED_X += test-string-list\n \n TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))\n \ndiff --git a/t/t0070-fundamental.sh b/t/t0070-fundamental.sh\nindex 680d7d6..c163a40 100755\n--- a/t/t0070-fundamental.sh\n+++ b/t/t0070-fundamental.sh\n@@ -11,5 +11,8 @@ Verify wrappers and compatibility functions.\n test_expect_success 'character classes (isspace, isalpha etc.)' '\n \ttest-ctype\n '\n+test_expect_success 'string list manipulation' '\n+\ttest-string-list\n+'\n \n test_done\ndiff --git a/test-string-list.c b/test-string-list.c\nnew file mode 100644\nindex 0000000..b3a6d3f\n--- /dev/null\n+++ b/test-string-list.c\n@@ -0,0 +1,110 @@\n+#include \"git-compat-util.h\"\n+#include \"string-list.h\"\n+\n+#define TEST(name) \\\n+\tstatic void test_##name(void)\n+\n+TEST(print_string_list)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tstring_list_append(&list, \"foo\");\n+\tstring_list_append(&list, \"bar\");\n+\n+\tprint_string_list(&list, \"\");\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+TEST(string_list_append)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tint i;\n+\tassert(list.nr == 0);\n+\n+\tfor (i = 0; i < 10; ++i)\n+\t\tstring_list_append(&list, \"foo\" + i);\n+\n+\tassert(list.nr == 10);\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+TEST(string_list_has_string)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tassert(!string_list_has_string(&list, \"foo\"));\n+\tstring_list_append(&list, \"foo\");\n+\tassert(string_list_has_string(&list, \"foo\"));\n+\tassert(!string_list_has_string(&list, \"blah\"));\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+TEST(unsorted_string_list_lookup)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tassert(!unsorted_string_list_lookup(&list, \"bazr\"));\n+\n+\tstring_list_append(&list, \"blah\");\n+\tstring_list_append(&list, \"monalisa\");\n+\tstring_list_append(&list, \"bzr\");\n+\tstring_list_append(&list, \"barz\");\n+\tstring_list_append(&list, \"john\");\n+\n+\tassert(unsorted_string_list_lookup(&list, \"bzr\"));\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+TEST(string_list_lookup)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tint i;\n+\tconst char *letters[] = { \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" };\n+\tfor (i = 0; i < ARRAY_SIZE(letters); ++i)\n+\t\tstring_list_append(&list, letters[i]);\n+\n+\tassert(!string_list_lookup(&list, \"A\"));\n+\tassert(string_list_lookup(&list, \"a\"));\n+\tassert(!string_list_lookup(&list, \"F\"));\n+\tassert(string_list_lookup(&list, \"f\"));\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+TEST(string_list_insert)\n+{\n+\tstruct string_list list = STRING_LIST_INIT_NODUP;\n+\tint i;\n+\tconst char *letters[] = { \"a\", \"b\", \"c\", \"e\", \"f\" };\n+\tint index;\n+\tfor (i = 0; i < ARRAY_SIZE(letters); ++i)\n+\t\tstring_list_append(&list, letters[i]);\n+\n+\t/* This should insert the string d between c and e.\n+\t * (i.e in the index = 3.)\n+\t */\n+\tindex = string_list_find_insert_index(&list, \"d\", 0);\n+\tassert(index == 3);\n+\tstring_list_insert(&list, \"d\");\n+\tassert(list.nr == 6);\n+\n+\tstring_list_clear(&list, 0);\n+\tassert(list.nr == 0);\n+}\n+\n+int main(int argc, const char **argv)\n+{\n+\ttest_print_string_list();\n+\ttest_string_list_append();\n+\ttest_string_list_has_string();\n+\ttest_unsorted_string_list_lookup();\n+\ttest_string_list_lookup();\n+\ttest_string_list_insert();\n+\treturn 0;\n+}\n-- \n1.7.2.3.313.gcd15\n"}]}