From 135362ab6e73849dada78b33bc7064a8b44f20f6 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 9 May 2012 00:19:17 +0200 Subject: [PATCH] added some tests --- Makefile.in | 151 ++++++---- Makefile.unittests | 1 + UnitTests/Philadelphia/json-test.cpp | 134 ++++++++- UnitTests/Philadelphia/string-test.cpp | 297 ++++++++++++++++++++ UnitTests/Philadelphia/string-utf8-test.cpp | 2 +- 5 files changed, 521 insertions(+), 64 deletions(-) create mode 100644 UnitTests/Philadelphia/string-test.cpp diff --git a/Makefile.in b/Makefile.in index 2fbd82a868..a6b257b756 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -158,11 +158,11 @@ CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru -AM_V_AR = $(am__v_AR_$(V)) -am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ libavocado_a_AR = $(AR) $(ARFLAGS) libavocado_a_LIBADD = @@ -292,6 +292,7 @@ am__UnitTests_basics_suite_SOURCES_DIST = UnitTests/Runner.cpp \ UnitTests/Philadelphia/associative-pointer-test.cpp \ UnitTests/Philadelphia/string-buffer-test.cpp \ UnitTests/Philadelphia/string-utf8-test.cpp \ + UnitTests/Philadelphia/string-test.cpp \ UnitTests/Philadelphia/vector-pointer-test.cpp \ UnitTests/Philadelphia/vector-test.cpp \ UnitTests/Jutland/StringBufferTest.cpp \ @@ -303,6 +304,7 @@ am__UnitTests_basics_suite_SOURCES_DIST = UnitTests/Runner.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/associative-pointer-test.$(OBJEXT) \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-buffer-test.$(OBJEXT) \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-utf8-test.$(OBJEXT) \ +@ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-test.$(OBJEXT) \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/vector-pointer-test.$(OBJEXT) \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/vector-test.$(OBJEXT) \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Jutland/StringBufferTest.$(OBJEXT) \ @@ -442,27 +444,27 @@ am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_$(V)) -am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -AM_V_CXXLD = $(am__v_CXXLD_$(V)) -am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libavocado_a_SOURCES) $(UnitTests_basics_suite_SOURCES) \ $(UnitTests_geo_suite_SOURCES) $(avocado_SOURCES) \ @@ -493,6 +495,12 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } DATA = $(nobase_pkgdata_DATA) ETAGS = etags CTAGS = ctags @@ -500,12 +508,16 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1040,6 +1052,7 @@ CLIENT_OPT := --startup.directory ./js --startup.modules-path ./js/client/module @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/associative-pointer-test.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-buffer-test.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-utf8-test.cpp \ +@ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/string-test.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/vector-pointer-test.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Philadelphia/vector-test.cpp \ @ENABLE_BOOST_TEST_TRUE@ UnitTests/Jutland/StringBufferTest.cpp \ @@ -1090,7 +1103,7 @@ all: $(BUILT_SOURCES) .SUFFIXES: .SUFFIXES: .c .cpp .o .obj -am--refresh: +am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby $(am__configure_deps) @for dep in $?; do \ @@ -1115,6 +1128,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; +$(srcdir)/Makefile.files $(srcdir)/Makefile.doxygen $(srcdir)/Makefile.javascript $(srcdir)/Makefile.unittests $(srcdir)/Makefile.flex $(srcdir)/Makefile.bison $(srcdir)/m4/Makefile.all-in-one-libev $(srcdir)/m4/Makefile.all-in-one-v8 $(srcdir)/m4/Makefile.all-in-one-mruby: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1126,10 +1140,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config/config.h: config/stamp-h1 - @if test ! -f $@; then \ - rm -f config/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ - else :; fi + @if test ! -f $@; then rm -f config/stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; else :; fi config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status @rm -f config/stamp-h1 @@ -1140,10 +1152,8 @@ $(top_srcdir)/config/config.h.in: $(am__configure_deps) touch $@ BasicsC/local-configuration.h: BasicsC/stamp-h2 - @if test ! -f $@; then \ - rm -f BasicsC/stamp-h2; \ - $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; \ - else :; fi + @if test ! -f $@; then rm -f BasicsC/stamp-h2; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) BasicsC/stamp-h2; else :; fi BasicsC/stamp-h2: $(top_srcdir)/BasicsC/local-configuration.h.in $(top_builddir)/config.status @rm -f BasicsC/stamp-h2 @@ -1447,7 +1457,7 @@ MRuby/MRLineEditor.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) MRuby/mr-utils.$(OBJEXT): MRuby/$(am__dirstamp) \ MRuby/$(DEPDIR)/$(am__dirstamp) -libavocado.a: $(libavocado_a_OBJECTS) $(libavocado_a_DEPENDENCIES) +libavocado.a: $(libavocado_a_OBJECTS) $(libavocado_a_DEPENDENCIES) $(EXTRA_libavocado_a_DEPENDENCIES) $(AM_V_at)-rm -f libavocado.a $(AM_V_AR)$(libavocado_a_AR) libavocado.a $(libavocado_a_OBJECTS) $(libavocado_a_LIBADD) $(AM_V_at)$(RANLIB) libavocado.a @@ -1557,6 +1567,9 @@ UnitTests/Philadelphia/string-buffer-test.$(OBJEXT): \ UnitTests/Philadelphia/string-utf8-test.$(OBJEXT): \ UnitTests/Philadelphia/$(am__dirstamp) \ UnitTests/Philadelphia/$(DEPDIR)/$(am__dirstamp) +UnitTests/Philadelphia/string-test.$(OBJEXT): \ + UnitTests/Philadelphia/$(am__dirstamp) \ + UnitTests/Philadelphia/$(DEPDIR)/$(am__dirstamp) UnitTests/Philadelphia/vector-pointer-test.$(OBJEXT): \ UnitTests/Philadelphia/$(am__dirstamp) \ UnitTests/Philadelphia/$(DEPDIR)/$(am__dirstamp) @@ -1575,7 +1588,7 @@ UnitTests/Jutland/StringBufferTest.$(OBJEXT): \ UnitTests/Jutland/StringUtilsTest.$(OBJEXT): \ UnitTests/Jutland/$(am__dirstamp) \ UnitTests/Jutland/$(DEPDIR)/$(am__dirstamp) -UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/basics_suite$(EXEEXT): $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_DEPENDENCIES) $(EXTRA_UnitTests_basics_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/basics_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_basics_suite_OBJECTS) $(UnitTests_basics_suite_LDADD) $(LIBS) UnitTests/Cambridge/$(am__dirstamp): @@ -1590,7 +1603,7 @@ UnitTests/Cambridge/Runner.$(OBJEXT): \ UnitTests/Cambridge/georeg.$(OBJEXT): \ UnitTests/Cambridge/$(am__dirstamp) \ UnitTests/Cambridge/$(DEPDIR)/$(am__dirstamp) -UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) +UnitTests/geo_suite$(EXEEXT): $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_DEPENDENCIES) $(EXTRA_UnitTests_geo_suite_DEPENDENCIES) UnitTests/$(am__dirstamp) @rm -f UnitTests/geo_suite$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(UnitTests_geo_suite_OBJECTS) $(UnitTests_geo_suite_LDADD) $(LIBS) Admin/$(am__dirstamp): @@ -1944,7 +1957,7 @@ VocBase/voc-shaper.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) VocBase/vocbase.$(OBJEXT): VocBase/$(am__dirstamp) \ VocBase/$(DEPDIR)/$(am__dirstamp) -avocado$(EXEEXT): $(avocado_OBJECTS) $(avocado_DEPENDENCIES) +avocado$(EXEEXT): $(avocado_OBJECTS) $(avocado_DEPENDENCIES) $(EXTRA_avocado_DEPENDENCIES) @rm -f avocado$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocado_OBJECTS) $(avocado_LDADD) $(LIBS) SimpleHttpClient/$(am__dirstamp): @@ -1971,7 +1984,7 @@ V8Client/V8ClientConnection.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) V8Client/avocimp.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -avocimp$(EXEEXT): $(avocimp_OBJECTS) $(avocimp_DEPENDENCIES) +avocimp$(EXEEXT): $(avocimp_OBJECTS) $(avocimp_DEPENDENCIES) $(EXTRA_avocimp_DEPENDENCIES) @rm -f avocimp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocimp_OBJECTS) $(avocimp_LDADD) $(LIBS) MRClient/$(am__dirstamp): @@ -1982,12 +1995,12 @@ MRClient/$(DEPDIR)/$(am__dirstamp): @: > MRClient/$(DEPDIR)/$(am__dirstamp) MRClient/avocirb.$(OBJEXT): MRClient/$(am__dirstamp) \ MRClient/$(DEPDIR)/$(am__dirstamp) -avocirb$(EXEEXT): $(avocirb_OBJECTS) $(avocirb_DEPENDENCIES) +avocirb$(EXEEXT): $(avocirb_OBJECTS) $(avocirb_DEPENDENCIES) $(EXTRA_avocirb_DEPENDENCIES) @rm -f avocirb$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocirb_OBJECTS) $(avocirb_LDADD) $(LIBS) V8Client/avocsh.$(OBJEXT): V8Client/$(am__dirstamp) \ V8Client/$(DEPDIR)/$(am__dirstamp) -avocsh$(EXEEXT): $(avocsh_OBJECTS) $(avocsh_DEPENDENCIES) +avocsh$(EXEEXT): $(avocsh_OBJECTS) $(avocsh_DEPENDENCIES) $(EXTRA_avocsh_DEPENDENCIES) @rm -f avocsh$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(avocsh_OBJECTS) $(avocsh_LDADD) $(LIBS) @@ -2162,6 +2175,7 @@ mostlyclean-compile: -rm -f UnitTests/Philadelphia/hashes-test.$(OBJEXT) -rm -f UnitTests/Philadelphia/json-test.$(OBJEXT) -rm -f UnitTests/Philadelphia/string-buffer-test.$(OBJEXT) + -rm -f UnitTests/Philadelphia/string-test.$(OBJEXT) -rm -f UnitTests/Philadelphia/string-utf8-test.$(OBJEXT) -rm -f UnitTests/Philadelphia/vector-pointer-test.$(OBJEXT) -rm -f UnitTests/Philadelphia/vector-test.$(OBJEXT) @@ -2410,6 +2424,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/hashes-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/json-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/string-buffer-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/string-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/string-utf8-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/vector-pointer-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@UnitTests/Philadelphia/$(DEPDIR)/vector-test.Po@am__quote@ @@ -2488,37 +2503,33 @@ distclean-compile: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-nobase_pkgdataDATA: $(nobase_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @@ -2539,9 +2550,7 @@ uninstall-nobase_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -2639,7 +2648,11 @@ dist-gzip: distdir $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir @@ -2647,7 +2660,7 @@ dist-lzma: distdir $(am__remove_distdir) dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir @@ -2678,6 +2691,8 @@ distcheck: dist bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -2697,6 +2712,7 @@ distcheck: dist && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -2725,8 +2741,16 @@ distcheck: dist list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -2761,10 +2785,15 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -2932,8 +2961,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-nobase_pkgdataDATA \ .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ clean-binPROGRAMS clean-generic clean-local \ clean-noinstLIBRARIES clean-noinstPROGRAMS clean-sbinPROGRAMS \ - ctags dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ - dist-tarZ dist-xz dist-zip distcheck distclean \ + ctags dist dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-compile distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ diff --git a/Makefile.unittests b/Makefile.unittests index 4a0c5120bb..7c73ba657b 100644 --- a/Makefile.unittests +++ b/Makefile.unittests @@ -105,6 +105,7 @@ UnitTests_basics_suite_SOURCES = \ UnitTests/Philadelphia/associative-pointer-test.cpp \ UnitTests/Philadelphia/string-buffer-test.cpp \ UnitTests/Philadelphia/string-utf8-test.cpp \ + UnitTests/Philadelphia/string-test.cpp \ UnitTests/Philadelphia/vector-pointer-test.cpp \ UnitTests/Philadelphia/vector-test.cpp \ UnitTests/Jutland/StringBufferTest.cpp \ diff --git a/UnitTests/Philadelphia/json-test.cpp b/UnitTests/Philadelphia/json-test.cpp index e5e8cf2732..eb55418ffc 100644 --- a/UnitTests/Philadelphia/json-test.cpp +++ b/UnitTests/Philadelphia/json-test.cpp @@ -292,7 +292,7 @@ BOOST_AUTO_TEST_CASE (tst_json_list_empty) { } //////////////////////////////////////////////////////////////////////////////// -/// @brief test empty json list mixed +/// @brief test json list mixed //////////////////////////////////////////////////////////////////////////////// BOOST_AUTO_TEST_CASE (tst_json_list_mixed) { @@ -305,9 +305,40 @@ BOOST_AUTO_TEST_CASE (tst_json_list_mixed) { TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, -8093)); TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1.5)); TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, TRI_CreateStringCopyJson(TRI_UNKNOWN_MEM_ZONE, (char*) "the quick brown fox")); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE)); STRINGIFY - BOOST_CHECK_EQUAL("[null,true,false,-8093,1.5,\"the quick brown fox\"]", STRING_VALUE); + BOOST_CHECK_EQUAL("[null,true,false,-8093,1.5,\"the quick brown fox\",[],{}]", STRING_VALUE); + FREE_JSON + FREE_BUFFER +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test json lists nested +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_json_list_nested) { + INIT_BUFFER + + TRI_json_t* json = TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* list1 = TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* list2 = TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* list3 = TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* list4 = TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE); + + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, list1, TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, true)); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, list1, TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, false)); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, list2, TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, -8093)); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, list2, TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1.5)); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, list3, TRI_CreateStringCopyJson(TRI_UNKNOWN_MEM_ZONE, (char*) "the quick brown fox")); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, list1); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, list2); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, list3); + TRI_PushBack3ListJson(TRI_UNKNOWN_MEM_ZONE, json, list4); + + STRINGIFY + BOOST_CHECK_EQUAL("[[true,false],[-8093,1.5],[\"the quick brown fox\"],[]]", STRING_VALUE); FREE_JSON FREE_BUFFER } @@ -327,6 +358,105 @@ BOOST_AUTO_TEST_CASE (tst_json_array_empty) { FREE_BUFFER } +//////////////////////////////////////////////////////////////////////////////// +/// @brief test json array mixed +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_json_array_mixed) { + INIT_BUFFER + + TRI_json_t* json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "one", TRI_CreateNullJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "two", TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, true)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "three", TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, false)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "four", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, -8093)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "five", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1.5)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "six", TRI_CreateStringCopyJson(TRI_UNKNOWN_MEM_ZONE, (char*) "the quick brown fox")); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "seven", TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "eight", TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE)); + + STRINGIFY + BOOST_CHECK_EQUAL("{\"one\":null,\"two\":true,\"three\":false,\"four\":-8093,\"five\":1.5,\"six\":\"the quick brown fox\",\"seven\":[],\"eight\":{}}", STRING_VALUE); + FREE_JSON + FREE_BUFFER +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test nested json array +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_json_array_nested) { + INIT_BUFFER + + TRI_json_t* json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* array1 = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* array2 = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* array3 = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_json_t* array4 = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array1, "one", TRI_CreateNullJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array1, "two", TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, true)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array1, "three", TRI_CreateBooleanJson(TRI_UNKNOWN_MEM_ZONE, false)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array2, "four", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, -8093)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array2, "five", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1.5)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array2, "six", TRI_CreateStringCopyJson(TRI_UNKNOWN_MEM_ZONE, (char*) "the quick brown fox")); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array3, "seven", TRI_CreateListJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, array3, "eight", TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "one", array1); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "two", array2); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "three", array3); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "four", array4); + + STRINGIFY + BOOST_CHECK_EQUAL("{\"one\":{\"one\":null,\"two\":true,\"three\":false},\"two\":{\"four\":-8093,\"five\":1.5,\"six\":\"the quick brown fox\"},\"three\":{\"seven\":[],\"eight\":{}},\"four\":{}}", STRING_VALUE); + FREE_JSON + FREE_BUFFER +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test json array keys +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_json_array_keys) { + INIT_BUFFER + + TRI_json_t* json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "\"quoted\"", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "'quoted'", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 2)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "\\slashed\\\"", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 3)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "white spaced", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 4)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "line\\nbreak", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 5)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 6)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, " ", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 7)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "null", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 8)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "true", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 9)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "false", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 10)); + + STRINGIFY + BOOST_CHECK_EQUAL("{\"\\\"quoted\\\"\":1,\"'quoted'\":2,\"\\\\slashed\\\\\\\"\":3,\"white spaced\":4,\"line\\\\nbreak\":5,\"\":6,\" \":7,\"null\":8,\"true\":9,\"false\":10}", STRING_VALUE); + FREE_JSON + FREE_BUFFER +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test utf8 json array keys +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_json_array_keys_utf8) { + INIT_BUFFER + + TRI_json_t* json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "äöüÄÖÜß", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 1)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "코리아닷컴", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 2)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "ジャパン", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 3)); + TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "мадридского", TRI_CreateNumberJson(TRI_UNKNOWN_MEM_ZONE, 4)); + + STRINGIFY + BOOST_CHECK_EQUAL("{\"\\u00E4\\u00F6\\u00FC\\u00C4\\u00D6\\u00DC\\u00DF\":1,\"\\uCF54\\uB9AC\\uC544\\uB2F7\\uCEF4\":2,\"\\u30B8\\u30E3\\u30D1\\u30F3\":3,\"\\u043C\\u0430\\u0434\\u0440\\u0438\\u0434\\u0441\\u043A\\u043E\\u0433\\u043E\":4}", STRING_VALUE); + + FREE_JSON + FREE_BUFFER +} + //////////////////////////////////////////////////////////////////////////////// /// @brief generate tests //////////////////////////////////////////////////////////////////////////////// diff --git a/UnitTests/Philadelphia/string-test.cpp b/UnitTests/Philadelphia/string-test.cpp new file mode 100644 index 0000000000..8435626921 --- /dev/null +++ b/UnitTests/Philadelphia/string-test.cpp @@ -0,0 +1,297 @@ +//////////////////////////////////////////////////////////////////////////////// +/// @brief test suite for string utility functions +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2012 triagens GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Jan Steemann +/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +#include + +#include "BasicsC/strings.h" + +// ----------------------------------------------------------------------------- +// --SECTION-- private macros +// ----------------------------------------------------------------------------- + +// ----------------------------------------------------------------------------- +// --SECTION-- private constants +// ----------------------------------------------------------------------------- + +// ----------------------------------------------------------------------------- +// --SECTION-- setup / tear-down +// ----------------------------------------------------------------------------- + +struct CStringSetup { + CStringSetup () { + BOOST_TEST_MESSAGE("setup string test"); + } + + ~CStringSetup () { + BOOST_TEST_MESSAGE("tear-down string test"); + } +}; + +// ----------------------------------------------------------------------------- +// --SECTION-- test suite +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief setup +//////////////////////////////////////////////////////////////////////////////// + +BOOST_FIXTURE_TEST_SUITE(CStringTest, CStringSetup) + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test lower casing (no changes) +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_lower_ascii_no_change) { + char* result; + + result = TRI_LowerAsciiString("this is supposed to stay the same"); + BOOST_CHECK_EQUAL("this is supposed to stay the same", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_LowerAsciiString("this is also supposed to stay the same"); + BOOST_CHECK_EQUAL("this is also supposed to stay the same", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // punctuation should not change + result = TRI_LowerAsciiString("01234567890,.;:-_#'+*~!\"§$%&/()[]{}=?\\|<>"); + BOOST_CHECK_EQUAL("01234567890,.;:-_#'+*~!\"§$%&/()[]{}=?\\|<>", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // whitespace should not change + result = TRI_LowerAsciiString(" \t \n \r \n"); + BOOST_CHECK_EQUAL(" \t \n \r \n", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // test an empty string + result = TRI_LowerAsciiString(""); + BOOST_CHECK_EQUAL("", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test lower casing +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_lower_ascii) { + char* result; + + result = TRI_LowerAsciiString("This MUST be converted into LOWER CASE!"); + BOOST_CHECK_EQUAL("this must be converted into lower case!", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_LowerAsciiString("SCREAMING OUT LOUD"); + BOOST_CHECK_EQUAL("screaming out loud", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test lower casing with non-ASCII +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_lower_ascii_non_ascii) { + char* result; + + result = TRI_LowerAsciiString("äöüÄÖÜß"); + BOOST_CHECK_EQUAL("äöüÄÖÜß", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_LowerAsciiString("코리아닷컴"); + BOOST_CHECK_EQUAL("코리아닷컴", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_LowerAsciiString("своих партнеров"); + BOOST_CHECK_EQUAL("своих партнеров", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test upper casing (no changes) +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_upper_ascii_no_change) { + char* result; + + result = TRI_UpperAsciiString("THIS IS SUPPOSED TO STAY THE SAME"); + BOOST_CHECK_EQUAL("THIS IS SUPPOSED TO STAY THE SAME", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_UpperAsciiString("THIS IS ALSO SUPPOSED TO STAY THE SAME"); + BOOST_CHECK_EQUAL("THIS IS ALSO SUPPOSED TO STAY THE SAME", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // punctuation should not change + result = TRI_UpperAsciiString("01234567890,.;:-_#'+*~!\"§$%&/()[]{}=?\\|<>"); + BOOST_CHECK_EQUAL("01234567890,.;:-_#'+*~!\"§$%&/()[]{}=?\\|<>", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // whitespace should not change + result = TRI_UpperAsciiString(" \t \n \r \n"); + BOOST_CHECK_EQUAL(" \t \n \r \n", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + // test an empty string + result = TRI_UpperAsciiString(""); + BOOST_CHECK_EQUAL("", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test upper casing +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_upper_ascii) { + char* result; + + result = TRI_UpperAsciiString("This must be converted into upper CASE!"); + BOOST_CHECK_EQUAL("THIS MUST BE CONVERTED INTO UPPER CASE!", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_UpperAsciiString("silently whispering"); + BOOST_CHECK_EQUAL("SILENTLY WHISPERING", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test upper casing with non-ASCII +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_upper_ascii_non_ascii) { + char* result; + + result = TRI_UpperAsciiString("äöüÄÖÜß"); + BOOST_CHECK_EQUAL("äöüÄÖÜß", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_UpperAsciiString("코리아닷컴"); + BOOST_CHECK_EQUAL("코리아닷컴", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); + + result = TRI_UpperAsciiString("своих партнеров"); + BOOST_CHECK_EQUAL("своих партнеров", result); + TRI_FreeString(TRI_CORE_MEM_ZONE, result); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test equal string +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_equal_string) { + BOOST_CHECK_EQUAL(true, TRI_EqualString("", "")); + BOOST_CHECK_EQUAL(true, TRI_EqualString(" ", " ")); + BOOST_CHECK_EQUAL(true, TRI_EqualString("a", "a")); + BOOST_CHECK_EQUAL(true, TRI_EqualString("the quick brown fox", "the quick brown fox")); + BOOST_CHECK_EQUAL(true, TRI_EqualString("The Quick Brown FOX", "The Quick Brown FOX")); + BOOST_CHECK_EQUAL(true, TRI_EqualString("\"\t\r\n ", "\"\t\r\n ")); + + BOOST_CHECK_EQUAL(false, TRI_EqualString("", " ")); + BOOST_CHECK_EQUAL(false, TRI_EqualString(" ", "")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("a", "")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("a", "a ")); + BOOST_CHECK_EQUAL(false, TRI_EqualString(" a", "a")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("A", "a")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("a", "A")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("", "0")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("0", "")); + BOOST_CHECK_EQUAL(false, TRI_EqualString(" ", "0")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("0", " ")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("case matters", "Case matters")); + BOOST_CHECK_EQUAL(false, TRI_EqualString("CASE matters", "CASE matterS")); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test case equal string +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_case_equal_string) { + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("", "")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString(" ", " ")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("a", "a")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("the quick brown fox", "the quick brown fox")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("The Quick Brown FOX", "The Quick Brown FOX")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("\"\t\r\n ", "\"\t\r\n ")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("A", "a")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("a", "A")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("case matters", "Case matters")); + BOOST_CHECK_EQUAL(true, TRI_CaseEqualString("CASE matters", "CASE matterS")); + + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("", " ")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString(" ", "")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("a", "")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("a", "a ")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString(" a", "a")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("", "0")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("0", "")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString(" ", "0")); + BOOST_CHECK_EQUAL(false, TRI_CaseEqualString("0", " ")); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test prefix string +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_CASE (tst_prefix_string) { + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the quick brown fox", "the")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the quick brown fox", "th")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the quick brown fox", "t")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the quick brown fox", "the q")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString(" the quick brown fox", " ")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the fox", "the fox")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("\t\r\n0", "\t")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("\t\r\n0", "\t\r")); + BOOST_CHECK_EQUAL(true, TRI_IsPrefixString("the fox", "")); + + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "The")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", " the")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "the quick")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "the q ")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "foo")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "a")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "quick")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "he quick")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "fox")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the quick brown fox", "T")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("The quick brown fox", "the")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("THE QUICK BROWN FOX", "The")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("THE QUICK BROWN FOX", "the")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("THE QUICK BROWN FOX", "THE quick")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString(" the quick brown fox", "the")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("the fox", " ")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("\r\n0", "\n")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("\r\n0", " ")); + BOOST_CHECK_EQUAL(false, TRI_IsPrefixString("", "the")); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @brief generate tests +//////////////////////////////////////////////////////////////////////////////// + +BOOST_AUTO_TEST_SUITE_END () + +// Local Variables: +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @\\}\\)" +// End: diff --git a/UnitTests/Philadelphia/string-utf8-test.cpp b/UnitTests/Philadelphia/string-utf8-test.cpp index 7651be8fac..6c71ff7b4d 100644 --- a/UnitTests/Philadelphia/string-utf8-test.cpp +++ b/UnitTests/Philadelphia/string-utf8-test.cpp @@ -53,7 +53,7 @@ struct CStringUtf8Setup { } ~CStringUtf8Setup () { - BOOST_TEST_MESSAGE("tear-downstring UTF8 test"); + BOOST_TEST_MESSAGE("tear-down string UTF8 test"); } };