diff options
Diffstat (limited to 'stdlib/source/library/lux/test/tally.lux')
-rw-r--r-- | stdlib/source/library/lux/test/tally.lux | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/stdlib/source/library/lux/test/tally.lux b/stdlib/source/library/lux/test/tally.lux new file mode 100644 index 000000000..afbab607a --- /dev/null +++ b/stdlib/source/library/lux/test/tally.lux @@ -0,0 +1,45 @@ +(.require + [library + [lux (.except and) + [data + [collection + ["[0]" set (.only Set)]]] + [math + [number + ["n" nat]]] + [meta + ["[0]" symbol]]]] + [// + ["[0]" coverage (.only Coverage)]]) + +(type .public Tally + (Record + [#successes Nat + #failures Nat + #expected Coverage + #actual Coverage])) + +(def .public (and parameter subject) + (-> Tally Tally Tally) + [#successes (n.+ (the #successes parameter) (the #successes subject)) + #failures (n.+ (the #failures parameter) (the #failures subject)) + #expected (set.union (the #expected parameter) + (the #expected subject)) + #actual (set.union (the #actual parameter) + (the #actual subject))]) + +(def .public empty + Tally + [#successes 0 + #failures 0 + #expected (set.empty symbol.hash) + #actual (set.empty symbol.hash)]) + +(with_template [<name> <category>] + [(def .public <name> + Tally + (revised <category> .++ ..empty))] + + [success #successes] + [failure #failures] + ) |