diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..23d86e9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[haxe]": { + "editor.formatOnSave": true, + "editor.formatOnPaste": true + } +} \ No newline at end of file diff --git a/src/CsvToJson.hx b/src/CsvToJson.hx index 4c20b6a..fa02b69 100644 --- a/src/CsvToJson.hx +++ b/src/CsvToJson.hx @@ -55,7 +55,51 @@ class CsvToJson { }); } - return testRun; + return combineMultipleResults(testRun); + } + + static function combineMultipleResults(testRun:TestRun):TestRun { + var combinedResults:TestRun = { + haxeVersion: testRun.haxeVersion, + date: testRun.date, + targets: [] + } + + var seenNames:Array = []; + for (target in testRun.targets) { + if (seenNames.indexOf(target.name) >= 0) { + continue; + } + combinedResults.targets.push(buildTargetAverage(testRun, target.name)); + seenNames.push(target.name); + } + return combinedResults; + } + + static function buildTargetAverage(testRun:TestRun, name:String):TargetResult { + var values:Array = []; + var result:TargetResult = { + name: name, + inputLines: 0, + outputLines: 0, + time: 0 + }; + + var totalTime:Float = 0; + var count:Int = 0; + for (target in testRun.targets) { + if (target.name != name) { + continue; + } + totalTime += target.time; + count++; + } + if (count == 1) { + result.time = totalTime; + } else { + result.time = totalTime / count; + } + return result; } static function getHaxeVersion():String {