gargoyle/test/sleuth.c

108 lines
3.5 KiB
C

#include <CUnit/Basic.h>
#include <gargoyle/test/sleuth.h>
#include <gargoyle/sleuth.h>
int init_suite_sleuth(void) {
return CUE_SUCCESS;
}
int clean_suite_sleuth(void) {
return CUE_SUCCESS;
}
void sleuth_test_find_brand(void) {
struct gargoyle_opt optv[] = {
{ GARGOYLE_MK_OPT("foo"), 0, NULL, 0, GARGOYLE_TYPE_BOOL },
{ GARGOYLE_MK_OPT("bar"), 0, NULL, 0, GARGOYLE_TYPE_UINT }
};
uint16_t optc = sizeof(optv) / sizeof(struct gargoyle_opt);
struct gargoyle_opt *opt = gargoyle_find_brand(optc, optv, "", NULL, 0, 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "foo", NULL, 0, 0);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "no-foo", NULL, 0, 0);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "no-foo", "", 0, 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "no_foo", NULL, 0, GARGOYLE_FLG_SYMBL);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "no_foo", NULL, 0, GARGOYLE_FLG_ICASE);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "no_foo", NULL, 0, 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "No-Foo", NULL, 0, GARGOYLE_FLG_SYMBL);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "No-Foo", NULL, 0, GARGOYLE_FLG_ICASE);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "No-Foo", NULL, 0, 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "NO_FOO", NULL, 0, GARGOYLE_FLG_FLXBL);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "bar", NULL, 0, 0);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "bar", opt->brand_sz);
opt = gargoyle_find_brand(optc, optv, "ba", NULL, 0, 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_brand(optc, optv, "baro", NULL, 0, 0);
CU_ASSERT_PTR_NULL(opt);
}
void sleuth_test_find_emblem(void) {
struct gargoyle_opt optv[] = {
{ GARGOYLE_MK_OPT("foo"), 'f', NULL, 0, GARGOYLE_TYPE_BOOL },
{ GARGOYLE_MK_OPT("bar"), 'b', NULL, 0, GARGOYLE_TYPE_UINT }
};
uint16_t optc = sizeof(optv) / sizeof(struct gargoyle_opt);
struct gargoyle_opt *opt = gargoyle_find_emblem(optc, optv, 'f', 0);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_emblem(optc, optv, 'f', GARGOYLE_FLG_ECASE);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_emblem(optc, optv, 'F', 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_emblem(optc, optv, 'F', GARGOYLE_FLG_ECASE);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "foo", opt->brand_sz);
opt = gargoyle_find_emblem(optc, optv, 'b', 0);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "bar", opt->brand_sz);
opt = gargoyle_find_emblem(optc, optv, 'b', GARGOYLE_FLG_ECASE);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "bar", opt->brand_sz);
opt = gargoyle_find_emblem(optc, optv, 'B', 0);
CU_ASSERT_PTR_NULL(opt);
opt = gargoyle_find_emblem(optc, optv, 'B', GARGOYLE_FLG_ECASE);
CU_ASSERT_PTR_NOT_NULL(opt);
CU_ASSERT_NSTRING_EQUAL(opt->brand, "bar", opt->brand_sz);
}