diff --git a/Makefile b/Makefile index 62d5cd5..b10e649 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ LDFLAGS ?= -g -O1 LIB_CFLAGS ?= -fpic LIB_LDFLAGS ?= -shared GARGOYLE_OBJS := delusion gargoyle scribe sleuth twine -GARGOYLE_TEST_OBJS := runner sleuth twine +GARGOYLE_TEST_OBJS := runner scribe sleuth twine #GARGOYLE_TEST_OBJS := runner $(GARGOYLE_OBJS) .PHONY: all gargoyle init docs test clean diff --git a/include/gargoyle/test/scribe.h b/include/gargoyle/test/scribe.h new file mode 100644 index 0000000..d6f4678 --- /dev/null +++ b/include/gargoyle/test/scribe.h @@ -0,0 +1,9 @@ +#ifndef __GARGOYLE_TEST_SCRIBE_H_ +#define __GARGOYLE_TEST_SCRIBE_H_ + +int init_suite_scribe(void); +int clean_suite_scribe(void); +void scribe_test_from_bool(void); +void scribe_test_from_rope(void); + +#endif diff --git a/test/runner.c b/test/runner.c index 7287024..8040068 100644 --- a/test/runner.c +++ b/test/runner.c @@ -9,6 +9,12 @@ int main() { return CU_get_error(); } + CU_TestInfo scribe_tests[] = { + { "gargoyle_from_bool", scribe_test_from_bool }, + { "gargoyle_from_rope", scribe_test_from_rope }, + CU_TEST_INFO_NULL + }; + CU_TestInfo sleuth_tests[] = { { "gargoyle_find_brand", sleuth_test_find_brand }, { "gargoyle_find_emblem", sleuth_test_find_emblem }, @@ -26,7 +32,7 @@ int main() { CU_SuiteInfo suites[] = { // { "delusion", init_suite_delusion, clean_suite_delusion, NULL, NULL, delusion_tests }, // { "gargoyle", init_suite_gargoyle, clean_suite_gargoyle, NULL, NULL, gargoyle_tests }, -// { "scribe", init_suite_scribe, clean_suite_scribe, NULL, NULL, scribe_tests }, + { "scribe", init_suite_scribe, clean_suite_scribe, NULL, NULL, scribe_tests }, { "sleuth", init_suite_sleuth, clean_suite_sleuth, NULL, NULL, sleuth_tests }, { "twine", init_suite_twine, clean_suite_twine, NULL, NULL, twine_tests }, CU_SUITE_INFO_NULL, diff --git a/test/scribe.c b/test/scribe.c new file mode 100644 index 0000000..cb0864c --- /dev/null +++ b/test/scribe.c @@ -0,0 +1,548 @@ +#include +#include +#include + +int init_suite_scribe(void) { + return CUE_SUCCESS; +} + +int clean_suite_scribe(void) { + return CUE_SUCCESS; +} + +void scribe_test_from_bool(void) { + uint8_t foo = 0; + + struct gargoyle_opt opts[] = { + { GARGOYLE_EZ_OPT("foo", foo), GARGOYLE_TYPE_BOOL } + }; + + uint8_t res = gargoyle_from_bool(opts, "", NULL, 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "", "", 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "foo", NULL, 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", NULL, 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "foo", "", 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "", 0, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "no-", 3, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "no-", 2, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no", "no-", 2, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no", "no-", 3, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-", "no-", 3, 0); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + // ... + + res = gargoyle_from_bool(opts, "foo", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "bar", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_ICASE); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "NO-bar", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "no_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "bar", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "no_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "noon", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_SYMBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "NO-bar", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "no_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "NO_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No-", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "foo", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-foo", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "no_Foo", "no_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "bar", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no-bar", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_FALSE(foo); + + res = gargoyle_from_bool(opts, "noon", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "no", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "No", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); + + res = gargoyle_from_bool(opts, "Bar", "No_", 3, GARGOYLE_FLG_FLXBL); + CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS); + CU_ASSERT_TRUE(foo); +} + +void scribe_test_from_rope(void) { +}