| | #include "../../unity/unity.h" |
| | #include <stddef.h> |
| | #include <stdbool.h> |
| | #include <string.h> |
| |
|
| | |
| | void setUp(void) { |
| | |
| | } |
| | void tearDown(void) { |
| | |
| | } |
| |
|
| | |
| | |
| |
|
| | |
| | static void assert_args_is(char **expected) { |
| | TEST_ASSERT_EQUAL_PTR(expected, args); |
| | } |
| |
|
| | |
| | void test_nextarg_no_tokens_returns_false_and_no_advance(void) { |
| | char *argv[] = { NULL }; |
| | args = argv; |
| |
|
| | char **before = args; |
| | bool r = nextarg("anything"); |
| |
|
| | TEST_ASSERT_FALSE(r); |
| | assert_args_is(before); |
| | } |
| |
|
| | |
| | void test_nextarg_match_advances_pointer(void) { |
| | char *argv[] = { (char*)"foo", (char*)"bar", NULL }; |
| | args = argv; |
| |
|
| | bool r1 = nextarg("foo"); |
| | TEST_ASSERT_TRUE(r1); |
| | assert_args_is(&argv[1]); |
| |
|
| | bool r2 = nextarg("bar"); |
| | TEST_ASSERT_TRUE(r2); |
| | assert_args_is(&argv[2]); |
| |
|
| | |
| | char **before = args; |
| | bool r3 = nextarg("baz"); |
| | TEST_ASSERT_FALSE(r3); |
| | assert_args_is(before); |
| | } |
| |
|
| | |
| | void test_nextarg_nonmatch_does_not_advance(void) { |
| | char *argv[] = { (char*)"foo", (char*)"bar", NULL }; |
| | args = argv; |
| |
|
| | bool r = nextarg("qux"); |
| | TEST_ASSERT_FALSE(r); |
| | assert_args_is(argv); |
| | } |
| |
|
| | |
| | void test_nextarg_exact_match_only_not_prefix(void) { |
| | char *argv[] = { (char*)"foobar", NULL }; |
| | args = argv; |
| |
|
| | bool r1 = nextarg("foo"); |
| | TEST_ASSERT_FALSE(r1); |
| | assert_args_is(argv); |
| |
|
| | bool r2 = nextarg("foobar"); |
| | TEST_ASSERT_TRUE(r2); |
| | assert_args_is(&argv[1]); |
| | } |
| |
|
| | |
| | void test_nextarg_empty_string_token_and_pattern(void) { |
| | char *argv[] = { (char*)"", (char*)"x", NULL }; |
| | args = argv; |
| |
|
| | bool r1 = nextarg(""); |
| | TEST_ASSERT_TRUE(r1); |
| | assert_args_is(&argv[1]); |
| |
|
| | bool r2 = nextarg(""); |
| | TEST_ASSERT_FALSE(r2); |
| | assert_args_is(&argv[1]); |
| | } |
| |
|
| | |
| | void test_nextarg_interleaved_calls(void) { |
| | char *argv[] = { (char*)"a", (char*)"b", (char*)"c", NULL }; |
| | args = argv; |
| |
|
| | |
| | TEST_ASSERT_FALSE(nextarg("z")); |
| | assert_args_is(argv); |
| |
|
| | |
| | TEST_ASSERT_TRUE(nextarg("a")); |
| | assert_args_is(&argv[1]); |
| |
|
| | |
| | TEST_ASSERT_FALSE(nextarg("a")); |
| | assert_args_is(&argv[1]); |
| |
|
| | |
| | TEST_ASSERT_TRUE(nextarg("b")); |
| | assert_args_is(&argv[2]); |
| |
|
| | |
| | TEST_ASSERT_TRUE(nextarg("c")); |
| | assert_args_is(&argv[3]); |
| |
|
| | |
| | char **endpos = args; |
| | TEST_ASSERT_FALSE(nextarg("anything")); |
| | assert_args_is(endpos); |
| | } |
| |
|
| | |
| | int main(void) { |
| | UNITY_BEGIN(); |
| |
|
| | RUN_TEST(test_nextarg_no_tokens_returns_false_and_no_advance); |
| | RUN_TEST(test_nextarg_match_advances_pointer); |
| | RUN_TEST(test_nextarg_nonmatch_does_not_advance); |
| | RUN_TEST(test_nextarg_exact_match_only_not_prefix); |
| | RUN_TEST(test_nextarg_empty_string_token_and_pattern); |
| | RUN_TEST(test_nextarg_interleaved_calls); |
| |
|
| | return UNITY_END(); |
| | } |