Test invalid integer values
This commit is contained in:
parent
7375806046
commit
f8003f67b5
|
@ -0,0 +1,9 @@
|
|||
#ifndef __GARGOYLE_TEST_GARGOYLE_H_
|
||||
#define __GARGOYLE_TEST_GARGOYLE_H_
|
||||
|
||||
int init_suite_gargoyle(void);
|
||||
int clean_suite_gargoyle(void);
|
||||
void gargoyle_test_digest_argv(void);
|
||||
void gargoyle_test_digest_envh(void);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,115 @@
|
|||
#include <CUnit/Basic.h>
|
||||
#include <gargoyle.h>
|
||||
#include <gargoyle/test/gargoyle.h>
|
||||
|
||||
int init_suite_gargoyle(void) {
|
||||
return CUE_SUCCESS;
|
||||
}
|
||||
|
||||
int clean_suite_gargoyle(void) {
|
||||
return CUE_SUCCESS;
|
||||
}
|
||||
|
||||
void gargoyle_test_digest_argv(void) {
|
||||
}
|
||||
|
||||
void gargoyle_test_digest_envh(void) {
|
||||
const char prefix[] = "GARGOYLE";
|
||||
const uint16_t prefix_sz = sizeof(prefix) - 1;
|
||||
struct gargoyle_err err;
|
||||
uint64_t uint_val = 0;
|
||||
int64_t sint_val = 0;
|
||||
|
||||
struct gargoyle_opt optv[] = {
|
||||
{ GARGOYLE_EZ_OPT("uint", uint_val), GARGOYLE_TYPE_UINT },
|
||||
{ GARGOYLE_EZ_OPT("sint", sint_val), GARGOYLE_TYPE_SINT }
|
||||
};
|
||||
|
||||
uint16_t optc = sizeof(optv) / sizeof(struct gargoyle_opt);
|
||||
|
||||
char *dirty_env[] = {
|
||||
"GARGOYLE_*(#&(%&)*=",
|
||||
"==============",
|
||||
"GARGOYLE_\0=straw",
|
||||
NULL
|
||||
};
|
||||
|
||||
char **env = dirty_env;
|
||||
uint8_t res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, 0);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||
|
||||
env = dirty_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_STRCT);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_UNKNOWN_OPTN);
|
||||
|
||||
char *normal_env[] = {
|
||||
"SHELL=/bin/bash",
|
||||
"PWD=/Users/uplime/gargoyle",
|
||||
"HOME=/Users/uplime",
|
||||
"LANG=en_US.UTF-8",
|
||||
"TMPDIR=/tmp",
|
||||
"USER=uplime",
|
||||
"PAGER=less",
|
||||
"PATH=/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.",
|
||||
NULL
|
||||
};
|
||||
|
||||
env = normal_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, 0);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||
|
||||
env = normal_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_STRCT);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||
|
||||
char *option_env[] = {
|
||||
"SHELL=/bin/bash",
|
||||
"PWD=/Users/uplime/gargoyle",
|
||||
"HOME=/Users/uplime",
|
||||
"LANG=en_US.UTF-8",
|
||||
"TMPDIR=/tmp",
|
||||
"USER=uplime",
|
||||
"PAGER=less",
|
||||
"PATH=/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.",
|
||||
"GARGOYLE_sint=-2022",
|
||||
"GARGOYLE_uint=42",
|
||||
"GARGOYLE_UINT=43",
|
||||
"GARGOYLE_NOT_AN_OPT=racket",
|
||||
NULL
|
||||
};
|
||||
|
||||
env = option_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, 0);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||
CU_ASSERT_EQUAL(uint_val, 42);
|
||||
CU_ASSERT_EQUAL(sint_val, -2022);
|
||||
|
||||
sint_val = 0;
|
||||
env = option_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_BCASE);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||
CU_ASSERT_EQUAL(uint_val, 43);
|
||||
CU_ASSERT_EQUAL(sint_val, -2022);
|
||||
|
||||
env = option_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_STRCT);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_UNKNOWN_OPTN);
|
||||
|
||||
char *uint_env[] = {
|
||||
"GARGOYLE_UINT=43l",
|
||||
NULL
|
||||
};
|
||||
|
||||
env = uint_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_BCASE);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||
|
||||
char *sint_env[] = {
|
||||
"GARGOYLE_SINT=thunderfury",
|
||||
NULL
|
||||
};
|
||||
|
||||
env = sint_env;
|
||||
res = gargoyle_digest_envh(optc, optv, prefix, prefix_sz, &env, &err, GARGOYLE_FLG_BCASE);
|
||||
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||
}
|
Loading…
Reference in New Issue