Options class for test
diff --git a/src/jsontestrunner/main.cpp b/src/jsontestrunner/main.cpp
index 3ded3bd..5db8115 100644
--- a/src/jsontestrunner/main.cpp
+++ b/src/jsontestrunner/main.cpp
@@ -132,7 +132,8 @@
const std::string& kind,
const Json::Features& features,
bool parseOnly,
- Json::Value* root) {
+ Json::Value* root)
+{
Json::Reader reader(features);
bool parsingSuccessful = reader.parse(input, *root);
if (!parsingSuccessful) {
@@ -153,16 +154,31 @@
}
return 0;
}
-
-static int rewriteValueTree(const std::string& rewritePath,
- const Json::Value& root,
- std::string* rewrite) {
- // Json::FastWriter writer;
- // writer.enableYAMLCompatibility();
+// static std::string useFastWriter(Json::Value const& root) {
+// Json::FastWriter writer;
+// writer.enableYAMLCompatibility();
+// return writer.write(root);
+// }
+static std::string useStyledWriter(
+ Json::Value const& root)
+{
+ Json::StyledWriter writer;
+ return writer.write(root);
+}
+static std::string useStyledStreamWriter(
+ Json::Value const& root)
+{
Json::StyledStreamWriter writer;
std::ostringstream sout;
writer.write(sout, root);
- *rewrite = sout.str();
+ return sout.str();
+}
+static int rewriteValueTree(
+ const std::string& rewritePath,
+ const Json::Value& root,
+ std::string* rewrite)
+{
+ *rewrite = useStyledWriter(root);
FILE* fout = fopen(rewritePath.c_str(), "wt");
if (!fout) {
printf("Failed to create rewrite file: %s\n", rewritePath.c_str());
@@ -197,56 +213,56 @@
return 3;
}
-int parseCommandLine(int argc,
- const char* argv[],
- Json::Features& features,
- std::string& path,
- bool& parseOnly) {
- parseOnly = false;
+struct Options
+{
+ std::string path;
+ Json::Features features;
+ bool parseOnly;
+};
+static int parseCommandLine(
+ int argc, const char* argv[], Options* opts)
+{
+ opts->parseOnly = false;
if (argc < 2) {
return printUsage(argv);
}
-
int index = 1;
if (std::string(argv[1]) == "--json-checker") {
- features = Json::Features::strictMode();
- parseOnly = true;
+ opts->features = Json::Features::strictMode();
+ opts->parseOnly = true;
++index;
}
-
if (std::string(argv[1]) == "--json-config") {
printConfig();
return 3;
}
-
if (index == argc || index + 1 < argc) {
return printUsage(argv);
}
-
- path = argv[index];
+ opts->path = argv[index];
return 0;
}
-
+static void tryTest(Options const& opts)
+{
+}
int main(int argc, const char* argv[]) {
- std::string path;
- Json::Features features;
- bool parseOnly;
- int exitCode = parseCommandLine(argc, argv, features, path, parseOnly);
+ Options opts;
+ int exitCode = parseCommandLine(argc, argv, &opts);
if (exitCode != 0) {
return exitCode;
}
try {
- std::string input = readInputTestFile(path.c_str());
+ std::string input = readInputTestFile(opts.path.c_str());
if (input.empty()) {
- printf("Failed to read input or empty input: %s\n", path.c_str());
+ printf("Failed to read input or empty input: %s\n", opts.path.c_str());
return 3;
}
std::string basePath = removeSuffix(argv[1], ".json");
- if (!parseOnly && basePath.empty()) {
+ if (!opts.parseOnly && basePath.empty()) {
printf("Bad input path. Path does not end with '.expected':\n%s\n",
- path.c_str());
+ opts.path.c_str());
return 3;
}
@@ -256,8 +272,9 @@
Json::Value root;
exitCode = parseAndSaveValueTree(
- input, actualPath, "input", features, parseOnly, &root);
- if (exitCode || parseOnly) {
+ input, actualPath, "input",
+ opts.features, opts.parseOnly, &root);
+ if (exitCode || opts.parseOnly) {
return exitCode;
}
std::string rewrite;
@@ -267,7 +284,8 @@
}
Json::Value rewriteRoot;
exitCode = parseAndSaveValueTree(
- rewrite, rewriteActualPath, "rewrite", features, parseOnly, &rewriteRoot);
+ rewrite, rewriteActualPath, "rewrite",
+ opts.features, opts.parseOnly, &rewriteRoot);
if (exitCode) {
return exitCode;
}