Add test suite for numeric types in gargoyle_from_rope
This commit is contained in:
parent
ecc61e1af3
commit
eb0dfac697
2 changed files with 106 additions and 1 deletions
2
Makefile
2
Makefile
|
@ -30,7 +30,7 @@ test: bin/libgargoyle.so bin/gargoyle-test
|
||||||
bin/gargoyle-test
|
bin/gargoyle-test
|
||||||
|
|
||||||
bin/gargoyle-test: $(addprefix bin/test/,$(addsuffix .o,$(GARGOYLE_TEST_OBJS)))
|
bin/gargoyle-test: $(addprefix bin/test/,$(addsuffix .o,$(GARGOYLE_TEST_OBJS)))
|
||||||
cc $(LDFLAGS) -L bin -o $@ $^ -l gargoyle -l cunit
|
cc $(LDFLAGS) -L bin -o $@ $^ -l gargoyle -l cunit -l m
|
||||||
|
|
||||||
bin/test/%.o: test/%.c | init
|
bin/test/%.o: test/%.c | init
|
||||||
cc $(CFLAGS) -std=c99 -I include -c -o $@ $<
|
cc $(CFLAGS) -std=c99 -I include -c -o $@ $<
|
||||||
|
|
105
test/scribe.c
105
test/scribe.c
|
@ -1,6 +1,7 @@
|
||||||
#include <CUnit/Basic.h>
|
#include <CUnit/Basic.h>
|
||||||
#include <gargoyle/test/scribe.h>
|
#include <gargoyle/test/scribe.h>
|
||||||
#include <gargoyle/scribe.h>
|
#include <gargoyle/scribe.h>
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
int init_suite_scribe(void) {
|
int init_suite_scribe(void) {
|
||||||
return CUE_SUCCESS;
|
return CUE_SUCCESS;
|
||||||
|
@ -545,4 +546,108 @@ void scribe_test_from_bool(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void scribe_test_from_rope(void) {
|
void scribe_test_from_rope(void) {
|
||||||
|
uint64_t uint_val = 0;
|
||||||
|
int64_t sint_val = 0;
|
||||||
|
double dble_val = 0;
|
||||||
|
|
||||||
|
struct gargoyle_opt opts[] = {
|
||||||
|
{ GARGOYLE_EZ_OPT("uint", uint_val), GARGOYLE_TYPE_UINT },
|
||||||
|
{ GARGOYLE_EZ_OPT("sint", sint_val), GARGOYLE_TYPE_SINT },
|
||||||
|
{ GARGOYLE_EZ_OPT("dble", dble_val), GARGOYLE_TYPE_DBLE }
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t res = gargoyle_from_rope(&opts[0], "42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(uint_val, 42);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "42u", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], ")(*&^%$#@!~", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "thunderfury", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(uint_val, 0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "-1", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(uint_val, ULONG_MAX);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "-19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(uint_val, ULONG_MAX - 18);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "42.42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[0], "-8.19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_UINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(sint_val, 42);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "42u", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], ")(*&^%$#@!~", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "thunderfury", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(sint_val, 0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "-1", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(sint_val, -1);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "-19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_EQUAL(sint_val, -19);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "42.42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[1], "-8.19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_SINT);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, 42.0, 0.0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "42u", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_DBLE);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], ")(*&^%$#@!~", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_DBLE);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "thunderfury", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_INVALID_DBLE);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, 0.0, 0.0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "-1", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, -1.0, 0.0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "-19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, -19.0, 0.0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "42.42", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, 42.42, 0.0);
|
||||||
|
|
||||||
|
res = gargoyle_from_rope(&opts[2], "-8.19", 0);
|
||||||
|
CU_ASSERT_EQUAL(res, GARGOYLE_ERR_SUCCESS);
|
||||||
|
CU_ASSERT_DOUBLE_EQUAL(dble_val, -8.19, 0.0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue