File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -136,8 +136,8 @@ cat <<< '
136136#include "simdjson.h"
137137#include "simdjson.cpp"
138138int main(int argc, char *argv[]) {
139- if(argc < 3 ) {
140- std::cerr << "Please specify filenames " << std::endl;
139+ if(argc < 2 ) {
140+ std::cerr << "Please specify at least one file name. " << std::endl;
141141 }
142142 const char * filename = argv[1];
143143 simdjson::padded_string p = simdjson::get_corpus(filename);
@@ -147,6 +147,9 @@ int main(int argc, char *argv[]) {
147147 } else {
148148 std::cout << "build_parsed_json valid" << std::endl;
149149 }
150+ if(argc == 2) {
151+ return EXIT_SUCCESS;
152+ }
150153
151154 //JsonStream
152155 const char * filename2 = argv[2];
@@ -157,7 +160,7 @@ int main(int argc, char *argv[]) {
157160
158161 while (parse_res == simdjson::SUCCESS_AND_HAS_MORE) {
159162 parse_res = js.json_parse(pj2);
160- }
163+ }
161164
162165 if( ! pj2.is_valid()) {
163166 std::cout << "JsonStream not valid" << std::endl;
Original file line number Diff line number Diff line change @@ -198,7 +198,7 @@ bool ParsedJson::print_json(std::ostream &os) const {
198198 memcpy (&string_length, string_buf + payload, sizeof (uint32_t ));
199199 print_with_escapes (
200200 (const unsigned char *)(string_buf + payload + sizeof (uint32_t )),
201- string_length);
201+ os, string_length);
202202 os << ' "' ;
203203 break ;
204204 case ' l' : // we have a long int
Original file line number Diff line number Diff line change @@ -168,6 +168,36 @@ bool bad_example() {
168168 }
169169 return true ;
170170}
171+ // returns true if successful
172+ bool stable_test () {
173+ std::string json = " {"
174+ " \" Image\" :{"
175+ " \" Width\" :800,"
176+ " \" Height\" :600,"
177+ " \" Title\" :\" View from 15th Floor\" ,"
178+ " \" Thumbnail\" :{"
179+ " \" Url\" :\" http://www.example.com/image/481989943\" ,"
180+ " \" Height\" :125,"
181+ " \" Width\" :100"
182+ " },"
183+ " \" Animated\" :false,"
184+ " \" IDs\" :[116,943.3,234,38793]"
185+ " }"
186+ " }" ;
187+ simdjson::ParsedJson pj = simdjson::build_parsed_json (json);
188+ std::ostringstream myStream;
189+ if ( ! pj.print_json (myStream) ) {
190+ std::cout << " cannot print it out? " << std::endl;
191+ return false ;
192+ }
193+ std::string newjson = myStream.str ();
194+ if (json != newjson) {
195+ std::cout << " serialized json differs!" << std::endl;
196+ std::cout << json << std::endl;
197+ std::cout << newjson << std::endl;
198+ }
199+ return newjson == json;
200+ }
171201
172202// returns true if successful
173203bool navigate_test () {
@@ -295,6 +325,8 @@ bool skyprophet_test() {
295325
296326int main () {
297327 std::cout << " Running basic tests." << std::endl;
328+ if (!stable_test ())
329+ return EXIT_FAILURE;
298330 if (!bad_example ())
299331 return EXIT_FAILURE;
300332 if (!number_test_powers_of_two ())
You can’t perform that action at this time.
0 commit comments