mirror of
https://github.com/vale981/libblobpack
synced 2025-03-05 09:51:42 -05:00
add json test
This commit is contained in:
parent
f30e6e1eb2
commit
47ab829334
7 changed files with 126 additions and 11 deletions
|
@ -1,4 +1,4 @@
|
|||
@CODE_COVERAGE_RULES@
|
||||
lib_LTLIBRARIES=libblobpack.la
|
||||
libblobpack_la_SOURCES=blob.c blob_field.c blob_json.c ujsondec.c ujsonenc.c utils.c
|
||||
libblobpack_la_SOURCES=blob.c blob_field.c blob_json.c blob_ujson.c ujsondec.c ujsonenc.c utils.c
|
||||
libblobpack_la_CFLAGS=$(CODE_COVERAGE_CFLAGS) -std=gnu99 -Wall -Werror
|
||||
|
|
|
@ -123,8 +123,8 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
|
|||
libblobpack_la_LIBADD =
|
||||
am_libblobpack_la_OBJECTS = libblobpack_la-blob.lo \
|
||||
libblobpack_la-blob_field.lo libblobpack_la-blob_json.lo \
|
||||
libblobpack_la-ujsondec.lo libblobpack_la-ujsonenc.lo \
|
||||
libblobpack_la-utils.lo
|
||||
libblobpack_la-blob_ujson.lo libblobpack_la-ujsondec.lo \
|
||||
libblobpack_la-ujsonenc.lo libblobpack_la-utils.lo
|
||||
libblobpack_la_OBJECTS = $(am_libblobpack_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
|
@ -319,7 +319,7 @@ top_build_prefix = @top_build_prefix@
|
|||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
lib_LTLIBRARIES = libblobpack.la
|
||||
libblobpack_la_SOURCES = blob.c blob_field.c blob_json.c ujsondec.c ujsonenc.c utils.c
|
||||
libblobpack_la_SOURCES = blob.c blob_field.c blob_json.c blob_ujson.c ujsondec.c ujsonenc.c utils.c
|
||||
libblobpack_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) -std=gnu99 -Wall -Werror
|
||||
all: all-am
|
||||
|
||||
|
@ -403,6 +403,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-blob.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-blob_field.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-blob_json.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-blob_ujson.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-ujsondec.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-ujsonenc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libblobpack_la-utils.Plo@am__quote@
|
||||
|
@ -449,6 +450,13 @@ libblobpack_la-blob_json.lo: blob_json.c
|
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libblobpack_la_CFLAGS) $(CFLAGS) -c -o libblobpack_la-blob_json.lo `test -f 'blob_json.c' || echo '$(srcdir)/'`blob_json.c
|
||||
|
||||
libblobpack_la-blob_ujson.lo: blob_ujson.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libblobpack_la_CFLAGS) $(CFLAGS) -MT libblobpack_la-blob_ujson.lo -MD -MP -MF $(DEPDIR)/libblobpack_la-blob_ujson.Tpo -c -o libblobpack_la-blob_ujson.lo `test -f 'blob_ujson.c' || echo '$(srcdir)/'`blob_ujson.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libblobpack_la-blob_ujson.Tpo $(DEPDIR)/libblobpack_la-blob_ujson.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='blob_ujson.c' object='libblobpack_la-blob_ujson.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libblobpack_la_CFLAGS) $(CFLAGS) -c -o libblobpack_la-blob_ujson.lo `test -f 'blob_ujson.c' || echo '$(srcdir)/'`blob_ujson.c
|
||||
|
||||
libblobpack_la-ujsondec.lo: ujsondec.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libblobpack_la_CFLAGS) $(CFLAGS) -MT libblobpack_la-ujsondec.lo -MD -MP -MF $(DEPDIR)/libblobpack_la-ujsondec.Tpo -c -o libblobpack_la-ujsondec.lo `test -f 'ujsondec.c' || echo '$(srcdir)/'`ujsondec.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libblobpack_la-ujsondec.Tpo $(DEPDIR)/libblobpack_la-ujsondec.Plo
|
||||
|
|
|
@ -37,6 +37,8 @@ static inline void blob_dump_json(struct blob *self){ blob_field_dump_json(blob_
|
|||
char *blob_field_to_json(struct blob_field *self);
|
||||
static inline char *blob_to_json(struct blob *self){ return blob_field_to_json(blob_head(self)); }
|
||||
|
||||
bool blob_init_from_json(struct blob *self, const char *json);
|
||||
|
||||
bool blob_put_json(struct blob *self, const char *json);
|
||||
bool blob_put_json_from_file(struct blob *self, const char *file);
|
||||
|
||||
|
|
|
@ -166,6 +166,23 @@ bool blob_put_json(struct blob *self, const char *json){
|
|||
return true;
|
||||
}
|
||||
|
||||
bool blob_init_from_json(struct blob *self, const char *json){
|
||||
struct blob b;
|
||||
blob_init(&b, 0, 0);
|
||||
bool r = blob_put_json(&b, json);
|
||||
if(!r) {
|
||||
blob_free(&b);
|
||||
return false;
|
||||
}
|
||||
blob_init(self, 0, 0);
|
||||
struct blob_field *child;
|
||||
blob_field_for_each_child(blob_field_first_child(blob_head(&b)), child){
|
||||
blob_put_attr(self, child);
|
||||
}
|
||||
blob_free(&b);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool blob_put_json_from_file(struct blob *self, const char *file){
|
||||
// this is a rather simplistic approach where we just load the whole file into memory and then parse the buffer.
|
||||
// there can probably be better ways where we parse data in place..
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
@CODE_COVERAGE_RULES@
|
||||
check_PROGRAMS=random read-write
|
||||
check_PROGRAMS=random read-write json
|
||||
random_SOURCES=random.c
|
||||
random_CFLAGS=$(CODE_COVERAGE_CFLAGS) -I../src/ -std=c99
|
||||
random_LDFLAGS=$(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
||||
read_write_SOURCES=read-write.c
|
||||
read_write_CFLAGS=$(CODE_COVERAGE_CFLAGS) -I../src/ -D_GNU_SOURCE -std=c99
|
||||
read_write_LDFLAGS=$(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
||||
json_SOURCES=json.c
|
||||
json_CFLAGS=$(CODE_COVERAGE_CFLAGS) -I../src/ -D_GNU_SOURCE -std=c99
|
||||
json_LDFLAGS=$(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
||||
TESTS=$(check_PROGRAMS)
|
||||
|
|
|
@ -77,7 +77,7 @@ PRE_UNINSTALL = :
|
|||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
check_PROGRAMS = random$(EXEEXT) read-write$(EXEEXT)
|
||||
check_PROGRAMS = random$(EXEEXT) read-write$(EXEEXT) json$(EXEEXT)
|
||||
subdir = test
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
|
||||
|
@ -91,13 +91,19 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am_random_OBJECTS = random-random.$(OBJEXT)
|
||||
random_OBJECTS = $(am_random_OBJECTS)
|
||||
random_LDADD = $(LDADD)
|
||||
am_json_OBJECTS = json-json.$(OBJEXT)
|
||||
json_OBJECTS = $(am_json_OBJECTS)
|
||||
json_LDADD = $(LDADD)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
json_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(json_CFLAGS) $(CFLAGS) \
|
||||
$(json_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am_random_OBJECTS = random-random.$(OBJEXT)
|
||||
random_OBJECTS = $(am_random_OBJECTS)
|
||||
random_LDADD = $(LDADD)
|
||||
random_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(random_CFLAGS) $(CFLAGS) \
|
||||
$(random_LDFLAGS) $(LDFLAGS) -o $@
|
||||
|
@ -141,8 +147,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(random_SOURCES) $(read_write_SOURCES)
|
||||
DIST_SOURCES = $(random_SOURCES) $(read_write_SOURCES)
|
||||
SOURCES = $(json_SOURCES) $(random_SOURCES) $(read_write_SOURCES)
|
||||
DIST_SOURCES = $(json_SOURCES) $(random_SOURCES) $(read_write_SOURCES)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
|
@ -501,6 +507,9 @@ random_LDFLAGS = $(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
|||
read_write_SOURCES = read-write.c
|
||||
read_write_CFLAGS = $(CODE_COVERAGE_CFLAGS) -I../src/ -D_GNU_SOURCE -std=c99
|
||||
read_write_LDFLAGS = $(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
||||
json_SOURCES = json.c
|
||||
json_CFLAGS = $(CODE_COVERAGE_CFLAGS) -I../src/ -D_GNU_SOURCE -std=c99
|
||||
json_LDFLAGS = $(CODE_COVERAGE_LDFLAGS) -L../src/.libs/ -lblobpack -lm
|
||||
TESTS = $(check_PROGRAMS)
|
||||
all: all-am
|
||||
|
||||
|
@ -546,6 +555,10 @@ clean-checkPROGRAMS:
|
|||
echo " rm -f" $$list; \
|
||||
rm -f $$list
|
||||
|
||||
json$(EXEEXT): $(json_OBJECTS) $(json_DEPENDENCIES) $(EXTRA_json_DEPENDENCIES)
|
||||
@rm -f json$(EXEEXT)
|
||||
$(AM_V_CCLD)$(json_LINK) $(json_OBJECTS) $(json_LDADD) $(LIBS)
|
||||
|
||||
random$(EXEEXT): $(random_OBJECTS) $(random_DEPENDENCIES) $(EXTRA_random_DEPENDENCIES)
|
||||
@rm -f random$(EXEEXT)
|
||||
$(AM_V_CCLD)$(random_LINK) $(random_OBJECTS) $(random_LDADD) $(LIBS)
|
||||
|
@ -560,6 +573,7 @@ mostlyclean-compile:
|
|||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/json-json.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random-random.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read_write-read-write.Po@am__quote@
|
||||
|
||||
|
@ -584,6 +598,20 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
json-json.o: json.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(json_CFLAGS) $(CFLAGS) -MT json-json.o -MD -MP -MF $(DEPDIR)/json-json.Tpo -c -o json-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/json-json.Tpo $(DEPDIR)/json-json.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='json-json.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(json_CFLAGS) $(CFLAGS) -c -o json-json.o `test -f 'json.c' || echo '$(srcdir)/'`json.c
|
||||
|
||||
json-json.obj: json.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(json_CFLAGS) $(CFLAGS) -MT json-json.obj -MD -MP -MF $(DEPDIR)/json-json.Tpo -c -o json-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/json-json.Tpo $(DEPDIR)/json-json.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='json.c' object='json-json.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(json_CFLAGS) $(CFLAGS) -c -o json-json.obj `if test -f 'json.c'; then $(CYGPATH_W) 'json.c'; else $(CYGPATH_W) '$(srcdir)/json.c'; fi`
|
||||
|
||||
random-random.o: random.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(random_CFLAGS) $(CFLAGS) -MT random-random.o -MD -MP -MF $(DEPDIR)/random-random.Tpo -c -o random-random.o `test -f 'random.c' || echo '$(srcdir)/'`random.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/random-random.Tpo $(DEPDIR)/random-random.Po
|
||||
|
@ -825,6 +853,13 @@ read-write.log: read-write$(EXEEXT)
|
|||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
json.log: json$(EXEEXT)
|
||||
@p='json$(EXEEXT)'; \
|
||||
b='json'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
.test.log:
|
||||
@p='$<'; \
|
||||
$(am__set_b); \
|
||||
|
|
50
test/json.c
Normal file
50
test/json.c
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include "test-funcs.h"
|
||||
#include <blobpack.h>
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
#include <memory.h>
|
||||
|
||||
int main(){
|
||||
struct blob blob;
|
||||
blob_init(&blob, 0, 0);
|
||||
|
||||
blob_put_bool(&blob, true);
|
||||
blob_put_string(&blob, "foo");
|
||||
blob_put_int(&blob, -13);
|
||||
blob_put_real(&blob, M_PI);
|
||||
|
||||
struct blob_field *f = blob_put_string(&blob, "copyme");
|
||||
blob_put_attr(&blob, f);
|
||||
|
||||
blob_offset_t o = blob_open_table(&blob);
|
||||
blob_put_string(&blob, "one");
|
||||
blob_put_int(&blob, 1);
|
||||
blob_put_string(&blob, "two");
|
||||
blob_put_int(&blob, 2);
|
||||
blob_put_string(&blob, "three");
|
||||
blob_put_int(&blob, 3);
|
||||
blob_close_table(&blob, o);
|
||||
|
||||
o = blob_open_array(&blob);
|
||||
blob_put_int(&blob, 1);
|
||||
blob_put_int(&blob, 2);
|
||||
blob_put_int(&blob, 3);
|
||||
blob_close_array(&blob, o);
|
||||
|
||||
char *json = blob_to_json(&blob);
|
||||
|
||||
TEST(strcmp("[1,\"foo\",243,3.141593e+00,\"copyme\",\"copyme\",{\"one\":1,\"two\":2,\"three\":3},[1,2,3]]", json) == 0);
|
||||
|
||||
struct blob b2;
|
||||
blob_init_from_json(&b2, json);
|
||||
blob_dump_json(&b2);
|
||||
char *json2 = blob_to_json(&b2);
|
||||
|
||||
TEST(strcmp(json, json2) == 0);
|
||||
|
||||
free(json);
|
||||
free(json2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue