ctags.rb 1.0.0 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile +2 -1
- data/README.md +49 -0
- data/Rakefile +19 -0
- data/bench.rb +28 -0
- data/ctags.rb.gemspec +1 -1
- data/ext/.gitignore +1 -1
- data/ext/extconf.rb +30 -6
- data/ext/vendor/exuberant-ctags/entry.c +70 -1
- data/ext/vendor/exuberant-ctags/main.c +68 -7
- data/ext/vendor/exuberant-ctags/options.c +12 -12
- data/ext/vendor/exuberant-ctags/options.h +1 -1
- data/ext/vendor/exuberant-ctags/parse.c +2 -2
- data/ext/vendor/exuberant-ctags/read.c +8 -3
- data/ext/vendor/exuberant-ctags/read.h +4 -1
- data/ext/vendor/exuberant-ctags/routines.c +31 -8
- data/ext/vendor/exuberant-ctags/ruby.c +62 -7
- data/ext/vendor/fmemopen/README.md +49 -0
- data/ext/vendor/fmemopen/fmemopen.c +92 -0
- data/ext/vendor/fmemopen/fmemopen.h +52 -0
- data/ext/vendor/jansson-2.5/CHANGES +554 -0
- data/ext/vendor/jansson-2.5/LICENSE +19 -0
- data/ext/vendor/jansson-2.5/Makefile.am +15 -0
- data/ext/vendor/jansson-2.5/Makefile.in +825 -0
- data/ext/vendor/jansson-2.5/README.rst +63 -0
- data/ext/vendor/jansson-2.5/aclocal.m4 +9674 -0
- data/ext/vendor/jansson-2.5/config.guess +1530 -0
- data/ext/vendor/jansson-2.5/config.h.in +84 -0
- data/ext/vendor/jansson-2.5/config.sub +1782 -0
- data/ext/vendor/jansson-2.5/configure +13931 -0
- data/ext/vendor/jansson-2.5/configure.ac +57 -0
- data/ext/vendor/jansson-2.5/depcomp +708 -0
- data/ext/vendor/jansson-2.5/doc/Makefile.am +20 -0
- data/ext/vendor/jansson-2.5/doc/Makefile.in +401 -0
- data/ext/vendor/jansson-2.5/doc/README +5 -0
- data/ext/vendor/jansson-2.5/doc/apiref.rst +1487 -0
- data/ext/vendor/jansson-2.5/doc/changes.rst +5 -0
- data/ext/vendor/jansson-2.5/doc/conf.py +217 -0
- data/ext/vendor/jansson-2.5/doc/conformance.rst +114 -0
- data/ext/vendor/jansson-2.5/doc/ext/refcounting.py +59 -0
- data/ext/vendor/jansson-2.5/doc/gettingstarted.rst +237 -0
- data/ext/vendor/jansson-2.5/doc/github_commits.c +192 -0
- data/ext/vendor/jansson-2.5/doc/index.rst +53 -0
- data/ext/vendor/jansson-2.5/doc/portability.rst +52 -0
- data/ext/vendor/jansson-2.5/doc/tutorial.rst +286 -0
- data/ext/vendor/jansson-2.5/doc/upgrading.rst +76 -0
- data/ext/vendor/jansson-2.5/install-sh +527 -0
- data/ext/vendor/jansson-2.5/jansson.pc.in +10 -0
- data/ext/vendor/jansson-2.5/ltmain.sh +9661 -0
- data/ext/vendor/jansson-2.5/missing +331 -0
- data/ext/vendor/jansson-2.5/src/Makefile.am +24 -0
- data/ext/vendor/jansson-2.5/src/Makefile.in +613 -0
- data/ext/vendor/jansson-2.5/src/dump.c +456 -0
- data/ext/vendor/jansson-2.5/src/error.c +63 -0
- data/ext/vendor/jansson-2.5/src/hashtable.c +360 -0
- data/ext/vendor/jansson-2.5/src/hashtable.h +180 -0
- data/ext/vendor/jansson-2.5/src/jansson.def +63 -0
- data/ext/vendor/jansson-2.5/src/jansson.h +281 -0
- data/ext/vendor/jansson-2.5/src/jansson_config.h +39 -0
- data/ext/vendor/jansson-2.5/src/jansson_config.h.in +39 -0
- data/ext/vendor/jansson-2.5/src/jansson_private.h +93 -0
- data/ext/vendor/jansson-2.5/src/load.c +1077 -0
- data/ext/vendor/jansson-2.5/src/memory.c +56 -0
- data/ext/vendor/jansson-2.5/src/pack_unpack.c +762 -0
- data/ext/vendor/jansson-2.5/src/strbuffer.c +116 -0
- data/ext/vendor/jansson-2.5/src/strbuffer.h +33 -0
- data/ext/vendor/jansson-2.5/src/strconv.c +134 -0
- data/ext/vendor/jansson-2.5/src/utf.c +190 -0
- data/ext/vendor/jansson-2.5/src/utf.h +39 -0
- data/ext/vendor/jansson-2.5/src/value.c +950 -0
- data/ext/vendor/jansson-2.5/test/Makefile.am +10 -0
- data/ext/vendor/jansson-2.5/test/Makefile.in +684 -0
- data/ext/vendor/jansson-2.5/test/bin/Makefile.am +5 -0
- data/ext/vendor/jansson-2.5/test/bin/Makefile.in +498 -0
- data/ext/vendor/jansson-2.5/test/bin/json_process.c +349 -0
- data/ext/vendor/jansson-2.5/test/run-suites +50 -0
- data/ext/vendor/jansson-2.5/test/scripts/run-tests.sh +100 -0
- data/ext/vendor/jansson-2.5/test/scripts/valgrind.sh +35 -0
- data/ext/vendor/jansson-2.5/test/suites/Makefile.am +2 -0
- data/ext/vendor/jansson-2.5/test/suites/Makefile.in +580 -0
- data/ext/vendor/jansson-2.5/test/suites/api/Makefile.am +34 -0
- data/ext/vendor/jansson-2.5/test/suites/api/Makefile.in +632 -0
- data/ext/vendor/jansson-2.5/test/suites/api/check-exports +23 -0
- data/ext/vendor/jansson-2.5/test/suites/api/run +36 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_array.c +432 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_copy.c +318 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_dump.c +190 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_dump_callback.c +81 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_equal.c +189 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_load.c +166 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_load_callback.c +75 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_loadb.c +36 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_memory_funcs.c +82 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_number.c +73 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_object.c +511 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_pack.c +283 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_simple.c +199 -0
- data/ext/vendor/jansson-2.5/test/suites/api/test_unpack.c +373 -0
- data/ext/vendor/jansson-2.5/test/suites/api/util.h +74 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/encoded-surrogate-half/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/encoded-surrogate-half/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-after-backslash/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-array/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-escape/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-escape/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-identifier/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-int/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-int/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-string/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-invalid-utf-8/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-invalid-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-utf-8-continuation-byte/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/not-in-unicode-range/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/not-in-unicode-range/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-3-byte-encoding/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-3-byte-encoding/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-4-byte-encoding/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-4-byte-encoding/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-ascii-encoding/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-ascii-encoding/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/restricted-utf-8/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/restricted-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/run +27 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/truncated-utf-8/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/truncated-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/apostrophe/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/apostrophe/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/ascii-unicode-identifier/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/ascii-unicode-identifier/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/brace-comma/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/brace-comma/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-comma/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-comma/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/empty/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/empty/input +0 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/escaped-null-byte-in-string/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/escaped-null-byte-in-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-array/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-multiline-array/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-multiline-array/input +6 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-after-newline/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-after-newline/input +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-at-the-end/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-at-the-end/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/integer-starting-with-zero/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/integer-starting-with-zero/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-escape/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-escape/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-identifier/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-identifier/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-integer/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-integer/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-real/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-real/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-second-surrogate/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-second-surrogate/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-second-surrogate/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/lone-second-surrogate/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/minus-sign-without-number/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/minus-sign-without-number/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/negative-integer-starting-with-zero/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/negative-integer-starting-with-zero/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/input +0 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/nostrip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/input +0 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/nostrip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/null/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-apostrophes/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-apostrophes/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-garbage-at-end/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-garbage-at-end/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-garbage-after-e/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-garbage-after-e/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-negative-overflow/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-negative-overflow/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-positive-overflow/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-positive-overflow/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-e/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-e/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-point/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-point/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/run +57 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/tab-character-in-string/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/tab-character-in-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-negative-integer/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-negative-integer/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-positive-integer/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-positive-integer/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/truncated-unicode-surrogate/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/truncated-unicode-surrogate/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unicode-identifier/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unicode-identifier/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-object-and-array/error +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-object-and-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/error.normal +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/error.strip +2 -0
- data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/env +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/input +5 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-array/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-object-in-array/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-object-in-array/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-object/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-object/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/empty-string/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/escaped-utf-control-char/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/escaped-utf-control-char/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/false/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/false/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-int/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-int/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-one/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-one/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-zero/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/negative-zero/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/null/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/null/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/one-byte-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/one-byte-utf-8/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-negative-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-negative-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-positive-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-positive-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-fraction-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-fraction-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-negative-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-negative-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-positive-exponent/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-positive-exponent/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-underflow/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/real-underflow/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/run +56 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/short-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/short-string/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-ascii-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-ascii-string/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-0/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-0/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-1/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-1/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-123/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-123/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-object/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-object/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-real/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/simple-real/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/string-escapes/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/string-escapes/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/three-byte-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/three-byte-utf-8/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/true/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/true/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/two-byte-utf-8/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/two-byte-utf-8/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/utf-8-string/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/utf-8-string/output +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/utf-surrogate-four-byte-encoding/input +1 -0
- data/ext/vendor/jansson-2.5/test/suites/valid/utf-surrogate-four-byte-encoding/output +1 -0
- data/ext/vendor/jansson-2.5/win32/jansson_config.h +39 -0
- data/ext/vendor/jansson-2.5/win32/vs2010/jansson.sln +20 -0
- data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj +108 -0
- data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj.filters +69 -0
- data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj.user +3 -0
- data/lib/ctags.cnf +2 -0
- data/lib/ctags/exuberant.rb +129 -17
- data/lib/ctags/version.rb +1 -1
- data/test/test_ctags.rb +14 -7
- metadata +350 -69
@@ -0,0 +1,318 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
|
3
|
+
*
|
4
|
+
* Jansson is free software; you can redistribute it and/or modify
|
5
|
+
* it under the terms of the MIT license. See LICENSE for details.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <string.h>
|
9
|
+
#include <jansson.h>
|
10
|
+
#include "util.h"
|
11
|
+
|
12
|
+
static void test_copy_simple(void)
|
13
|
+
{
|
14
|
+
json_t *value, *copy;
|
15
|
+
|
16
|
+
if(json_copy(NULL))
|
17
|
+
fail("copying NULL doesn't return NULL");
|
18
|
+
|
19
|
+
/* true */
|
20
|
+
value = json_true();
|
21
|
+
copy = json_copy(value);
|
22
|
+
if(value != copy)
|
23
|
+
fail("copying true failed");
|
24
|
+
json_decref(value);
|
25
|
+
json_decref(copy);
|
26
|
+
|
27
|
+
/* false */
|
28
|
+
value = json_false();
|
29
|
+
copy = json_copy(value);
|
30
|
+
if(value != copy)
|
31
|
+
fail("copying false failed");
|
32
|
+
json_decref(value);
|
33
|
+
json_decref(copy);
|
34
|
+
|
35
|
+
/* null */
|
36
|
+
value = json_null();
|
37
|
+
copy = json_copy(value);
|
38
|
+
if(value != copy)
|
39
|
+
fail("copying null failed");
|
40
|
+
json_decref(value);
|
41
|
+
json_decref(copy);
|
42
|
+
|
43
|
+
/* string */
|
44
|
+
value = json_string("foo");
|
45
|
+
if(!value)
|
46
|
+
fail("unable to create a string");
|
47
|
+
copy = json_copy(value);
|
48
|
+
if(!copy)
|
49
|
+
fail("unable to copy a string");
|
50
|
+
if(copy == value)
|
51
|
+
fail("copying a string doesn't copy");
|
52
|
+
if(!json_equal(copy, value))
|
53
|
+
fail("copying a string produces an inequal copy");
|
54
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
55
|
+
fail("invalid refcounts");
|
56
|
+
json_decref(value);
|
57
|
+
json_decref(copy);
|
58
|
+
|
59
|
+
/* integer */
|
60
|
+
value = json_integer(543);
|
61
|
+
if(!value)
|
62
|
+
fail("unable to create an integer");
|
63
|
+
copy = json_copy(value);
|
64
|
+
if(!copy)
|
65
|
+
fail("unable to copy an integer");
|
66
|
+
if(copy == value)
|
67
|
+
fail("copying an integer doesn't copy");
|
68
|
+
if(!json_equal(copy, value))
|
69
|
+
fail("copying an integer produces an inequal copy");
|
70
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
71
|
+
fail("invalid refcounts");
|
72
|
+
json_decref(value);
|
73
|
+
json_decref(copy);
|
74
|
+
|
75
|
+
/* real */
|
76
|
+
value = json_real(123e9);
|
77
|
+
if(!value)
|
78
|
+
fail("unable to create a real");
|
79
|
+
copy = json_copy(value);
|
80
|
+
if(!copy)
|
81
|
+
fail("unable to copy a real");
|
82
|
+
if(copy == value)
|
83
|
+
fail("copying a real doesn't copy");
|
84
|
+
if(!json_equal(copy, value))
|
85
|
+
fail("copying a real produces an inequal copy");
|
86
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
87
|
+
fail("invalid refcounts");
|
88
|
+
json_decref(value);
|
89
|
+
json_decref(copy);
|
90
|
+
}
|
91
|
+
|
92
|
+
static void test_deep_copy_simple(void)
|
93
|
+
{
|
94
|
+
json_t *value, *copy;
|
95
|
+
|
96
|
+
if(json_deep_copy(NULL))
|
97
|
+
fail("deep copying NULL doesn't return NULL");
|
98
|
+
|
99
|
+
/* true */
|
100
|
+
value = json_true();
|
101
|
+
copy = json_deep_copy(value);
|
102
|
+
if(value != copy)
|
103
|
+
fail("deep copying true failed");
|
104
|
+
json_decref(value);
|
105
|
+
json_decref(copy);
|
106
|
+
|
107
|
+
/* false */
|
108
|
+
value = json_false();
|
109
|
+
copy = json_deep_copy(value);
|
110
|
+
if(value != copy)
|
111
|
+
fail("deep copying false failed");
|
112
|
+
json_decref(value);
|
113
|
+
json_decref(copy);
|
114
|
+
|
115
|
+
/* null */
|
116
|
+
value = json_null();
|
117
|
+
copy = json_deep_copy(value);
|
118
|
+
if(value != copy)
|
119
|
+
fail("deep copying null failed");
|
120
|
+
json_decref(value);
|
121
|
+
json_decref(copy);
|
122
|
+
|
123
|
+
/* string */
|
124
|
+
value = json_string("foo");
|
125
|
+
if(!value)
|
126
|
+
fail("unable to create a string");
|
127
|
+
copy = json_deep_copy(value);
|
128
|
+
if(!copy)
|
129
|
+
fail("unable to deep copy a string");
|
130
|
+
if(copy == value)
|
131
|
+
fail("deep copying a string doesn't copy");
|
132
|
+
if(!json_equal(copy, value))
|
133
|
+
fail("deep copying a string produces an inequal copy");
|
134
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
135
|
+
fail("invalid refcounts");
|
136
|
+
json_decref(value);
|
137
|
+
json_decref(copy);
|
138
|
+
|
139
|
+
/* integer */
|
140
|
+
value = json_integer(543);
|
141
|
+
if(!value)
|
142
|
+
fail("unable to create an integer");
|
143
|
+
copy = json_deep_copy(value);
|
144
|
+
if(!copy)
|
145
|
+
fail("unable to deep copy an integer");
|
146
|
+
if(copy == value)
|
147
|
+
fail("deep copying an integer doesn't copy");
|
148
|
+
if(!json_equal(copy, value))
|
149
|
+
fail("deep copying an integer produces an inequal copy");
|
150
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
151
|
+
fail("invalid refcounts");
|
152
|
+
json_decref(value);
|
153
|
+
json_decref(copy);
|
154
|
+
|
155
|
+
/* real */
|
156
|
+
value = json_real(123e9);
|
157
|
+
if(!value)
|
158
|
+
fail("unable to create a real");
|
159
|
+
copy = json_deep_copy(value);
|
160
|
+
if(!copy)
|
161
|
+
fail("unable to deep copy a real");
|
162
|
+
if(copy == value)
|
163
|
+
fail("deep copying a real doesn't copy");
|
164
|
+
if(!json_equal(copy, value))
|
165
|
+
fail("deep copying a real produces an inequal copy");
|
166
|
+
if(value->refcount != 1 || copy->refcount != 1)
|
167
|
+
fail("invalid refcounts");
|
168
|
+
json_decref(value);
|
169
|
+
json_decref(copy);
|
170
|
+
}
|
171
|
+
|
172
|
+
static void test_copy_array(void)
|
173
|
+
{
|
174
|
+
const char *json_array_text = "[1, \"foo\", 3.141592, {\"foo\": \"bar\"}]";
|
175
|
+
|
176
|
+
json_t *array, *copy;
|
177
|
+
size_t i;
|
178
|
+
|
179
|
+
array = json_loads(json_array_text, 0, NULL);
|
180
|
+
if(!array)
|
181
|
+
fail("unable to parse an array");
|
182
|
+
|
183
|
+
copy = json_copy(array);
|
184
|
+
if(!copy)
|
185
|
+
fail("unable to copy an array");
|
186
|
+
if(copy == array)
|
187
|
+
fail("copying an array doesn't copy");
|
188
|
+
if(!json_equal(copy, array))
|
189
|
+
fail("copying an array produces an inequal copy");
|
190
|
+
|
191
|
+
for(i = 0; i < json_array_size(copy); i++)
|
192
|
+
{
|
193
|
+
if(json_array_get(array, i) != json_array_get(copy, i))
|
194
|
+
fail("copying an array modifies its elements");
|
195
|
+
}
|
196
|
+
|
197
|
+
json_decref(array);
|
198
|
+
json_decref(copy);
|
199
|
+
}
|
200
|
+
|
201
|
+
static void test_deep_copy_array(void)
|
202
|
+
{
|
203
|
+
const char *json_array_text = "[1, \"foo\", 3.141592, {\"foo\": \"bar\"}]";
|
204
|
+
|
205
|
+
json_t *array, *copy;
|
206
|
+
size_t i;
|
207
|
+
|
208
|
+
array = json_loads(json_array_text, 0, NULL);
|
209
|
+
if(!array)
|
210
|
+
fail("unable to parse an array");
|
211
|
+
|
212
|
+
copy = json_deep_copy(array);
|
213
|
+
if(!copy)
|
214
|
+
fail("unable to deep copy an array");
|
215
|
+
if(copy == array)
|
216
|
+
fail("deep copying an array doesn't copy");
|
217
|
+
if(!json_equal(copy, array))
|
218
|
+
fail("deep copying an array produces an inequal copy");
|
219
|
+
|
220
|
+
for(i = 0; i < json_array_size(copy); i++)
|
221
|
+
{
|
222
|
+
if(json_array_get(array, i) == json_array_get(copy, i))
|
223
|
+
fail("deep copying an array doesn't copy its elements");
|
224
|
+
}
|
225
|
+
|
226
|
+
json_decref(array);
|
227
|
+
json_decref(copy);
|
228
|
+
}
|
229
|
+
|
230
|
+
static void test_copy_object(void)
|
231
|
+
{
|
232
|
+
const char *json_object_text =
|
233
|
+
"{\"foo\": \"bar\", \"a\": 1, \"b\": 3.141592, \"c\": [1,2,3,4]}";
|
234
|
+
|
235
|
+
json_t *object, *copy;
|
236
|
+
void *iter;
|
237
|
+
|
238
|
+
object = json_loads(json_object_text, 0, NULL);
|
239
|
+
if(!object)
|
240
|
+
fail("unable to parse an object");
|
241
|
+
|
242
|
+
copy = json_copy(object);
|
243
|
+
if(!copy)
|
244
|
+
fail("unable to copy an object");
|
245
|
+
if(copy == object)
|
246
|
+
fail("copying an object doesn't copy");
|
247
|
+
if(!json_equal(copy, object))
|
248
|
+
fail("copying an object produces an inequal copy");
|
249
|
+
|
250
|
+
iter = json_object_iter(object);
|
251
|
+
while(iter)
|
252
|
+
{
|
253
|
+
const char *key;
|
254
|
+
json_t *value1, *value2;
|
255
|
+
|
256
|
+
key = json_object_iter_key(iter);
|
257
|
+
value1 = json_object_iter_value(iter);
|
258
|
+
value2 = json_object_get(copy, key);
|
259
|
+
|
260
|
+
if(value1 != value2)
|
261
|
+
fail("deep copying an object modifies its items");
|
262
|
+
|
263
|
+
iter = json_object_iter_next(object, iter);
|
264
|
+
}
|
265
|
+
|
266
|
+
json_decref(object);
|
267
|
+
json_decref(copy);
|
268
|
+
}
|
269
|
+
|
270
|
+
static void test_deep_copy_object(void)
|
271
|
+
{
|
272
|
+
const char *json_object_text =
|
273
|
+
"{\"foo\": \"bar\", \"a\": 1, \"b\": 3.141592, \"c\": [1,2,3,4]}";
|
274
|
+
|
275
|
+
json_t *object, *copy;
|
276
|
+
void *iter;
|
277
|
+
|
278
|
+
object = json_loads(json_object_text, 0, NULL);
|
279
|
+
if(!object)
|
280
|
+
fail("unable to parse an object");
|
281
|
+
|
282
|
+
copy = json_deep_copy(object);
|
283
|
+
if(!copy)
|
284
|
+
fail("unable to deep copy an object");
|
285
|
+
if(copy == object)
|
286
|
+
fail("deep copying an object doesn't copy");
|
287
|
+
if(!json_equal(copy, object))
|
288
|
+
fail("deep copying an object produces an inequal copy");
|
289
|
+
|
290
|
+
iter = json_object_iter(object);
|
291
|
+
while(iter)
|
292
|
+
{
|
293
|
+
const char *key;
|
294
|
+
json_t *value1, *value2;
|
295
|
+
|
296
|
+
key = json_object_iter_key(iter);
|
297
|
+
value1 = json_object_iter_value(iter);
|
298
|
+
value2 = json_object_get(copy, key);
|
299
|
+
|
300
|
+
if(value1 == value2)
|
301
|
+
fail("deep copying an object doesn't copy its items");
|
302
|
+
|
303
|
+
iter = json_object_iter_next(object, iter);
|
304
|
+
}
|
305
|
+
|
306
|
+
json_decref(object);
|
307
|
+
json_decref(copy);
|
308
|
+
}
|
309
|
+
|
310
|
+
static void run_tests()
|
311
|
+
{
|
312
|
+
test_copy_simple();
|
313
|
+
test_deep_copy_simple();
|
314
|
+
test_copy_array();
|
315
|
+
test_deep_copy_array();
|
316
|
+
test_copy_object();
|
317
|
+
test_deep_copy_object();
|
318
|
+
}
|
@@ -0,0 +1,190 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
|
3
|
+
*
|
4
|
+
* Jansson is free software; you can redistribute it and/or modify
|
5
|
+
* it under the terms of the MIT license. See LICENSE for details.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <jansson.h>
|
9
|
+
#include <string.h>
|
10
|
+
#include "util.h"
|
11
|
+
|
12
|
+
static int encode_null_callback(const char *buffer, size_t size, void *data)
|
13
|
+
{
|
14
|
+
(void)buffer;
|
15
|
+
(void)size;
|
16
|
+
(void)data;
|
17
|
+
return 0;
|
18
|
+
}
|
19
|
+
|
20
|
+
static void encode_null()
|
21
|
+
{
|
22
|
+
if(json_dumps(NULL, JSON_ENCODE_ANY) != NULL)
|
23
|
+
fail("json_dumps didn't fail for NULL");
|
24
|
+
|
25
|
+
if(json_dumpf(NULL, stderr, JSON_ENCODE_ANY) != -1)
|
26
|
+
fail("json_dumpf didn't fail for NULL");
|
27
|
+
|
28
|
+
/* Don't test json_dump_file to avoid creating a file */
|
29
|
+
|
30
|
+
if(json_dump_callback(NULL, encode_null_callback, NULL, JSON_ENCODE_ANY) != -1)
|
31
|
+
fail("json_dump_callback didn't fail for NULL");
|
32
|
+
}
|
33
|
+
|
34
|
+
|
35
|
+
static void encode_twice()
|
36
|
+
{
|
37
|
+
/* Encode an empty object/array, add an item, encode again */
|
38
|
+
|
39
|
+
json_t *json;
|
40
|
+
char *result;
|
41
|
+
|
42
|
+
json = json_object();
|
43
|
+
result = json_dumps(json, 0);
|
44
|
+
if(!result || strcmp(result, "{}"))
|
45
|
+
fail("json_dumps failed");
|
46
|
+
free(result);
|
47
|
+
|
48
|
+
json_object_set_new(json, "foo", json_integer(5));
|
49
|
+
result = json_dumps(json, 0);
|
50
|
+
if(!result || strcmp(result, "{\"foo\": 5}"))
|
51
|
+
fail("json_dumps failed");
|
52
|
+
free(result);
|
53
|
+
|
54
|
+
json_decref(json);
|
55
|
+
|
56
|
+
json = json_array();
|
57
|
+
result = json_dumps(json, 0);
|
58
|
+
if(!result || strcmp(result, "[]"))
|
59
|
+
fail("json_dumps failed");
|
60
|
+
free(result);
|
61
|
+
|
62
|
+
json_array_append_new(json, json_integer(5));
|
63
|
+
result = json_dumps(json, 0);
|
64
|
+
if(!result || strcmp(result, "[5]"))
|
65
|
+
fail("json_dumps failed");
|
66
|
+
free(result);
|
67
|
+
|
68
|
+
json_decref(json);
|
69
|
+
}
|
70
|
+
|
71
|
+
static void circular_references()
|
72
|
+
{
|
73
|
+
/* Construct a JSON object/array with a circular reference:
|
74
|
+
|
75
|
+
object: {"a": {"b": {"c": <circular reference to $.a>}}}
|
76
|
+
array: [[[<circular reference to the $[0] array>]]]
|
77
|
+
|
78
|
+
Encode it, remove the circular reference and encode again.
|
79
|
+
*/
|
80
|
+
|
81
|
+
json_t *json;
|
82
|
+
char *result;
|
83
|
+
|
84
|
+
json = json_object();
|
85
|
+
json_object_set_new(json, "a", json_object());
|
86
|
+
json_object_set_new(json_object_get(json, "a"), "b", json_object());
|
87
|
+
json_object_set(json_object_get(json_object_get(json, "a"), "b"), "c",
|
88
|
+
json_object_get(json, "a"));
|
89
|
+
|
90
|
+
if(json_dumps(json, 0))
|
91
|
+
fail("json_dumps encoded a circular reference!");
|
92
|
+
|
93
|
+
json_object_del(json_object_get(json_object_get(json, "a"), "b"), "c");
|
94
|
+
|
95
|
+
result = json_dumps(json, 0);
|
96
|
+
if(!result || strcmp(result, "{\"a\": {\"b\": {}}}"))
|
97
|
+
fail("json_dumps failed!");
|
98
|
+
free(result);
|
99
|
+
|
100
|
+
json_decref(json);
|
101
|
+
|
102
|
+
json = json_array();
|
103
|
+
json_array_append_new(json, json_array());
|
104
|
+
json_array_append_new(json_array_get(json, 0), json_array());
|
105
|
+
json_array_append(json_array_get(json_array_get(json, 0), 0),
|
106
|
+
json_array_get(json, 0));
|
107
|
+
|
108
|
+
if(json_dumps(json, 0))
|
109
|
+
fail("json_dumps encoded a circular reference!");
|
110
|
+
|
111
|
+
json_array_remove(json_array_get(json_array_get(json, 0), 0), 0);
|
112
|
+
|
113
|
+
result = json_dumps(json, 0);
|
114
|
+
if(!result || strcmp(result, "[[[]]]"))
|
115
|
+
fail("json_dumps failed!");
|
116
|
+
free(result);
|
117
|
+
|
118
|
+
json_decref(json);
|
119
|
+
}
|
120
|
+
|
121
|
+
static void encode_other_than_array_or_object()
|
122
|
+
{
|
123
|
+
/* Encoding anything other than array or object should only
|
124
|
+
* succeed if the JSON_ENCODE_ANY flag is used */
|
125
|
+
|
126
|
+
json_t *json;
|
127
|
+
FILE *fp = NULL;
|
128
|
+
char *result;
|
129
|
+
|
130
|
+
json = json_string("foo");
|
131
|
+
if(json_dumps(json, 0) != NULL)
|
132
|
+
fail("json_dumps encoded a string!");
|
133
|
+
if(json_dumpf(json, fp, 0) == 0)
|
134
|
+
fail("json_dumpf encoded a string!");
|
135
|
+
|
136
|
+
result = json_dumps(json, JSON_ENCODE_ANY);
|
137
|
+
if(!result || strcmp(result, "\"foo\"") != 0)
|
138
|
+
fail("json_dumps failed to encode a string with JSON_ENCODE_ANY");
|
139
|
+
|
140
|
+
free(result);
|
141
|
+
json_decref(json);
|
142
|
+
|
143
|
+
json = json_integer(42);
|
144
|
+
if(json_dumps(json, 0) != NULL)
|
145
|
+
fail("json_dumps encoded an integer!");
|
146
|
+
if(json_dumpf(json, fp, 0) == 0)
|
147
|
+
fail("json_dumpf encoded an integer!");
|
148
|
+
|
149
|
+
result = json_dumps(json, JSON_ENCODE_ANY);
|
150
|
+
if(!result || strcmp(result, "42") != 0)
|
151
|
+
fail("json_dumps failed to encode an integer with JSON_ENCODE_ANY");
|
152
|
+
|
153
|
+
free(result);
|
154
|
+
json_decref(json);
|
155
|
+
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
static void escape_slashes()
|
160
|
+
{
|
161
|
+
/* Test dump escaping slashes */
|
162
|
+
|
163
|
+
json_t *json;
|
164
|
+
char *result;
|
165
|
+
|
166
|
+
json = json_object();
|
167
|
+
json_object_set_new(json, "url", json_string("https://github.com/akheron/jansson"));
|
168
|
+
|
169
|
+
result = json_dumps(json, 0);
|
170
|
+
if(!result || strcmp(result, "{\"url\": \"https://github.com/akheron/jansson\"}"))
|
171
|
+
fail("json_dumps failed to not escape slashes");
|
172
|
+
|
173
|
+
free(result);
|
174
|
+
|
175
|
+
result = json_dumps(json, JSON_ESCAPE_SLASH);
|
176
|
+
if(!result || strcmp(result, "{\"url\": \"https:\\/\\/github.com\\/akheron\\/jansson\"}"))
|
177
|
+
fail("json_dumps failed to escape slashes");
|
178
|
+
|
179
|
+
free(result);
|
180
|
+
json_decref(json);
|
181
|
+
}
|
182
|
+
|
183
|
+
static void run_tests()
|
184
|
+
{
|
185
|
+
encode_null();
|
186
|
+
encode_twice();
|
187
|
+
circular_references();
|
188
|
+
encode_other_than_array_or_object();
|
189
|
+
escape_slashes();
|
190
|
+
}
|