From ef66b5a091e37c772bf06583c605a218bb10ab3f Mon Sep 17 00:00:00 2001 From: JackFirth Date: Fri, 20 Feb 2015 23:47:20 -0800 Subject: [PATCH] Add custom rackunit test definitions --- doc-coverage/export-tests.rkt | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 doc-coverage/export-tests.rkt diff --git a/doc-coverage/export-tests.rkt b/doc-coverage/export-tests.rkt new file mode 100644 index 0000000..1767ece --- /dev/null +++ b/doc-coverage/export-tests.rkt @@ -0,0 +1,44 @@ +#lang racket + +(require "export-lists.rkt" + "export-count.rkt" + rackunit) + +(provide check-all-documented + check-documented + check-documentation-ratio) + +(define-check (check-all-documented module-name) + (let* ([undocumented (module->undocumented-exported-names module-name)] + [num-undocumented (length undocumented)]) + (unless (zero? num-undocumented) + (fail-check (check-all-documented-message module-name num-undocumented undocumented))))) + +(define (check-all-documented-message module-name num-undocumented undocumented) + (string-append "Module " + (symbol->string module-name) + " has " + (number->string num-undocumented) + " undocumented bindings:\n\n" + (string-join (map symbol->string undocumented) + "\n"))) + +(define-check (check-documented module-name binding) + (unless (has-docs? module-name binding) + (fail-check + (string-append "Module " + (symbol->string module-name) + " does not document binding " + (symbol->string binding))))) + +(define-check (check-documentation-ratio module-name minimum-ratio) + (let ([actual-ratio (module-documentation-ratio module-name)]) + (unless (>= actual-ratio minimum-ratio) + (fail-check + (string-append "Module " + (symbol->string module-name) + " does not document at least " + (number->string (exact->inexact (* 100 minimum-ratio))) + "% of its bindings, only documents " + (number->string (exact->inexact (* 100 actual-ratio))) + "%"))))) \ No newline at end of file