Test invalid integer values

This commit is contained in:
Nick Chambers 2022-07-07 18:45:17 -05:00
parent 7375806046
commit f8003f67b5
2 changed files with 124 additions and 0 deletions

View File

@ -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

115
test/gargoyle.c Normal file
View File

@ -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);
}