module dud.pkgdescription.jsontests2; version(ExcessivJSONTests): import std.stdio; import std.file : readText; import std.format : format; import std.json; import dud.pkgdescription.duplicate : ddup = dup; import dud.pkgdescription.json; import dud.pkgdescription.output; import dud.pkgdescription.testhelper; import dud.pkgdescription.validation; import dud.pkgdescription.exception; import dud.pkgdescription; import dud.testdata; void main() { string[] dubs = () @trusted { return allDubJSONFiles(); }(); size_t[TestFailKind] failCnt; foreach(idx, f; dubs) { string input = readText(f); PackageDescription pkg; try { pkg = () @safe { return jsonToPackageDescription(input); }(); } catch(Exception e) { unRollException(e, f); incrementFailCnt(failCnt, TestFailKind.fromJsonOrig); continue; } JSONValue s = testToJson(pkg, f, failCnt); if(s == JSONValue.init) { incrementFailCnt(failCnt, TestFailKind.toJson); continue; } if(!fromJsonTest(s, pkg, f, failCnt)) { continue; } PackageDescription copy = ddupTest(pkg, f, failCnt); assert(pkg == copy, format("%s\nexp:\n%s\ngot:\n%s", f, pkg, copy)); } writefln("num files %s, %s", dubs.length, failCnt); }