diff options
author | Russell Belfer <arrbee@arrbee.com> | 2011-11-28 10:42:57 -0800 |
---|---|---|
committer | Russell Belfer <arrbee@arrbee.com> | 2011-11-28 10:42:57 -0800 |
commit | 3aa294fd450873eaef85ecadaab086b414c4e07e (patch) | |
tree | 69a80902eb56fe419f0a445f3f569cfa35d61532 /tests-clay | |
parent | 8c74d22ebfae33323b5561d9bd988f272ff61a01 (diff) | |
download | libgit2-3aa294fd450873eaef85ecadaab086b414c4e07e.tar.gz |
Add two string git_buf_join and tweak input error checking.
This commit addresses two of the comments:
* renamed existing n-input git_buf_join to git_buf_join_n
* added new git_buf_join that always takes two inputs
* moved some parameter error checking to asserts
* extended unit tests to cover new version of git_buf_join
Diffstat (limited to 'tests-clay')
-rw-r--r-- | tests-clay/core/buffer.c | 109 |
1 files changed, 76 insertions, 33 deletions
diff --git a/tests-clay/core/buffer.c b/tests-clay/core/buffer.c index 411c5e84c..5adc106dd 100644 --- a/tests-clay/core/buffer.c +++ b/tests-clay/core/buffer.c @@ -352,7 +352,32 @@ void test_core_buffer__7(void) static void -check_joinbuf( +check_joinbuf_2( + const char *a, + const char *b, + const char *expected) +{ + char sep = '/'; + git_buf buf = GIT_BUF_INIT; + + /* first validate join from nothing */ + git_buf_join(&buf, sep, a, b); + cl_assert(git_buf_oom(&buf) == 0); + cl_assert_strequal(expected, git_buf_cstr(&buf)); + git_buf_free(&buf); + + /* next validate join-append */ + git_buf_sets(&buf, a); + cl_assert(git_buf_oom(&buf) == 0); + git_buf_join(&buf, sep, NULL, b); + cl_assert(git_buf_oom(&buf) == 0); + cl_assert_strequal(expected, git_buf_cstr(&buf)); + + git_buf_free(&buf); +} + +static void +check_joinbuf_n_2( const char *a, const char *b, const char *expected) @@ -363,7 +388,7 @@ check_joinbuf( git_buf_sets(&buf, a); cl_assert(git_buf_oom(&buf) == 0); - git_buf_join(&buf, sep, 1, b); + git_buf_join_n(&buf, sep, 1, b); cl_assert(git_buf_oom(&buf) == 0); cl_assert_strequal(expected, git_buf_cstr(&buf)); @@ -371,7 +396,7 @@ check_joinbuf( } static void -check_joinbuf_n( +check_joinbuf_n_4( const char *a, const char *b, const char *c, @@ -380,7 +405,7 @@ check_joinbuf_n( { char sep = ';'; git_buf buf = GIT_BUF_INIT; - git_buf_join(&buf, sep, 4, a, b, c, d); + git_buf_join_n(&buf, sep, 4, a, b, c, d); cl_assert(git_buf_oom(&buf) == 0); cl_assert_strequal(expected, git_buf_cstr(&buf)); git_buf_free(&buf); @@ -391,45 +416,63 @@ void test_core_buffer__8(void) { git_buf a = GIT_BUF_INIT; - git_buf_join(&a, '/', 1, "foo"); + git_buf_join_n(&a, '/', 1, "foo"); cl_assert(git_buf_oom(&a) == 0); cl_assert_strequal("foo", git_buf_cstr(&a)); - git_buf_join(&a, '/', 1, "bar"); + git_buf_join_n(&a, '/', 1, "bar"); cl_assert(git_buf_oom(&a) == 0); cl_assert_strequal("foo/bar", git_buf_cstr(&a)); - git_buf_join(&a, '/', 1, "baz"); + git_buf_join_n(&a, '/', 1, "baz"); cl_assert(git_buf_oom(&a) == 0); cl_assert_strequal("foo/bar/baz", git_buf_cstr(&a)); git_buf_free(&a); - check_joinbuf("", "", ""); - check_joinbuf("", "a", "a"); - check_joinbuf("", "/a", "/a"); - check_joinbuf("a", "", "a/"); - check_joinbuf("a", "/", "a/"); - check_joinbuf("a", "b", "a/b"); - check_joinbuf("/", "a", "/a"); - check_joinbuf("/", "", "/"); - check_joinbuf("/a", "/b", "/a/b"); - check_joinbuf("/a", "/b/", "/a/b/"); - check_joinbuf("/a/", "b/", "/a/b/"); - check_joinbuf("/a/", "/b/", "/a/b/"); - check_joinbuf("/abcd", "/defg", "/abcd/defg"); - check_joinbuf("/abcd", "/defg/", "/abcd/defg/"); - check_joinbuf("/abcd/", "defg/", "/abcd/defg/"); - check_joinbuf("/abcd/", "/defg/", "/abcd/defg/"); - - check_joinbuf_n("", "", "", "", ""); - check_joinbuf_n("", "a", "", "", "a;"); - check_joinbuf_n("a", "", "", "", "a;"); - check_joinbuf_n("", "", "", "a", "a"); - check_joinbuf_n("a", "b", "", ";c;d;", "a;b;c;d;"); - check_joinbuf_n("a", "b", "", ";c;d", "a;b;c;d"); - check_joinbuf_n("abcd", "efgh", "ijkl", "mnop", "abcd;efgh;ijkl;mnop"); - check_joinbuf_n("abcd;", "efgh;", "ijkl;", "mnop;", "abcd;efgh;ijkl;mnop;"); - check_joinbuf_n(";abcd;", ";efgh;", ";ijkl;", ";mnop;", ";abcd;efgh;ijkl;mnop;"); + check_joinbuf_2("", "", ""); + check_joinbuf_2("", "a", "a"); + check_joinbuf_2("", "/a", "/a"); + check_joinbuf_2("a", "", "a/"); + check_joinbuf_2("a", "/", "a/"); + check_joinbuf_2("a", "b", "a/b"); + check_joinbuf_2("/", "a", "/a"); + check_joinbuf_2("/", "", "/"); + check_joinbuf_2("/a", "/b", "/a/b"); + check_joinbuf_2("/a", "/b/", "/a/b/"); + check_joinbuf_2("/a/", "b/", "/a/b/"); + check_joinbuf_2("/a/", "/b/", "/a/b/"); + check_joinbuf_2("/a/", "//b/", "/a/b/"); + check_joinbuf_2("/abcd", "/defg", "/abcd/defg"); + check_joinbuf_2("/abcd", "/defg/", "/abcd/defg/"); + check_joinbuf_2("/abcd/", "defg/", "/abcd/defg/"); + check_joinbuf_2("/abcd/", "/defg/", "/abcd/defg/"); + + check_joinbuf_n_2("", "", ""); + check_joinbuf_n_2("", "a", "a"); + check_joinbuf_n_2("", "/a", "/a"); + check_joinbuf_n_2("a", "", "a/"); + check_joinbuf_n_2("a", "/", "a/"); + check_joinbuf_n_2("a", "b", "a/b"); + check_joinbuf_n_2("/", "a", "/a"); + check_joinbuf_n_2("/", "", "/"); + check_joinbuf_n_2("/a", "/b", "/a/b"); + check_joinbuf_n_2("/a", "/b/", "/a/b/"); + check_joinbuf_n_2("/a/", "b/", "/a/b/"); + check_joinbuf_n_2("/a/", "/b/", "/a/b/"); + check_joinbuf_n_2("/abcd", "/defg", "/abcd/defg"); + check_joinbuf_n_2("/abcd", "/defg/", "/abcd/defg/"); + check_joinbuf_n_2("/abcd/", "defg/", "/abcd/defg/"); + check_joinbuf_n_2("/abcd/", "/defg/", "/abcd/defg/"); + + check_joinbuf_n_4("", "", "", "", ""); + check_joinbuf_n_4("", "a", "", "", "a;"); + check_joinbuf_n_4("a", "", "", "", "a;"); + check_joinbuf_n_4("", "", "", "a", "a"); + check_joinbuf_n_4("a", "b", "", ";c;d;", "a;b;c;d;"); + check_joinbuf_n_4("a", "b", "", ";c;d", "a;b;c;d"); + check_joinbuf_n_4("abcd", "efgh", "ijkl", "mnop", "abcd;efgh;ijkl;mnop"); + check_joinbuf_n_4("abcd;", "efgh;", "ijkl;", "mnop;", "abcd;efgh;ijkl;mnop;"); + check_joinbuf_n_4(";abcd;", ";efgh;", ";ijkl;", ";mnop;", ";abcd;efgh;ijkl;mnop;"); } |