+ fun div(a,b:Int):String
+ do
+ if b == 0 then return "n/a"
+ return ((a*10000/b).to_f / 100.0).to_precision(2)
+ end
+
+ fun display_stats
+ do
+ if self.modelbuilder.toolcontext.opt_typing_test_metrics.value then
+ print "# static count_type_test"
+ print "\tresolved:\tunresolved\tskipped\ttotal"
+ var count_type_test_total = init_count_type_test_tags
+ count_type_test_resolved["total"] = 0
+ count_type_test_unresolved["total"] = 0
+ count_type_test_skipped["total"] = 0
+ count_type_test_total["total"] = 0
+ for tag in count_type_test_tags do
+ count_type_test_total[tag] = count_type_test_resolved[tag] + count_type_test_unresolved[tag] + count_type_test_skipped[tag]
+ count_type_test_resolved["total"] += count_type_test_resolved[tag]
+ count_type_test_unresolved["total"] += count_type_test_unresolved[tag]
+ count_type_test_skipped["total"] += count_type_test_skipped[tag]
+ count_type_test_total["total"] += count_type_test_total[tag]
+ end
+ var count_type_test = count_type_test_total["total"]
+ var tags = count_type_test_tags.to_a
+ tags.add("total")
+ for tag in tags do
+ printn tag
+ printn "\t{count_type_test_resolved[tag]} ({div(count_type_test_resolved[tag],count_type_test)}%)"
+ printn "\t{count_type_test_unresolved[tag]} ({div(count_type_test_unresolved[tag],count_type_test)}%)"
+ printn "\t{count_type_test_skipped[tag]} ({div(count_type_test_skipped[tag],count_type_test)}%)"
+ printn "\t{count_type_test_total[tag]} ({div(count_type_test_total[tag],count_type_test)}%)"
+ print ""
+ end
+ end
+ end
+