emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/haskell-tng-mode b3e6c9a 113/385: compilation mode regress


From: ELPA Syncer
Subject: [nongnu] elpa/haskell-tng-mode b3e6c9a 113/385: compilation mode regression tests vs haskell-mode
Date: Tue, 5 Oct 2021 23:59:12 -0400 (EDT)

branch: elpa/haskell-tng-mode
commit b3e6c9a6d7aaa089af16829f0d50f1ccd2151e3a
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>

    compilation mode regression tests vs haskell-mode
---
 Cask                                          |    1 +
 haskell-tng-compile.el                        |   17 +-
 haskell-tng-mode.el                           |    1 +
 test/haskell-tng-compile-test.el              |   76 +
 test/haskell-tng-font-lock-test.el            |    7 +-
 test/haskell-tng-testutils.el                 |   22 +-
 test/src/ghc-8.4.4-error.compile.faceup       |   23 +
 test/src/ghc-8.4.4-errorspan.compile          |   21 +
 test/src/ghc-8.4.4-errorspan.compile.faceup   |   21 +
 test/src/ghc-8.4.4-warning.compile.faceup     |   29 +
 test/src/ghc-8.4.4-warningspan.compile        |   29 +
 test/src/ghc-8.4.4-warningspan.compile.faceup |   29 +
 test/src/hspec-failure.compile.faceup         |  743 +++++++
 test/src/tasty-failure.compile.faceup         | 2756 +++++++++++++++++++++++++
 14 files changed, 3758 insertions(+), 17 deletions(-)

diff --git a/Cask b/Cask
index 13a428a..7831baf 100644
--- a/Cask
+++ b/Cask
@@ -26,6 +26,7 @@
 
 (development
  (depends-on "faceup")
+ (depends-on "haskell-mode") ;; regression testing
  (depends-on "ert-runner")
  (depends-on "undercover"))
 
diff --git a/haskell-tng-compile.el b/haskell-tng-compile.el
index 3625f3a..019729a 100644
--- a/haskell-tng-compile.el
+++ b/haskell-tng-compile.el
@@ -14,16 +14,21 @@
 (require 'ansi-color)
 
 ;; FIXME implement batch compilation
-
 ;; TODO prettify-symbol rules for home dirs and project dirs, etc
+;; TODO set compilation-directory when opening the file
+;; TODO set compilation-environment to include TASTY envvars
 
-(defvar haskell-tng-compile:regexp-alist
-)
+(defvar haskell-tng-compile-error-regexp-alist
+  "The `compilation-error-regexp-alist' for `haskell-tng'."
+  nil
+  )
 
-;;(define-compilation-mode )
+(defun haskell-tng-compile:ansi-color ()
+  (ansi-color-apply-on-region compilation-filter-start (point-max)))
 
-;; FIXME how to test batch compilation? Canned responses for the errors and
-;;       perhaps an interactive call on a small no-dep project, like ffunctor.
+(define-compilation-mode haskell-tng-compilation-mode "haskell-tng-compilation"
+  (add-hook 'compilation-filter-hook
+            'haskell-tng-compile:ansi-color nil t))
 
 (provide 'haskell-tng-compile)
 ;;; haskell-tng-compile.el ends here
diff --git a/haskell-tng-mode.el b/haskell-tng-mode.el
index 6c0ce9d..8047f9e 100644
--- a/haskell-tng-mode.el
+++ b/haskell-tng-mode.el
@@ -19,6 +19,7 @@
 (require 'haskell-tng-syntax)
 (require 'haskell-tng-font-lock)
 (require 'haskell-tng-smie)
+(require 'haskell-tng-compile)
 
 (defgroup haskell-tng ()
   "Haskell support: The Next Generation."
diff --git a/test/haskell-tng-compile-test.el b/test/haskell-tng-compile-test.el
new file mode 100644
index 0000000..fe0e775
--- /dev/null
+++ b/test/haskell-tng-compile-test.el
@@ -0,0 +1,76 @@
+;;; haskell-tng-compile-test.el --- Tests for compilation mode -*- 
lexical-binding: t -*-
+
+;; Copyright (C) 2019 Tseen She
+;; License: GPL 3 or any later version
+
+(require 'ert)
+(require 'dash)
+(require 'faceup)
+
+(require 'haskell-compile)
+
+(require 'haskell-tng-mode)
+(require 'haskell-tng-testutils
+         "test/haskell-tng-testutils.el")
+
+(defun have-expected-errors (file)
+  (with-temp-buffer
+    (let ((output (current-buffer))
+          ;; compilation-mode uses font-lock-face, not face
+          (faceup-default-property 'font-lock-face)
+          ;; maybe add compilation-message ?
+          ;; maybe add overlays ?
+          (faceup-properties '(font-lock-face)))
+      (compilation-start
+       (format "cat %s" file)
+       'haskell-compilation-mode
+       (lambda (_) output))
+
+      (while compilation-in-progress
+        (sit-for 0.01))
+      (haskell-tng-compile:clean-output)
+
+      ;; (font-lock-fontify-region (point-min) (point-max))
+      ;; (--dotimes (point-max)
+      ;;   (let ((p (+ 1 it)))
+      ;;     (message "POINT=%s PROPS=%S" p (text-properties-at p))))
+
+      (haskell-tng-testutils:assert-file-contents
+       file
+       output
+       #'buffer-to-faceup-string
+       "faceup"))))
+
+(defun haskell-tng-compile:clean-output ()
+  "Removes timestamps and local file paths"
+  (let ((inhibit-read-only t))
+    (goto-char (point-min))
+    (kill-line 4)
+    (goto-char (point-max))
+    (kill-line -2)))
+
+;; to generate .faceup files, use faceup-view-buffer
+(ert-deftest haskell-tng-compile-errors-file-tests ()
+  (should (have-expected-errors (testdata "src/ghc-8.4.4-error.compile")))
+  (should (have-expected-errors (testdata "src/ghc-8.4.4-errorspan.compile"))))
+
+(ert-deftest haskell-tng-compile-warnings-file-tests ()
+  (should (have-expected-errors (testdata "src/ghc-8.4.4-warning.compile")))
+  (should (have-expected-errors (testdata 
"src/ghc-8.4.4-warningspan.compile"))))
+
+(ert-deftest haskell-tng-compile-hspec-file-tests ()
+  (should (have-expected-errors (testdata "src/hspec-failure.compile"))))
+
+(ert-deftest haskell-tng-compile-tasty-file-tests ()
+  ;; TODO assert on ansi colours, implemented with overlays
+  ;;
+  ;; There is an overlay here:
+  ;;  From 11527 to 11714
+  ;;   face                 (foreground-color . "red3")
+  ;;   insert-behind-hooks  (ansi-color-freeze-overlay)
+  ;;   modification-hooks   (ansi-color-freeze-overlay)
+  ;; There are text properties here:
+  ;;   fontified            t
+  (should (have-expected-errors (testdata "src/tasty-failure.compile"))))
+
+;;; haskell-tng-compile-test.el ends here
diff --git a/test/haskell-tng-font-lock-test.el 
b/test/haskell-tng-font-lock-test.el
index e4af4b9..0f4267b 100644
--- a/test/haskell-tng-font-lock-test.el
+++ b/test/haskell-tng-font-lock-test.el
@@ -10,16 +10,11 @@
 (require 'haskell-tng-testutils
          "test/haskell-tng-testutils.el")
 
-;; Not using `faceup-defexplainer' because it doesn't write over files.
-(defun haskell-tng-font-lock-test:parse-to-string ()
-  (font-lock-fontify-region (point-min) (point-max))
-  (faceup-markup-buffer))
-
 (defun have-expected-faces (file)
   (haskell-tng-testutils:assert-file-contents
    file
    #'haskell-tng-mode
-   #'haskell-tng-font-lock-test:parse-to-string
+   #'buffer-to-faceup-string
    "faceup"))
 
 ;; to generate .faceup files, use faceup-view-buffer
diff --git a/test/haskell-tng-testutils.el b/test/haskell-tng-testutils.el
index e2546b5..d4371ce 100644
--- a/test/haskell-tng-testutils.el
+++ b/test/haskell-tng-testutils.el
@@ -19,16 +19,23 @@
     (file mode to-string suffix)
   "For FILE, enable MODE and run TO-STRING and compare with the golden data in 
FILE.SUFFIX.
 
-Will fail and write out the expected version to FILE.SUFFIX."
+Will fail and write out the expected version to FILE.SUFFIX.
+
+Alternatively, if MODE is a buffer object, run TO-STRING there instead."
   (let* ((golden (concat file "." suffix))
          (expected (with-temp-buffer
                      (when (file-exists-p golden)
                        (insert-file-contents golden))
                      (buffer-string)))
-         (got (with-temp-buffer
-                (insert-file-contents file)
-                (funcall mode)
-                (funcall to-string))))
+         (got (cond
+               ((bufferp mode)
+                (with-current-buffer mode
+                  (funcall to-string)))
+               (t
+                (with-temp-buffer
+                  (insert-file-contents file)
+                  (funcall mode)
+                  (funcall to-string))))))
     (or (equal got expected)
         ;; writes out the new version on failure
         (progn
@@ -48,5 +55,10 @@ Will fail and write out the expected version to FILE.SUFFIX."
            (looking-back "-" 1)))
   )
 
+;; Not using `faceup-defexplainer' because it doesn't write over files.
+(defun buffer-to-faceup-string ()
+  (font-lock-fontify-region (point-min) (point-max))
+  (faceup-markup-buffer))
+
 (provide 'haskell-tng-testutils)
 ;;; haskell-tng-testutils.el ends here
diff --git a/test/src/ghc-8.4.4-error.compile.faceup 
b/test/src/ghc-8.4.4-error.compile.faceup
new file mode 100644
index 0000000..030818c
--- /dev/null
+++ b/test/src/ghc-8.4.4-error.compile.faceup
@@ -0,0 +1,23 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage ( 
lib/StackageToHackage/Stackage.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/noopt/build/StackageToHackage/Stackage.o
 )
+[2 of 2] Compiling StackageToHackage.Hackage ( 
lib/StackageToHackage/Hackage.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/noopt/build/StackageToHackage/Hackage.o
 )
+
+«U:«:compilation-error:lib/StackageToHackage/Hackage.hs»:«:compilation-line-number:33»:«:compilation-column-number:16»:»
 error:
+    parse error on input ‘=’
+    Perhaps you need a 'let' in a 'do' block?
+    e.g. 'let x = 5' instead of 'x = 5'
+   |
+33 |       resolver = sconcat resolvers
+   |                ^
+cabal: Failed to build stackage-to-hackage-1.1.0 (which is required by
+exe:stackage-to-hackage from stackage-to-hackage-1.1.0 and exe:stack2cabal
+from stack2cabal-1.0.2).
+
diff --git a/test/src/ghc-8.4.4-errorspan.compile 
b/test/src/ghc-8.4.4-errorspan.compile
new file mode 100644
index 0000000..ce001bb
--- /dev/null
+++ b/test/src/ghc-8.4.4-errorspan.compile
@@ -0,0 +1,21 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage
+[2 of 2] Compiling StackageToHackage.Hackage
+
+lib/StackageToHackage/Hackage.hs:35:16-18: error:
+    parse error on input ‘...’
+   |
+35 |       freeze = ...
+   |                ^^^
+cabal: Failed to build stackage-to-hackage-1.1.0 (which is required by
+exe:stackage-to-hackage from stackage-to-hackage-1.1.0 and exe:stack2cabal
+from stack2cabal-1.0.2).
+
diff --git a/test/src/ghc-8.4.4-errorspan.compile.faceup 
b/test/src/ghc-8.4.4-errorspan.compile.faceup
new file mode 100644
index 0000000..aca64c8
--- /dev/null
+++ b/test/src/ghc-8.4.4-errorspan.compile.faceup
@@ -0,0 +1,21 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage
+[2 of 2] Compiling StackageToHackage.Hackage
+
+«U:«:compilation-error:lib/StackageToHackage/Hackage.hs»:«:compilation-line-number:35»:«:compilation-column-number:16»-«:compilation-column-number:18»:»
 error:
+    parse error on input ‘...’
+   |
+35 |       freeze = ...
+   |                ^^^
+cabal: Failed to build stackage-to-hackage-1.1.0 (which is required by
+exe:stackage-to-hackage from stackage-to-hackage-1.1.0 and exe:stack2cabal
+from stack2cabal-1.0.2).
+
diff --git a/test/src/ghc-8.4.4-warning.compile.faceup 
b/test/src/ghc-8.4.4-warning.compile.faceup
new file mode 100644
index 0000000..734a22e
--- /dev/null
+++ b/test/src/ghc-8.4.4-warning.compile.faceup
@@ -0,0 +1,29 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage ( 
lib/StackageToHackage/Stackage.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/noopt/build/StackageToHackage/Stackage.o
 )
+[2 of 2] Compiling StackageToHackage.Hackage ( 
lib/StackageToHackage/Hackage.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/noopt/build/StackageToHackage/Hackage.o
 )
+
+«U:«:compilation-warning:lib/StackageToHackage/Hackage.hs»:«:compilation-line-number:13»:«:compilation-column-number:1»:
 warning:» [-Wunused-imports]
+    The qualified import of ‘Data.ByteString’ is redundant
+      except perhaps to import instances from ‘Data.ByteString’
+    To import instances alone, use: import Data.ByteString()
+   |
+13 | import qualified Data.ByteString              as BS
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Configuring executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Configuring executable 'stack2cabal' for stack2cabal-1.0.2..
+Preprocessing executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Building executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Preprocessing executable 'stack2cabal' for stack2cabal-1.0.2..
+Building executable 'stack2cabal' for stack2cabal-1.0.2..
+[1 of 1] Compiling Main             ( exe/Main.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/x/stackage-to-hackage/noopt/build/stackage-to-hackage/stackage-to-hackage-tmp/Main.o
 )
+[1 of 1] Compiling Main             ( exe/Main.hs, 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stack2cabal-1.0.2/x/stack2cabal/noopt/build/stack2cabal/stack2cabal-tmp/Main.o
 )
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stack2cabal-1.0.2/x/stack2cabal/noopt/build/stack2cabal/stack2cabal
 ...
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/x/stackage-to-hackage/noopt/build/stackage-to-hackage/stackage-to-hackage
 ...
diff --git a/test/src/ghc-8.4.4-warningspan.compile 
b/test/src/ghc-8.4.4-warningspan.compile
new file mode 100644
index 0000000..8cfa92a
--- /dev/null
+++ b/test/src/ghc-8.4.4-warningspan.compile
@@ -0,0 +1,29 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage
+[2 of 2] Compiling StackageToHackage.Hackage
+
+lib/StackageToHackage/Hackage.hs:13:1-51: warning: [-Wunused-imports]
+    The qualified import of ‘Data.ByteString’ is redundant
+      except perhaps to import instances from ‘Data.ByteString’
+    To import instances alone, use: import Data.ByteString()
+   |
+13 | import qualified Data.ByteString              as BS
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Configuring executable 'stack2cabal' for stack2cabal-1.0.2..
+Configuring executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Preprocessing executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Building executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Preprocessing executable 'stack2cabal' for stack2cabal-1.0.2..
+Building executable 'stack2cabal' for stack2cabal-1.0.2..
+[1 of 1] Compiling Main
+[1 of 1] Compiling Main
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/x/stackage-to-hackage/noopt/build/stackage-to-hackage/stackage-to-hackage
 ...
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stack2cabal-1.0.2/x/stack2cabal/noopt/build/stack2cabal/stack2cabal
 ...
diff --git a/test/src/ghc-8.4.4-warningspan.compile.faceup 
b/test/src/ghc-8.4.4-warningspan.compile.faceup
new file mode 100644
index 0000000..b2bcd41
--- /dev/null
+++ b/test/src/ghc-8.4.4-warningspan.compile.faceup
@@ -0,0 +1,29 @@
+Resolving dependencies...
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - stackage-to-hackage-1.1.0 (lib) (first run)
+ - stackage-to-hackage-1.1.0 (exe:stackage-to-hackage) (first run)
+ - stack2cabal-1.0.2 (exe:stack2cabal) (first run)
+Configuring library for stackage-to-hackage-1.1.0..
+Preprocessing library for stackage-to-hackage-1.1.0..
+Building library for stackage-to-hackage-1.1.0..
+[1 of 2] Compiling StackageToHackage.Stackage
+[2 of 2] Compiling StackageToHackage.Hackage
+
+«U:«:compilation-warning:lib/StackageToHackage/Hackage.hs»:«:compilation-line-number:13»:«:compilation-column-number:1»-«:compilation-column-number:51»:
 warning:» [-Wunused-imports]
+    The qualified import of ‘Data.ByteString’ is redundant
+      except perhaps to import instances from ‘Data.ByteString’
+    To import instances alone, use: import Data.ByteString()
+   |
+13 | import qualified Data.ByteString              as BS
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Configuring executable 'stack2cabal' for stack2cabal-1.0.2..
+Configuring executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Preprocessing executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Building executable 'stackage-to-hackage' for stackage-to-hackage-1.1.0..
+Preprocessing executable 'stack2cabal' for stack2cabal-1.0.2..
+Building executable 'stack2cabal' for stack2cabal-1.0.2..
+[1 of 1] Compiling Main
+[1 of 1] Compiling Main
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stackage-to-hackage-1.1.0/x/stackage-to-hackage/noopt/build/stackage-to-hackage/stackage-to-hackage
 ...
+Linking 
/home/tseenshe/stack2cabal/dist-newstyle/build/x86_64-linux/ghc-8.4.4/stack2cabal-1.0.2/x/stack2cabal/noopt/build/stack2cabal/stack2cabal
 ...
diff --git a/test/src/hspec-failure.compile.faceup 
b/test/src/hspec-failure.compile.faceup
new file mode 100644
index 0000000..a0fe49e
--- /dev/null
+++ b/test/src/hspec-failure.compile.faceup
@@ -0,0 +1,743 @@
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - hpack-0.31.2 (test:spec) (first run)
+Preprocessing test suite 'spec' for hpack-0.31.2..
+Building test suite 'spec' for hpack-0.31.2..
+Running 1 test suites...
+Test suite spec: RUNNING...
+
+Data.Aeson.Config.FromValue
+  fromValue
+    with a record
+      decodes a record
+      captures unrecognized fields
+      captures nested unrecognized fields
+      ignores fields that start with an underscore
+      fails on missing field
+      fails on invalid field value
+    with (,)
+      captures unrecognized fields
+    with []
+      captures unrecognized fields
+    with Map
+      captures unrecognized fields
+Data.Aeson.Config.Types
+  fromValue
+    List
+      when parsing single values
+        returns the value in a singleton list
+        returns error messages from element parsing
+      when parsing a list of values
+        returns the list
+        propagates parse error messages of invalid elements
+Data.Aeson.Config.Util
+  hyphenize
+    hyphenizes
+    ignores leading underscores
+    when given a type name
+      strips type name
+      ignores trailing underscores in type name
+EndToEnd
+  hpack
+    ignores fields that start with an underscore
+    warns on duplicate fields
+    spec-version
+      accepts spec-version
+      fails on malformed spec-version
+      fails on unsupported spec-version
+      fails on unsupported spec-version from defaults
+    data-files
+      accepts data-files
+    data-dir
+      accepts data-dir
+    github
+      accepts owner/repo
+      accepts owner/repo/path
+    homepage
+      accepts homepage URL
+      with github
+        gives homepage URL precedence
+        omits homepage URL if it is null
+    bug-reports
+      accepts bug-reports URL
+      with github
+        gives bug-reports URL precedence
+        omits bug-reports URL if it is null
+    defaults
+      accepts global defaults
+      accepts library defaults
+      accepts a list of defaults
+      accepts defaults recursively
+      fails on cyclic defaults
+      fails if defaults don't exist
+        # PENDING: No reason given
+      fails on parse error
+      warns on unknown fields
+      accepts defaults from local files
+    version
+      accepts string
+      accepts number
+      rejects other values
+    license
+      accepts cabal-style licenses
+      accepts SPDX licenses
+      with an ambiguous license
+        treats it as a cabal-style license
+      when cabal-version >= 2.2
+        maps license to SPDX license identifier
+        doesn't touch unknown licenses
+      with a LICENSE file
+        infers license
+        when license can not be inferred
+          warns
+        when license is null
+          does not infer license
+    build-type
+      accept Simple
+      accept Configure
+      accept Make
+      accept Custom
+      rejects invalid values
+    extra-doc-files
+      accepts a list of files
+      accepts glob patterns
+      warns if a glob pattern does not match anything
+    build-tools
+      adds known build tools to build-tools
+      adds other build tools to build-tool-depends
+      when the name of a build tool matches an executable from the same package
+        adds it to build-tools
+        gives per-section unqualified names precedence over global qualified 
names
+        gives per-section qualified names precedence over global unqualified 
names
+      when the name of a build tool matches a legacy system build tool
+        adds it to build-tools
+    system-build-tools
+      adds system build tools to build-tools
+      with hpc
+        infers cabal-version 1.14
+      with ghcjs
+        infers cabal-version 1.22
+      with an unknown system build tool
+        infers cabal-version 2.0
+    dependencies
+      accepts single dependency
+      accepts list of dependencies
+      with both global and section specific dependencies
+        combines dependencies
+        gives section specific dependencies precedence
+    pkg-config-dependencies
+      accepts pkg-config-dependencies
+    include-dirs
+      accepts include-dirs
+    install-includes
+      accepts install-includes
+    js-sources
+      accepts js-sources
+      accepts global js-sources
+    cxx-options
+      accepts cxx-options
+      when used inside a nested conditional
+        infers correct cabal-version
+    cxx-sources
+      accepts cxx-sources
+    extra-lib-dirs
+      accepts extra-lib-dirs
+    extra-libraries
+      accepts extra-libraries
+    extra-frameworks-dirs
+      accepts extra-frameworks-dirs
+    frameworks
+      accepts frameworks
+    c-sources
+      keeps declaration order
+      accepts glob patterns
+      warns when a glob pattern does not match any files
+      quotes filenames with special characters
+    custom-setup
+      warns on unknown fields
+      accepts dependencies
+      leaves build-type alone, if it exists
+    library
+      accepts reexported-modules
+      accepts signatures
+      when package.yaml contains duplicate modules
+        generates a cabal file with duplicate modules
+      when inferring modules
+        with exposed-modules
+          infers other-modules
+        with other-modules
+          infers exposed-modules
+        with both exposed-modules and other-modules
+          doesn't infer any modules
+        with neither exposed-modules nor other-modules
+          infers exposed-modules
+        with a conditional
+          doesn't infer any modules mentioned in that conditional
+          with a source-dir inside the conditional
+            infers other-modules
+            does not infer outer modules
+        with generated modules
+          includes generated modules in autogen-modules
+          does not infer any mentioned generated modules
+          does not infer any generated modules mentioned inside conditionals
+      mixins
+        sets cabal-version to 2.0 if mixins are used
+    internal-libraries
+      accepts internal-libraries
+      warns on unknown fields
+      warns on missing source-dirs
+    executables
+      accepts arbitrary entry points as main
+      when inferring modules
+        infers other-modules
+        allows to specify other-modules
+        does not infer any mentioned generated modules
+        with conditional
+          doesn't infer any modules mentioned in that conditional
+          infers other-modules
+      with conditional
+        does not apply global options
+        accepts executable-specific fields
+    when
+      accepts conditionals
+      warns on unknown fields
+      when parsing conditionals with else-branch
+        accepts conditionals with else-branch
+        rejects invalid conditionals
+        rejects invalid conditionals
+        warns on unknown fields
+    verbatim
+      accepts strings
+      accepts multi-line strings as field values
+      allows to null out existing fields
+      when specified globally
+        overrides header fields
+        overrides other fields
+        is not propagated into sections
+      within a section
+        overrides section fields
+    default value of maintainer
+      gives maintainer precedence
+      with author
+        uses author if maintainer is not specified
+        omits maintainer if it is null
+Hpack.CabalFile
+  readCabalFile
+    includes hash
+    accepts cabal-version at the beginning of the file
+  extractVersion
+    extracts Hpack version from a cabal file
+    is agnostic to file name
+    is total
+  parseVersion
+    is inverse to showVersion
+      +++ OK, passed 100 tests.
+  removeGitConflictMarkers
+    remove git conflict markers (git checkout --ours)
+Hpack.Config
+  pathsModuleFromPackageName
+    replaces dashes with underscores in package name
+  fromLibrarySectionInConditional
+    when inferring modules
+      infers other-modules
+      with exposed-modules
+        infers nothing
+      with other-modules
+        infers nothing
+  renamePackage
+    renames a package
+    renames dependencies on self
+  renameDependencies
+    renames dependencies
+    renames dependency in conditionals
+  getModules
+    returns Haskell modules in specified source directory
+    when source directory is '.'
+      ignores Setup
+    when source directory is './.'
+      ignores Setup
+  toBuildTool
+    with an UnqualifiedBuildTool
+      when name does not match a local executable
+        returns a BuildTool
+      when name matches a local executable
+        returns a LocalBuildTool
+      when name matches a legacy executable
+        warns
+      when name matches a legacy system build tool
+        warns
+    with a QualifiedBuildTool
+      when only package matches the current package
+        returns a BuildTool
+      when only executable matches a local executable
+        returns a BuildTool
+      when both package matches the current package and executable matches a 
local executable
+        returns a LocalBuildTool
+  readPackageConfig
+    warns on missing name
+    infers name
+    accepts name
+    accepts version
+    accepts synopsis
+    accepts description
+    accepts category
+    accepts author
+    accepts maintainer
+    accepts copyright
+    accepts stability
+    accepts license
+    infers license file
+    accepts license file
+    accepts list of license files
+    accepts flags
+    accepts extra-source-files
+    accepts arbitrary git URLs as source repository
+    accepts CPP options
+    accepts cc-options
+    accepts ghcjs-options
+    accepts ld-options
+    accepts buildable
+    allows yaml merging and overriding fields
+    when reading library section
+      accepts source-dirs
+      accepts default-extensions
+      accepts global default-extensions
+      accepts global source-dirs
+      allows to specify exposed
+    when reading executable section
+      reads executables section
+      reads executable section
+      with both executable and executables
+        gives executable precedence
+        warns
+      accepts source-dirs
+      accepts global source-dirs
+      accepts default-extensions
+      accepts global default-extensions
+      accepts GHC options
+      accepts global GHC options
+      accepts GHC profiling options
+      accepts global GHC profiling options
+    when reading test section
+      reads test section
+    when a specified source directory does not exist
+      warns
+    when package.yaml can not be parsed
+      returns an error
+    when package.yaml is invalid
+      returns an error
+    when package.yaml does not exist
+      returns an error
+  fromValue
+    with Cond
+      accepts Strings
+      accepts True
+      accepts False
+      rejects other values
+  formatOrList
+    formats a singleton list
+    formats a 2-element list
+    formats an n-element list
+Hpack.Defaults
+  ensure
+    fails when local file does not exist
+  ensureFile
+    downloads file if missing
+      # PENDING: No reason given
+    with existing file
+      does nothing
+    with 404
+      does not create any files
+        # PENDING: No reason given
+Hpack.Haskell
+  isModule
+    accepts module names
+    rejects the empty list
+  isQualifiedIdentifier
+    accepts qualified Haskell identifiers
+    rejects invalid input
+  isIdentifier
+    accepts Haskell identifiers
+    rejects reserved keywords
+    rejects invalid input
+Hpack.License
+  parseLicense
+    parses GPL
+    parses GPL-2
+    parses GPL-3
+    parses LGPL
+    parses LGPL-2.1
+    parses LGPL-3
+    parses AGPL
+    parses AGPL-3
+    parses BSD2
+    parses BSD3
+    parses BSD4
+    parses MIT
+    parses ISC
+    parses MPL-2.0
+    parses Apache
+    parses Apache-2.0
+    parses PublicDomain
+    parses OtherLicense
+    parses AllRightsReserved
+    parses GPL-2.0-or-later
+    parses some-license
+Hpack.Options
+  parseOptions
+    with --help
+      returns Help
+    with --version
+      returns PrintVersion
+    by default
+      returns Run
+      includes target
+      with superfluous arguments
+        returns ParseError
+      with --silent
+        sets optionsVerbose to NoVerbose
+      with --force
+        sets optionsForce to Force
+      with -f
+        sets optionsForce to Force
+      with -
+        sets optionsToStdout to True, implies Force and NoVerbose
+        rejects - for target
+  expandTarget
+    when target is Nothing
+      return default file
+    when target is a file
+      return file
+    when target is a directory
+      appends default file
+    when target file does not exist
+      return target file
+    when target directory does not exist
+      appends default file
+    when target is the empty string
+      return default file
+Hpack.Render.Dsl
+  render
+    when rendering a Stanza
+      renders stanza
+      omits empty fields
+      allows to customize indentation
+      renders nested stanzas
+    when rendering a Field
+      when rendering a MultipleLines value
+        takes nesting into account
+        when value is empty
+          returns an empty list
+      when rendering a SingleLine value
+        returns a single line
+        takes nesting into account
+        takes alignment into account
+        when value is empty
+          returns an empty list
+  renderValue
+    renders WordList
+    renders CommaSeparatedList
+    renders LineSeparatedList
+    when renderSettingsCommaStyle is TrailingCommas
+      renders CommaSeparatedList with trailing commas
+      renders LineSeparatedList without padding
+  sortFieldsBy
+    sorts fields
+    keeps existing field order
+      +++ OK, passed 100 tests.
+    is stable
+      +++ OK, passed 100 tests.
+  addSortKey
+    adds sort key
+Hpack.Render.Hints
+  extractFieldOrder
+    extracts field order hints
+  extractSectionsFieldOrder
+    splits input into sections
+  sanitize
+    removes empty lines
+    removes trailing whitespace
+    removes cabal-version
+  unindent
+    unindents
+  sniffAlignment
+    sniffs field alignment from given cabal file
+    ignores fields without a value on the same line
+  splitField
+    splits fields
+    accepts fields names with dashes
+    rejects fields names with spaces
+    rejects invalid fields
+  sniffIndentation
+    sniff alignment from executable section
+    sniff alignment from library section
+    ignores empty lines
+    ignores whitespace lines
+  sniffCommaStyle
+    detects leading commas
+    detects trailing commas
+    when detection fails
+      returns Nothing
+Hpack.Render
+  renderPackageWith
+    renders a package
+    aligns fields
+    includes description
+    aligns description
+    includes stability
+    includes license-file
+    aligns license-files
+    includes copyright holder
+    aligns copyright holders
+    includes extra-source-files
+    includes buildable
+    when rendering library section
+      renders library section
+    when given list of existing fields
+      retains field order
+      uses default field order for new fields
+      retains section field order
+    when rendering executable section
+      includes dependencies
+      includes GHC options
+      includes frameworks
+      includes extra-framework-dirs
+      includes GHC profiling options
+  renderConditional
+    renders conditionals
+    renders conditionals with else-branch
+    renders nested conditionals
+    conditionalises both build-depends and mixins
+  renderFlag
+    renders flags
+  formatDescription
+    formats description
+    takes specified alignment into account
+    formats empty lines
+  renderSourceRepository
+    renders source-repository without subdir correctly
+    renders source-repository with subdir
+  renderDirectories
+    replaces . with ./. (for compatibility with cabal syntax)
+  renderDependencies
+    renders build-depends
+    renders build-depends with versions
+    renders mixins and build-depends for multiple modules
+Hpack.Syntax.BuildTools
+  fromValue
+    when parsing BuildTools
+      with a scalar
+        accepts qualified names
+        accepts qualified names with a version
+        accepts unqualified names
+        accepts unqualified names with a version
+      with a mapping
+        accepts qualified names
+        accepts unqualified names
+      with a list
+        accepts a list of build tools
+        accepts source dependencies with a qualified name
+        accepts source dependencies with an unqualified name
+    when parsing SystemBuildTools
+      with a scalar
+        accepts system build tools
+        accepts system build tools with a version
+      with a mapping
+        accepts system build tools
+      with a list
+        accepts a list of system build tools
+        accepts objects with name and version
+Hpack.Syntax.Defaults
+  isValidOwner
+    rejects the empty string
+    accepts valid owner names
+    rejects dots
+    rejects multiple consecutive hyphens
+    rejects hyphens at the beginning
+    rejects hyphens at the end
+  isValidRepo
+    rejects the empty string
+    rejects .
+    rejects ..
+    accepts underscores
+    accepts dots
+    accepts hyphens
+  fromValue
+    when parsing Defaults
+      with Object
+        fails when neither github nor local is present
+        accepts Defaults from GitHub
+        rejects invalid owner names
+        rejects invalid repository names
+        rejects invalid Git references
+        rejects \ in path
+        rejects : in path
+        rejects absolute paths
+        rejects .. in path
+      with String
+        accepts Defaults from GitHub
+        rejects invalid owner names
+        rejects invalid repository names
+        rejects invalid Git references
+        rejects missing Git reference
+      with neither Object nor String
+        fails
+Hpack.Syntax.Dependencies
+  fromValue
+    when parsing Dependencies
+      with a scalar
+        accepts dependencies without constraints
+        accepts dependencies with constraints
+        with invalid constraint
+          returns an error message
+      with a list
+        accepts dependencies without constraints
+        accepts dependencies with constraints
+        accepts ^>=
+        accepts objects with name and version
+        accepts git dependencies with version
+        accepts git dependencies
+        accepts github dependencies
+        accepts an optional subdirectory for git dependencies
+        accepts local dependencies
+        when ref is missing
+          produces accurate error messages
+        when both git and github are missing
+          produces accurate error messages
+      with a mapping from dependency names to constraints
+        accepts dependencies without constraints
+        rejects invalid values
+        when the constraint is a Number
+          accepts 1
+          accepts 1.0
+          accepts 0.11
+          accepts 0.110
+          accepts 1e2
+        when the constraint is a String
+          accepts version ranges
+          accepts specific versions
+          accepts wildcard versions
+          accepts ^>=
+          reports parse errors
+        when the constraint is an Object
+          accepts explicit version field
+          accepts github dependencies
+          ignores names in nested hashes
+          defaults to any version
+          with a version key
+            rejects objects
+            accepts a string
+            accepts a specific version as a number
+            accepts a specific version as a string
+          with mixin
+            accepts a single value
+            accepts a list
+Hpack.Syntax.Git
+  isValidRef
+    accepts slashes
+    rejects the empty string
+    accepts .lock as a substring
+    rejects .lock at the end of a component
+    rejects . at the biginning of a component
+    rejects two consecutive dots ..
+    rejects ASCII control characters
+    rejects space
+    rejects ~
+    rejects ^
+    rejects :
+    rejects ?
+    rejects *
+    rejects [
+    rejects \
+    rejects multiple consecutive slashes
+    rejects slash at beginning
+    rejects slash at end
+    rejects . at end
+    rejects @{
+    rejects the single character @
+Hpack.Utf8
+  readFile
+    with a file that uses CRLF newlines
+      applies newline conversion
+  writeFile
+    uses system specific newline encoding
+Hpack.Util
+  sort
+    sorts lexicographically
+  parseMain
+    accepts source file
+    accepts literate source file
+    accepts module
+    accepts hierarchical module
+    accepts qualified identifier
+  toModule
+    maps .hs paths to module names
+    maps .lhs paths to module names
+    maps .hsc paths to module names
+    rejects invalid module names
+  getModuleFilesRecursive
+    gets all files from given directory
+    descends into subdirectories
+    when a subdirectory is not a valid module name
+      does not descend
+  tryReadFile
+    reads file
+    returns Nothing if file does not exist
+  expandGlobs
+    accepts literal files
+    keeps declaration order for literal files
+    removes duplicates
+    rejects directories
+    rejects character ranges
+    when expanding *
+      expands by extension
+      rejects dot-files
+      accepts dot-files when explicitly asked to
+      matches at most one directory component
+    when expanding **
+      matches arbitrary many directory components
+    when a pattern does not match anything
+      warns
+    when a pattern only matches a directory
+      warns
+    when a literal file does not exist
+      warns and keeps the file
+Hpack
+  hpackResult
+    with existing cabal file
+      when cabal file was created manually
+        does not overwrite existing cabal file
+        with --force
+          overwrites existing cabal file
+      when cabal file was created with hpack < 0.20.0
+        overwrites existing cabal file
+      when cabal file was created with hpack >= 0.20.0
+        when hash is missing
+          does not overwrite existing cabal file
+        when hash is present
+          when exsting cabal file was generated with a newer version of hpack
+            does not overwrite existing cabal file FAILED [1]
+          when cabal file was modified manually
+            does not overwrite existing cabal file
+          when only the hpack version in the cabal file header changed
+            does not overwrite existing cabal file
+            does not complain if it's newer
+
+Failures:
+
+«U:  
«:compilation-error:test/HpackSpec.hs»:«:compilation-line-number:80»:«:compilation-column-number:15»:»
 
+  1) Hpack.hpackResult, with existing cabal file, when cabal file was created 
with hpack >= 0.20.0, when hash is present, when exsting cabal file was 
generated with a newer version of hpack, does not overwrite existing cabal file
+       not expected: "cabal-version: 1.12\n\n-- This file has been generated 
from package.yaml by hpack version 0.22.0.\n--\n-- see: 
https://github.com/sol/hpack\n--\n-- hash: 
224b158530d1d066069f18794673f6a7a41f689d26f27fe8cd505cef259f35a9\n\nname:       
    foo\nversion:        0.1.0\nbuild-type:     Simple\n"
+
+  To rerun use: --match "/Hpack/hpackResult/with existing cabal file/when 
cabal file was created with hpack >= 0.20.0/when hash is present/when exsting 
cabal file was generated with a newer version of hpack/does not overwrite 
existing cabal file/"
+
+Randomized with seed 625441262
+
+Finished in 0.2159 seconds
+469 examples, 1 failure, 3 pending
+Test suite spec: FAIL
+Test suite logged to:
+/home/tseenshe/hpack/dist-newstyle/build/x86_64-linux/ghc-8.4.4/hpack-0.31.2/t/spec/noopt/test/hpack-0.31.2-spec.log
+0 of 1 test suites (0 of 1 test cases) passed.
+cabal: Tests failed for test:spec from hpack-0.31.2.
+
diff --git a/test/src/tasty-failure.compile.faceup 
b/test/src/tasty-failure.compile.faceup
new file mode 100644
index 0000000..8ac1812
--- /dev/null
+++ b/test/src/tasty-failure.compile.faceup
@@ -0,0 +1,2756 @@
+Build profile: -w ghc-8.4.4 -O0
+In order, the following will be built (use -v for more details):
+ - course-0.1.4 (test:tasty) (first run)
+Preprocessing test suite 'tasty' for course-0.1.4..
+Building test suite 'tasty' for course-0.1.4..
+Running 1 test suites...
+Test suite tasty: RUNNING...
+Tests
+  Optional
+    mapOptional
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Optional#mapOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:31»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      Full:                                                                    
        FAIL
+        Exception: todo: Course.Optional#mapOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:31»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+    bindOptional
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Optional#bindOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:48»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      even dec, odd inc, even input:                                           
        FAIL
+        Exception: todo: Course.Optional#bindOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:48»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      even dec, odd inc, odd input:                                            
        FAIL
+        Exception: todo: Course.Optional#bindOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:48»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+    ??
+      Full:                                                                    
        FAIL
+        Exception: todo: Course.Optional#(??)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:62»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Optional#(??)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:62»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+    <+>
+      first Full:                                                              
        FAIL
+        Exception: todo: Course.Optional#(<+>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:83»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      both Full:                                                               
        FAIL
+        Exception: todo: Course.Optional#(<+>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:83»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      first Empty:                                                             
        FAIL
+        Exception: todo: Course.Optional#(<+>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:83»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      both empty:                                                              
        FAIL
+        Exception: todo: Course.Optional#(<+>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:83»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+    optional
+      replaces full data constructor:                                          
        FAIL
+        Exception: todo: Course.Optional#optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:98»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+      replaces empty data constructor:                                         
        FAIL
+        Exception: todo: Course.Optional#optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Optional.hs»»:«:compilation-line-number:98»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Optional
+  List
+    headOr
+      headOr on non-empty list:                                                
        FAIL
+        Exception: todo: Course.List#headOr
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      headOr on empty list:                                                    
        FAIL
+        Exception: todo: Course.List#headOr
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      headOr on infinity always 0:                                             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=218885 to reproduce.
+      headOr on empty list always the default:                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=779618 to reproduce.
+    productTest
+      product of empty list:                                                   
        FAIL
+        Exception: todo: Course.List#product
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:95»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      product of 1..3:                                                         
        FAIL
+        Exception: todo: Course.List#product
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:95»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      product of 1..4:                                                         
        FAIL
+        Exception: todo: Course.List#product
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:95»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+    sum
+      sum 1..3:                                                                
        FAIL
+        Exception: todo: Course.List#sum
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:110»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      sum 1..4:                                                                
        FAIL
+        Exception: todo: Course.List#sum
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:110»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      subtracting each element in a list from its sum is always 0:             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#sum
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:110»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=345519 to reproduce.
+    length
+      length 1..3:                                                             
        FAIL
+        Exception: todo: Course.List#length
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:122»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      summing a list of 1s is equal to its length:                             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#length
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:122»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=679566 to reproduce.
+    map
+      add 10 on list:                                                          
        FAIL
+        Exception: todo: Course.List#map
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      headOr after map:                                                        
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=920194 to reproduce.
+      map id is id:                                                            
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#map
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=666065 to reproduce.
+    filter
+      filter even:                                                             
        FAIL
+        Exception: todo: Course.List#filter
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:154»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      filter (const True) is identity (headOr):                                
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=149662 to reproduce.
+      filter (const True) is identity:                                         
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#filter
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:154»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=914136 to reproduce.
+      filter (const False) is the empty list:                                  
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#filter
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:154»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=323113 to reproduce.
+    (++)
+      (1..6):                                                                  
        FAIL
+        Exception: todo: Course.List#(++)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:173»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      append empty to infinite:                                                
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=525683 to reproduce.
+      append anything to infinity:                                             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        (0,[])
+        Use --quickcheck-replay=970556 to reproduce.
+      associativity:                                                           
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#(++)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:173»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        ([],[],[])
+        Use --quickcheck-replay=942050 to reproduce.
+      append to empty list:                                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#(++)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:173»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=430345 to reproduce.
+    flatten
+      (1..9):                                                                  
        FAIL
+        Exception: todo: Course.List#flatten
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:191»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      flatten (infinity :. y):                                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        (0,[])
+        Use --quickcheck-replay=266051 to reproduce.
+      flatten (y :. infinity):                                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        (0,[])
+        Use --quickcheck-replay=691387 to reproduce.
+      sum of lengths == length of flattened:                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#sum
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:110»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=292173 to reproduce.
+    flatMap
+      lists of Integer:                                                        
        FAIL
+        Exception: todo: Course.List#flatMap
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:208»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      flatMap id flattens a list of lists:                                     
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        (0,[])
+        Use --quickcheck-replay=199462 to reproduce.
+      flatMap id on a list of lists take 2:                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#headOr
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:79»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        (0,[])
+        Use --quickcheck-replay=213627 to reproduce.
+      flatMap id == flatten:                                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#flatMap
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:208»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=413820 to reproduce.
+    flattenAgain
+      lists of Integer:                                                        
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#flatten
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:191»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        []
+        Use --quickcheck-replay=279553 to reproduce.
+    seqOptional
+      all Full:                                                                
        FAIL
+        Exception: todo: Course.List#seqOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:246»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      empty list:                                                              
        FAIL
+        Exception: todo: Course.List#seqOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:246»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      contains Empty:                                                          
        FAIL
+        Exception: todo: Course.List#seqOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:246»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      Empty at head of infinity:                                               
        FAIL
+        Exception: todo: Course.List#seqOptional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:246»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+    find
+      find no matches:                                                         
        FAIL
+        Exception: todo: Course.List#find
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:269»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      empty list:                                                              
        FAIL
+        Exception: todo: Course.List#find
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:269»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      find only even:                                                          
        FAIL
+        Exception: todo: Course.List#find
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:269»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      find first, not second even:                                             
        FAIL
+        Exception: todo: Course.List#find
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:269»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      find on infinite list:                                                   
        FAIL
+        Exception: todo: Course.List#find
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:269»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+    lengthGT4
+      list of length 3:                                                        
        FAIL
+        Exception: todo: Course.List#lengthGT4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:288»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      list of length 4:                                                        
        FAIL
+        Exception: todo: Course.List#lengthGT4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:288»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      empty list:                                                              
        FAIL
+        Exception: todo: Course.List#lengthGT4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:288»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      list of length 5:                                                        
        FAIL
+        Exception: todo: Course.List#lengthGT4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:288»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      infinite list:                                                           
        FAIL
+        Exception: todo: Course.List#lengthGT4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:288»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+    reverse
+      empty list:                                                              
        FAIL
+        Exception: todo: Course.List#reverse
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:305»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      reverse . reverse on largeList:                                          
        FAIL
+        Exception: todo: Course.List#reverse
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:305»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+      reverse then append is same as append then reverse:                      
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#(++)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:173»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        ([],[])
+        Use --quickcheck-replay=534070 to reproduce.
+      reverse single element list is the list:                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.List#reverse
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/List.hs»»:«:compilation-line-number:305»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.List
+        0
+        Use --quickcheck-replay=23999 to reproduce.
+    produce
+      increment:                                                               
        OK
+      double:                                                                  
        OK
+  Functor
+    ExactlyOne:                                                                
        FAIL
+      Exception: todo: Course.Functor (<$>)#instance ExactlyOne
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:45»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+    List
+      empty list:                                                              
        FAIL
+        Exception: todo: Course.Functor (<$>)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:60»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+      increment:                                                               
        FAIL
+        Exception: todo: Course.Functor (<$>)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:60»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+    Optional
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Functor (<$>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:75»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+      Full:                                                                    
        FAIL
+        Exception: todo: Course.Functor (<$>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:75»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+    (->):                                                                      
        FAIL
+      Exception: todo: Course.Functor (<$>)#((->) t)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:87»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+    (<$)
+      Map 7:                                                                   
        FAIL
+        Exception: todo: Course.Functor#(<$)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:103»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+      Always maps a constant value over List:                                  
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Functor#(<$)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:103»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+        0
+        0
+        0
+        0
+        Use --quickcheck-replay=204341 to reproduce.
+      Always maps a constant value over Full (Optional):                       
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Functor#(<$)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:103»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+        0
+        0
+        Use --quickcheck-replay=847361 to reproduce.
+    void
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Functor#void
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+      Full:                                                                    
        FAIL
+        Exception: todo: Course.Functor#void
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Functor#void
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+      (->):                                                                    
        FAIL
+        Exception: todo: Course.Functor#void
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Functor
+  Applicative
+    ExactlyOne instance
+      pure == ExactlyOne:                                                      
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative pure#instance ExactlyOne
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:51»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        Use --quickcheck-replay=746459 to reproduce.
+      Applying within ExactlyOne:                                              
        FAIL
+        Exception: todo: Course.Applicative (<*>)#instance ExactlyOne
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:57»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+    List instance
+      pure:                                                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative pure#instance List
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:70»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        Use --quickcheck-replay=375608 to reproduce.
+      <*>:                                                                     
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:76»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+    lift1
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      empty List:                                                              
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    Optional instance
+      pure:                                                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative pure#instance Optional
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:95»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        Use --quickcheck-replay=592324 to reproduce.
+      Full <*> Full:                                                           
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:101»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      Empty <*> Full:                                                          
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:101»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      Full <*> Empty:                                                          
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:101»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+    Function instance
+      addition:                                                                
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance ((->) t)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      more addition:                                                           
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance ((->) t)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      even more addition:                                                      
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance ((->) t)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      addition and multiplication:                                             
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance ((->) t)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      more addition and multiplcation:                                         
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance ((->) t)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      pure:                                                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative pure#((->) t)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:126»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=134543 to reproduce.
+    lift2
+      + over ExactlyOne:                                                       
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over List:                                                             
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - all full:                                              
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - first Empty:                                           
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - second Empty:                                          
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over functions:                                                        
        FAIL
+        Exception: todo: Course.Applicative#lift2
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:161»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    lift3
+      + over ExactlyOne:                                                       
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over List:                                                             
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional:                                                         
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - third Empty:                                           
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - first Empty:                                           
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - first and second Empty:                                
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over functions:                                                        
        FAIL
+        Exception: todo: Course.Applicative#lift3
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:194»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    lift4
+      + over ExactlyOne:                                                       
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over List:                                                             
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional:                                                         
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - third Empty:                                           
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - first Empty:                                           
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over Optional - first and second Empty:                                
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over functions:                                                        
        FAIL
+        Exception: todo: Course.Applicative#lift4
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:228»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    lift1
+      + over ExactlyOne:                                                       
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over empty List:                                                       
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      + over List:                                                             
        FAIL
+        Exception: todo: Course.Applicative#lift1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:255»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    rightApply
+      *> over List:                                                            
        FAIL
+        Exception: todo: Course.Applicative#(*>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      *> over List:                                                            
        FAIL
+        Exception: todo: Course.Applicative#(*>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      another *> over List:                                                    
        FAIL
+        Exception: todo: Course.Applicative#(*>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      *> over Optional:                                                        
        FAIL
+        Exception: todo: Course.Applicative#(*>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      *> over List property:                                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative#(*>)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        0
+        0
+        0
+        0
+        Use --quickcheck-replay=449856 to reproduce.
+      *> over Optional property:                                               
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative#(*>)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:281»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=358238 to reproduce.
+    leftApply
+      <* over List:                                                            
        FAIL
+        Exception: todo: Course.Applicative#(<*)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      another <* over List:                                                    
        FAIL
+        Exception: todo: Course.Applicative#(<*)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Yet another <* over List:                                                
        FAIL
+        Exception: todo: Course.Applicative#(<*)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      <* over Optional:                                                        
        FAIL
+        Exception: todo: Course.Applicative#(<*)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      <* over List property:                                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative#(<*)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        0
+        0
+        0
+        0
+        Use --quickcheck-replay=621753 to reproduce.
+      <* over Optional property:                                               
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Applicative#(<*)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:307»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=455616 to reproduce.
+    sequence
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Applicative#sequence
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Applicative#sequence
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional with an empty:                                                  
        FAIL
+        Exception: todo: Course.Applicative#sequence
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional:                                                                
        FAIL
+        Exception: todo: Course.Applicative#sequence
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      (->):                                                                    
        FAIL
+        Exception: todo: Course.Applicative#sequence
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    replicateA
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Applicative#replicateA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional - Full:                                                         
        FAIL
+        Exception: todo: Course.Applicative#replicateA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional - Empty:                                                        
        FAIL
+        Exception: todo: Course.Applicative#replicateA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      (->):                                                                    
        FAIL
+        Exception: todo: Course.Applicative#replicateA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Applicative#replicateA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+    filtering
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional - all true:                                                     
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional - some false:                                                   
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      Optional - some empty:                                                   
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      (->):                                                                    
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Applicative#filtering
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Applicative
+  Monad
+    (=<<) for ExactlyOne:                                                      
        FAIL
+      Exception: todo: Course.Monad (=<<)#instance ExactlyOne
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:40»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Monad
+    (=<<) for List:                                                            
        FAIL
+      Exception: todo: Course.Monad (=<<)#instance List
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:52»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Monad
+    (=<<) for Optional:                                                        
        FAIL
+      Exception: todo: Course.Monad (=<<)#instance Optional
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:64»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Monad
+    (=<<) for (->):                                                            
        FAIL
+      Exception: todo: Course.Monad (=<<)#instance ((->) t)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:76»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Monad
+    <**>
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      Optional:                                                                
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      Optional - empty function:                                               
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      Optional - empty value:                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->) 1:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->) 2:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->) 3:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->) 4:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->) 5:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(<**>)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:115»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+    join
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Monad#join
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      Optional with Empty:                                                     
        FAIL
+        Exception: todo: Course.Monad#join
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      Optional all Full:                                                       
        FAIL
+        Exception: todo: Course.Monad#join
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+      (->):                                                                    
        FAIL
+        Exception: todo: Course.Monad#join
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:137»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+    (>>=):                                                                     
        FAIL
+      Exception: todo: Course.Monad#(>>=)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:151»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+    kleislyComposition:                                                        
        FAIL
+      Exception: todo: Course.Monad#(<=<)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:167»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+  State
+    get:                                                                       
        FAIL
+      Exception: todo: Course.State#get
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:61»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+    put:                                                                       
        FAIL
+      Exception: todo: Course.State#put
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:71»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+    (<$>):                                                                     
        FAIL
+      Exception: todo: Course.State#(<$>)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:83»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.State
+    Applicative
+      pure:                                                                    
        FAIL
+        Exception: todo: Course.State pure#instance (State s)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:100»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.State
+      <*>:                                                                     
        FAIL
+        Exception: todo: Course.State (<*>)#instance (State s)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:106»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.State
+      complicated <*>:                                                         
        FAIL
+        Exception: todo: Course.State (<*>)#instance (State s)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:106»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.State
+    Monad
+      (=<<):                                                                   
        FAIL
+        Exception: todo: Course.State (=<<)#instance (State s)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:121»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.State
+      (>>=):                                                                   
        FAIL
+        Exception: todo: Course.Monad#(>>=)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:151»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+    findM
+      find 'c' in 'a'..'h':                                                    
        FAIL
+        Exception: todo: Course.State#findM
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:143»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      find 'i' in 'a'..'h':                                                    
        FAIL
+        Exception: todo: Course.State#findM
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:143»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+    firstRepeat
+      'x' is the only repeat:                                                  
        FAIL
+        Exception: todo: Course.State#firstRepeat
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      'x' is the first repeat:                                                 
        FAIL
+        Exception: todo: Course.State#firstRepeat
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      no repeats:                                                              
        FAIL
+        Exception: todo: Course.State#firstRepeat
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      finds repeats:                                                           
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.State#firstRepeat
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+        []
+        Use --quickcheck-replay=605194 to reproduce.
+      removing repeats matches nub:                                            
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.State#firstRepeat
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+        []
+        Use --quickcheck-replay=233318 to reproduce.
+    distinct
+      No repeats:                                                              
        FAIL
+        Exception: todo: Course.State#distinct
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      Every element repeated:                                                  
        FAIL
+        Exception: todo: Course.State#distinct
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      No repeats after distinct:                                               
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.State#firstRepeat
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:157»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+        []
+        Use --quickcheck-replay=275621 to reproduce.
+      Every element repeated:                                                  
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.State#distinct
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+        []
+        Use --quickcheck-replay=224172 to reproduce.
+    isHappy
+      4:                                                                       
        FAIL
+        Exception: todo: Course.State#isHappy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:197»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      7:                                                                       
        FAIL
+        Exception: todo: Course.State#isHappy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:197»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      42:                                                                      
        FAIL
+        Exception: todo: Course.State#isHappy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:197»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+      44:                                                                      
        FAIL
+        Exception: todo: Course.State#isHappy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/State.hs»»:«:compilation-line-number:197»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.State
+  StateT
+    <$>:                                                                       
        FAIL
+      Exception: todo: Course.StateT (<$>)#instance (StateT s f)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:43»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    Applicative
+      List (pure):                                                             
        FAIL
+        Exception: todo: Course.StateT pure#instance (StateT s f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:66»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      List (<*>):                                                              
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:72»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      Optional:                                                                
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:72»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      List:                                                                    
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:72»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    Monad
+      bind const:                                                              
        FAIL
+        Exception: todo: Course.StateT (=<<)#instance (StateT s f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:88»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      modify:                                                                  
        FAIL
+        Exception: todo: Course.Monad#(>>=)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Monad.hs»»:«:compilation-line-number:151»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Monad
+    state':                                                                    
        FAIL
+      Exception: todo: Course.StateT#state'
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:102»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    runState':                                                                 
        FAIL
+      Exception: todo: Course.StateT#runState'
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    execTTest:                                                                 
        FAIL
+      Exception: todo: Course.StateT#execT
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:125»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    exec'Test:                                                                 
        FAIL
+      Exception: todo: Course.StateT#exec'
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:136»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    evalTTest:                                                                 
        FAIL
+      Exception: todo: Course.StateT#evalT
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:148»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    eval'Test:                                                                 
        FAIL
+      Exception: todo: Course.StateT#eval'
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:159»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    getTTest:                                                                  
        FAIL
+      Exception: todo: Course.StateT#getT
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:169»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    putTTest:                                                                  
        FAIL
+      Exception: todo: Course.StateT#putT
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:183»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    distinct'
+      removes duplicate 'c's:                                                  
        FAIL
+        Exception: todo: Course.StateT#distinct'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:195»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+      distinct':                                                               
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.StateT#distinct'
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:195»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+        []
+        Use --quickcheck-replay=48265 to reproduce.
+    distinctF
+      Full case:                                                               
        FAIL
+        Exception: todo: Course.StateT#distinctF
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:213»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+      Empty case:                                                              
        FAIL
+        Exception: todo: Course.StateT#distinctF
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:213»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    (<$>) for OptionalT:                                                       
        FAIL
+      Exception: todo: Course.StateT (<$>)#instance (OptionalT f)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:232»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    (<*>) for OptionalT
+      one:                                                                     
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      two:                                                                     
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      three:                                                                   
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      four:                                                                    
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      five:                                                                    
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      six:                                                                     
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      seven:                                                                   
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:270»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    (=<<) for OptionalT:                                                       
        FAIL
+      Exception: todo: Course.StateT (=<<)#instance (OptionalT f)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:282»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    (<$>) for Logger:                                                          
        FAIL
+      Exception: todo: Course.StateT (<$>)#instance (Logger l)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:299»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    Logger Applicative
+      pure:                                                                    
        FAIL
+        Exception: todo: Course.StateT pure#instance (Logger l)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:313»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+      <*>:                                                                     
        FAIL
+        Exception: todo: Course.StateT (<*>)#instance (Logger l)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:320»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    (=<<) for Logger:                                                          
        FAIL
+      Exception: todo: Course.StateT (=<<)#instance (Logger l)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:333»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.StateT
+    log1:                                                                      
        FAIL
+      Exception: todo: Course.StateT#log1
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+    distinctG
+      Full case:                                                               
        FAIL
+        Exception: todo: Course.StateT#distinctG
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:365»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+      Empty case:                                                              
        FAIL
+        Exception: todo: Course.StateT#distinctG
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/StateT.hs»»:«:compilation-line-number:365»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.StateT
+  Validation
+    isError
+      true for errors:                                                         
        OK
+      false for values:                                                        
        OK
+      not the same as isValue:                                                 
        OK
+        +++ OK, passed 100 tests.
+    isValue
+      false for errors:                                                        
        OK
+      false for values:                                                        
        OK
+      not the same as isValue:                                                 
        OK
+        +++ OK, passed 100 tests.
+    mapValidation
+      errors unchanged:                                                        
        OK
+      values changed:                                                          
        OK
+      map with id causes no change:                                            
        OK
+        +++ OK, passed 100 tests.
+    bindValidation
+      error unchanged:                                                         
        OK
+      odd value:                                                               
        OK
+      even value:                                                              
        OK
+      bind with Value causes no change:                                        
        OK
+        +++ OK, passed 100 tests.
+    valueOr
+      falls through for errors:                                                
        OK
+      unwraps values:                                                          
        OK
+      isValue or valueOr falls through:                                        
        OK
+        +++ OK, passed 100 tests.
+    errorOr
+      unwraps errors:                                                          
        OK
+      falls through for values:                                                
        OK
+      isError or errorOr falls through:                                        
        OK
+        +++ OK, passed 100 tests.
+  Extend
+    ExactlyOne instance:                                                       
        FAIL
+      Exception: todo: Course.Extend (<<=)#instance ExactlyOne
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:37»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+    List
+      length:                                                                  
        FAIL
+        Exception: todo: Course.Extend (<<=)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:55»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+      id:                                                                      
        FAIL
+        Exception: todo: Course.Extend (<<=)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:55»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+      reverse:                                                                 
        FAIL
+        Exception: todo: Course.Extend (<<=)#instance List
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:55»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+    Optional
+      id Full:                                                                 
        FAIL
+        Exception: todo: Course.Extend (<<=)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:70»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+      id Empty:                                                                
        FAIL
+        Exception: todo: Course.Extend (<<=)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:70»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Extend
+    cojoin
+      ExactlyOne:                                                              
        FAIL
+        Exception: todo: Course.Extend#cojoin
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:90»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Extend
+      List:                                                                    
        FAIL
+        Exception: todo: Course.Extend#cojoin
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:90»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Extend
+      Full:                                                                    
        FAIL
+        Exception: todo: Course.Extend#cojoin
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:90»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Extend
+      Empty:                                                                   
        FAIL
+        Exception: todo: Course.Extend#cojoin
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Extend.hs»»:«:compilation-line-number:90»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Extend
+  Comonad
+    ExactlyOne:                                                                
        FAIL
+      Exception: todo: Course.Comonad copure#instance ExactlyOne
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Comonad.hs»»:«:compilation-line-number:33»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Comonad
+    <$$>:                                                                      
        FAIL
+      Exception: todo: Course.Comonad#(<$>)
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/Comonad.hs»»:«:compilation-line-number:45»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Comonad
+  Traversable
+    listTest
+      traverse on empty list:                                                  
        FAIL
+        Exception: todo: Course.Applicative pure#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:95»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+      traverse on non-empty list:                                              
        FAIL
+        Exception: todo: Course.Apply (<*>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:101»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+    exactlyOneTest
+      traverse on ExactlyOne:                                                  
        FAIL
+        Exception: todo: Course.Traversable traverse#instance ExactlyOne
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:49»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    optionalTest
+      traverse on Empty:                                                       
        FAIL
+        Exception: todo: Course.Traversable traverse#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:58»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+      traverse on Full:                                                        
        FAIL
+        Exception: todo: Course.Traversable traverse#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:58»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    sequenceATest
+      on List over ExactlyOne:                                                 
        FAIL
+        Exception: todo: Course.Traversable#sequenceA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Traversable
+      on Optional over ExactlyOne:                                             
        FAIL
+        Exception: todo: Course.Traversable#sequenceA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Traversable
+      on Optional over function:                                               
        FAIL
+        Exception: todo: Course.Traversable#sequenceA
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Traversable
+    composeTest
+      traverse on Compose Optional List Int:                                   
        FAIL
+        Exception: todo: Course.Traversable traverse#instance (Compose f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:81»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+      traverse on Compose List ExactlyOne Int:                                 
        FAIL
+        Exception: todo: Course.Traversable traverse#instance (Compose f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:81»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    productFunctorTest
+      fmap on Product Optional List Int:                                       
        FAIL
+        Exception: todo: Course.Traversable (<$>)#instance (Product f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:91»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+      fmap on Product ExactlyOne Optional Int:                                 
        FAIL
+        Exception: todo: Course.Traversable (<$>)#instance (Product f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:91»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    productTraversableTest
+      traverse on Product Optional List Int:                                   
        FAIL
+        Exception: todo: Course.Traversable traverse#instance (Product f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:97»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    coProductFunctorTest
+      fmap on InL Optional Int:                                                
        FAIL
+        Exception: todo: Course.Traversable (<$>)#instance (Coproduct f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:108»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+      fmap on InR ExactlyOne Int:                                              
        FAIL
+        Exception: todo: Course.Traversable (<$>)#instance (Coproduct f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:108»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+    coProductTraversableTest
+      traverse on InL Optional Int:                                            
        FAIL
+        Exception: todo: Course.Traversable traverse#instance (Coproduct f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:114»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+      traverse on InR List Int:                                                
        FAIL
+        Exception: todo: Course.Traversable traverse#instance (Coproduct f g)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Traversable.hs»»:«:compilation-line-number:114»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Traversable
+  ListZipper
+    ListZipper (<$>):                                                          
        FAIL
+      Exception: todo: Course.ListZipper (<$>)#instance ListZipper
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:68»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    MaybeListZipper (<$>):                                                     
        FAIL
+      Exception: todo: Course.ListZipper (<$>)#instance MaybeListZipper
+      CallStack (from HasCallStack):
+        error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:76»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    toList
+      Optional empty list:                                                     
        FAIL
+        Exception: todo: Course.Functor (<$>)#instance Optional
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Functor.hs»»:«:compilation-line-number:75»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Functor
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#toList
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:92»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      lefts and rights:                                                        
        FAIL
+        Exception: todo: Course.ListZipper#toList
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:92»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    fromList
+      non-empty:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#fromList
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:116»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty:                                                                   
        FAIL
+        Exception: todo: Course.ListZipper#fromList
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:116»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      round trip:                                                              
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#fromList
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:116»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        []
+        Use --quickcheck-replay=497955 to reproduce.
+    toOptional
+      empty:                                                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toOptional
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:127»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        []
+        Use --quickcheck-replay=839372 to reproduce.
+    withFocus
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#withFocus
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:187»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      left and right:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#withFocus
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:187»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    setFocus
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#setFocus
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:202»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      left and right:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#setFocus
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:202»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    hasLeft
+      left and right:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#hasLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:225»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#hasLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:225»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    hasRight
+      left and right:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#hasRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:238»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty right:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#hasRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:238»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    findLeft
+      missing element returns IsNotZ:                                          
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#fromList
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:116»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        []
+        False
+        Use --quickcheck-replay=632697 to reproduce.
+      found in left:                                                           
        FAIL
+        Exception: todo: Course.ListZipper#findLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:266»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      not found:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#findLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:266»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      one match in left:                                                       
        FAIL
+        Exception: todo: Course.ListZipper#findLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:266»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      multiple matches in left:                                                
        FAIL
+        Exception: todo: Course.ListZipper#findLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:266»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      elements shifted to right correctly:                                     
        FAIL
+        Exception: todo: Course.ListZipper#findLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:266»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    findRight
+      missing element returns IsNotZ:                                          
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#fromList
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:116»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        []
+        Use --quickcheck-replay=23572 to reproduce.
+      found in right:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#findRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:291»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      not found:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#findRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:291»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      one match in right:                                                      
        FAIL
+        Exception: todo: Course.ListZipper#findRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:291»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      multiple matches in right:                                               
        FAIL
+        Exception: todo: Course.ListZipper#findRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:291»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveLeftLoop
+      with left:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftLoop
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:304»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftLoop
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:304»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveRightLoop
+      with right:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#moveRightLoop
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:317»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty right:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#moveRightLoop
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:317»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveLeft
+      with left:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#moveLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#moveLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:330»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveRight
+      with right:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#moveRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:343»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty right:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#moveRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:343»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    swapLeft
+      with left:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#swapLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#swapLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    swapRight
+      with right:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#swapRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:369»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty right:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#swapRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:369»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    dropLeft
+      with left:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#dropLefts
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty left:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#dropLefts
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      dropLefts empties left of zipper:                                        
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#dropLefts
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:384»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=852942 to reproduce.
+    dropRights
+      with right:                                                              
        FAIL
+        Exception: todo: Course.ListZipper#dropRights
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:399»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty right:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#dropRights
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:399»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      dropRights empties right of zipper:                                      
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#dropRights
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:399»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=876174 to reproduce.
+    moveLeftN
+      positive moves:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:413»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      negative moves:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:413»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveRightN
+      positive moves:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      negative moves:                                                          
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveLeftN'
+      positive - out of bounds both sides:                                     
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      positive in range:                                                       
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      moving zero is `Right . id`:                                             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#moveLeftN'
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=916083 to reproduce.
+      negative in range:                                                       
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      negative out of bounds:                                                  
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      positive - out of bounds on left only:                                   
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      negative - out of bounds on right only:                                  
        FAIL
+        Exception: todo: Course.ListZipper#moveLeftN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    moveRightN'
+      positive - out of bounds both sides:                                     
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:481»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      positive in range:                                                       
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:481»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      moving zero is `Right . id`:                                             
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#moveRightN'
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:481»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=416654 to reproduce.
+      negative in range:                                                       
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:481»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      negative - out of bounds both sides:                                     
        FAIL
+        Exception: todo: Course.ListZipper#moveRightN'
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:481»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    nth
+      have 1:                                                                  
        FAIL
+        Exception: todo: Course.ListZipper#nth
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      have 5:                                                                  
        FAIL
+        Exception: todo: Course.ListZipper#nth
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      missing 8:                                                               
        FAIL
+        Exception: todo: Course.ListZipper#nth
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    index
+      index works:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#index
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:510»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      Always returns the index on a valid zipper:                              
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toOptional
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:127»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        ([] >0< [],0)
+        Use --quickcheck-replay=641600 to reproduce.
+    end
+      end:                                                                     
        FAIL
+        Exception: todo: Course.ListZipper#end
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:524»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      end never changes the zipper's contents:                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toList
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:92»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=338045 to reproduce.
+      never have rights after calling end:                                     
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#end
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:524»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=330761 to reproduce.
+    start
+      start:                                                                   
        FAIL
+        Exception: todo: Course.ListZipper#start
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:538»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      start never changes the zipper's contents:                               
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toList
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:92»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=837438 to reproduce.
+      never have lefts after calling start:                                    
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#start
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:538»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=92310 to reproduce.
+    deletePullLeft
+      non-empty lefts:                                                         
        FAIL
+        Exception: todo: Course.ListZipper#deletePullLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:551»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty lefts:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#deletePullLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:551»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    deletePullRight
+      non-empty rights:                                                        
        FAIL
+        Exception: todo: Course.ListZipper#deletePullRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:564»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty rights:                                                            
        FAIL
+        Exception: todo: Course.ListZipper#deletePullRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:564»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+    insertPushLeft
+      non-empty lefts:                                                         
        FAIL
+        Exception: todo: Course.ListZipper#insertPushLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:580»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty lefts:                                                             
        FAIL
+        Exception: todo: Course.ListZipper#insertPushLeft
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:580»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      deletePullLeft . insertPushLeft == id:                                   
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toOptional
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:127»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        0
+        Use --quickcheck-replay=389162 to reproduce.
+    insertPushRight
+      non-empty rights:                                                        
        FAIL
+        Exception: todo: Course.ListZipper#insertPushRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:596»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      empty rights:                                                            
        FAIL
+        Exception: todo: Course.ListZipper#insertPushRight
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:596»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+      deletePullRight . insertPushRight == id:                                 
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper#toOptional
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:127»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        0
+        Use --quickcheck-replay=173350 to reproduce.
+    Applicative
+      pure produces infinite lefts:                                            
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Apply (<*>)#instance ((->) t)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=568135 to reproduce.
+      pure produces infinite rights:                                           
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Apply (<*>)#instance ((->) t)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=315523 to reproduce.
+      <*> applies functions to corresponding elements in zipper:               
        FAIL
+        Exception: todo: Course.ListZipper (<*>)#instance ListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:614»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Applicative (MaybeListZipper)
+      pure produces infinite lefts:                                            
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Apply (<*>)#instance ((->) t)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=824521 to reproduce.
+      pure produces infinite rights:                                           
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.Apply (<*>)#instance ((->) t)
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/Applicative.hs»»:«:compilation-line-number:132»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Applicative
+        0
+        0
+        Use --quickcheck-replay=151535 to reproduce.
+      IsZ <*> IsZ:                                                             
        FAIL
+        Exception: todo: Course.ListZipper (<*>)#instance MaybeListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:640»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+      IsNotZ <*> IsZ:                                                          
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper (<*>)#instance MaybeListZipper
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:640»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=954645 to reproduce.
+      IsNotZ <*> IsNotZ:                                                       
        FAIL
+        Exception: todo: Course.ListZipper (<*>)#instance MaybeListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:640»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Extend
+      zipper o' zippers:                                                       
        FAIL
+        Exception: todo: Course.ListZipper (<<=)#instance ListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:651»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Extend (MaybeListZipper)
+      IsNotZ:                                                                  
        FAIL
+        Exception: todo: Course.ListZipper (<<=)#instance MaybeListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:664»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+      IsZ:                                                                     
        FAIL
+        Exception: todo: Course.ListZipper (<<=)#instance MaybeListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:664»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Comonad
+      copure:                                                                  
        FAIL
+        Exception: todo: Course.ListZipper copure#instance ListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:673»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Traversable
+      All Full:                                                                
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper traverse#instance ListZipper
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:686»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=575918 to reproduce.
+      One Empty:                                                               
        FAIL
+        Exception: todo: Course.ListZipper traverse#instance ListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:686»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+    Traversable (MaybeListZipper)
+      IsNotZ:                                                                  
        FAIL
+        Exception: todo: Course.ListZipper traverse#instance MaybeListZipper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:699»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+      IsZ Full:                                                                
        FAIL
+        *** Failed! (after 1 test):
+        Exception:
+          todo: Course.ListZipper traverse#instance MaybeListZipper
+          CallStack (from HasCallStack):
+            error, called at 
«U:«:compilation-error:src/Course/ListZipper.hs»»:«:compilation-line-number:699»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.ListZipper
+        [] >0< []
+        Use --quickcheck-replay=903857 to reproduce.
+  Parser
+    constantParserTest
+      can return error result:                                                 
        OK
+      can return ParseResult:                                                  
        OK
+    characterTest
+      parses single character from non-empty string:                           
        FAIL
+        Exception: todo: Course.Parser#character
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parsing empty string is an error:                                        
        FAIL
+        Exception: todo: Course.Parser#character
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:123»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    functorTest
+      toUpper <$>:                                                             
        FAIL
+        Exception: todo: Course.Parser (<$>)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:136»:«:compilation-column-number:6»
 in course-0.1.4-inplace:Course.Parser
+    valueParserTest
+      succeeds with given value:                                               
        FAIL
+        Exception: todo: Course.Parser#valueParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:146»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    alternativeParserTest
+      first fails, second succeeds with no input:                              
        FAIL
+        Exception: todo: Course.Parser#(|||)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      first always fails, second succeeds with no input:                       
        FAIL
+        Exception: todo: Course.Parser#(|||)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      first always fails, second succeeds with input:                          
        FAIL
+        Exception: todo: Course.Parser#(|||)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      takes first parse result when it succeeds:                               
        FAIL
+        Exception: todo: Course.Parser#(|||)
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    parserMonadInstanceTest
+      first parse fails:                                                       
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      second parse fails:                                                      
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      bind to valueParser:                                                     
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      bind to valueParser with no more input:                                  
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      bind to character parser with remaining input:                           
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+    parserApplicativeInstanceTest
+      pure:                                                                    
        FAIL
+        Exception: todo: Course.Parser#valueParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:146»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      pure an Optional value:                                                  
        FAIL
+        Exception: todo: Course.Parser#valueParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:146»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      pure toUpper <*>:                                                        
        FAIL
+        Exception: todo: Course.Parser (<*>)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:217»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      pure show <*>:                                                           
        FAIL
+        Exception: todo: Course.Parser (<*>)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:217»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+    satisfyTest
+      when character satisfies predicate:                                      
        FAIL
+        Exception: todo: Course.Parser#satisfy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:236»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      is error when preidcate not satisfied:                                   
        FAIL
+        Exception: todo: Course.Parser#satisfy
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:236»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    digitTest
+      is error when input empty:                                               
        FAIL
+        Exception: todo: Course.Parser#digit
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:260»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      is error when character not digit:                                       
        FAIL
+        Exception: todo: Course.Parser#digit
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:260»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      succeeds when character is a digit  :                                    
        FAIL
+        Exception: todo: Course.Parser#digit
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:260»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    spaceTest
+      fails when input empty:                                                  
        FAIL
+        Exception: todo: Course.Parser#space
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:273»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails when character not space:                                          
        FAIL
+        Exception: todo: Course.Parser#space
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:273»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      succeeds when first character is a space:                                
        FAIL
+        Exception: todo: Course.Parser#space
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:273»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    listTest
+      succeeds on empty input:                                                 
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses for as long as characters match:                                  
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses empty value when no matching characters:                          
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses entire input if matches:                                          
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses for as long as characters match:                                  
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      succeeds on empty input with value parser:                               
        FAIL
+        Exception: todo: Course.Parser#list
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:300»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    list1Test
+      succeeds when at least one character matches:                            
        FAIL
+        Exception: todo: Course.Parser#list1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:319»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      succeeds when at least one character matches:                            
        FAIL
+        Exception: todo: Course.Parser#list1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:319»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      no matching chars fails:                                                 
        FAIL
+        Exception: todo: Course.Parser#list1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:319»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    spaces1Test
+      fails on empty string:                                                   
        FAIL
+        Exception: todo: Course.Parser#spaces1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      consumes single space:                                                   
        FAIL
+        Exception: todo: Course.Parser#spaces1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      consumes multiple spaces:                                                
        FAIL
+        Exception: todo: Course.Parser#spaces1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    lowerTest
+      fails on empty string:                                                   
        FAIL
+        Exception: todo: Course.Parser#lower
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails if character is not lowercase:                                     
        FAIL
+        Exception: todo: Course.Parser#lower
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces lowercase character:                                            
        FAIL
+        Exception: todo: Course.Parser#lower
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    upperTest
+      fails on empty string:                                                   
        FAIL
+        Exception: todo: Course.Parser#upper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails if character is not uppercase:                                     
        FAIL
+        Exception: todo: Course.Parser#upper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces uppercase character:                                            
        FAIL
+        Exception: todo: Course.Parser#upper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    alphaTest
+      fails on empty string:                                                   
        FAIL
+        Exception: todo: Course.Parser#alpha
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails if character is not alpha:                                         
        FAIL
+        Exception: todo: Course.Parser#alpha
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces alpha character:                                                
        FAIL
+        Exception: todo: Course.Parser#upper
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:356»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    sequenceParserTest
+      fails on first failing parser:                                           
        FAIL
+        Exception: todo: Course.Parser#sequenceParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:385»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      sequences list of successful parsers:                                    
        FAIL
+        Exception: todo: Course.Parser#sequenceParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:385»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    thisManyTest
+      fails when not enough matches:                                           
        FAIL
+        Exception: todo: Course.Parser#thisMany
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:402»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces n values when matched:                                          
        FAIL
+        Exception: todo: Course.Parser#thisMany
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:402»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    ageParserTest (done for you)
+      fails on invalid age (all letters):                                      
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      fails on invalid age (leading '-'):                                      
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+      parses valid age:                                                        
        FAIL
+        Exception: todo: Course.Parser (=<<)#instance Parser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:202»:«:compilation-column-number:5»
 in course-0.1.4-inplace:Course.Parser
+    firstNameParserTest
+      fails on first name that doesn't start with a capital:                   
        FAIL
+        Exception: todo: Course.Parser#firstNameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:435»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses valid first name:                                                 
        FAIL
+        Exception: todo: Course.Parser#firstNameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:435»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    surnameParserTest
+      fails on short surname:                                                  
        FAIL
+        Exception: todo: Course.Parser#surnameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on short surname starting with a lower case letter:                
        FAIL
+        Exception: todo: Course.Parser#surnameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses shortest valid surname:                                           
        FAIL
+        Exception: todo: Course.Parser#surnameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses long surname:                                                     
        FAIL
+        Exception: todo: Course.Parser#surnameParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:457»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    smokerParserTest
+      fails on non y/n value:                                                  
        FAIL
+        Exception: todo: Course.Parser#smokerParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:476»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses y, leaving remaining input:                                       
        FAIL
+        Exception: todo: Course.Parser#smokerParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:476»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses n, leaving remaining input:                                       
        FAIL
+        Exception: todo: Course.Parser#smokerParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:476»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    phoneBodyParserTest
+      produces empty list when no characters match:                            
        FAIL
+        Exception: todo: Course.Parser#phoneBodyParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses valid phone body value:                                           
        FAIL
+        Exception: todo: Course.Parser#phoneBodyParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      parses up to first letter:                                               
        FAIL
+        Exception: todo: Course.Parser#phoneBodyParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:498»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    phoneParserTest
+      fails without trailing '#':                                              
        FAIL
+        Exception: todo: Course.Parser#phoneParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:520»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails when input starts with a letter:                                   
        FAIL
+        Exception: todo: Course.Parser#phoneParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:520»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces valid phone number:                                             
        FAIL
+        Exception: todo: Course.Parser#phoneParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:520»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces a valid phone number with remaining input:                      
        FAIL
+        Exception: todo: Course.Parser#phoneParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:520»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+    personParserTest
+      fails on empty string:                                                   
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on invalid age:                                                    
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on first name that doesn't start with capital:                     
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on surname that is too short:                                      
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on surname that doesn't start with a capital letter:               
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on invalid smoker value 'x':                                       
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on phone number containing an 'x':                                 
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on phone number starting with '-':                                 
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      fails on phone number without a trailing '#':                            
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces person for valid input:                                         
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces person for valid input and keeps remaining input:               
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+      produces person for valid input containing extra whitespace:             
        FAIL
+        Exception: todo: Course.Parser#personParser
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Parser.hs»»:«:compilation-line-number:578»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Parser
+  MoreParser
+    spacesTest
+      can parse zero spaces:                                                   
        FAIL
+        Exception: todo: Course.MoreParser#spaces
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:44»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      can parse single space:                                                  
        FAIL
+        Exception: todo: Course.MoreParser#spaces
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:44»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      can parse multiple spaces:                                               
        FAIL
+        Exception: todo: Course.MoreParser#spaces
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:44»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    tokTest
+      can parse input without spaces:                                          
        FAIL
+        Exception: todo: Course.MoreParser#tok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:60»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      can parse single space:                                                  
        FAIL
+        Exception: todo: Course.MoreParser#tok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:60»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      can parse multiple spaces:                                               
        FAIL
+        Exception: todo: Course.MoreParser#tok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:60»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    charTokTest
+      fails when character does not match:                                     
        FAIL
+        Exception: todo: Course.MoreParser#charTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching character:                                               
        FAIL
+        Exception: todo: Course.MoreParser#charTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching character, dropping space:                               
        FAIL
+        Exception: todo: Course.MoreParser#charTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching character, dropping spaces:                              
        FAIL
+        Exception: todo: Course.MoreParser#charTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:75»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    commaTokTest
+      fails when character is not a comma:                                     
        FAIL
+        Exception: todo: Course.MoreParser#commaTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:89»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses leading comma:                                                    
        FAIL
+        Exception: todo: Course.MoreParser#commaTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:89»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses leading comma, dropping space:                                    
        FAIL
+        Exception: todo: Course.MoreParser#commaTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:89»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses leading comma, dropping multiple spaces:                          
        FAIL
+        Exception: todo: Course.MoreParser#commaTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:89»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    quoteTest
+      fails when character is not a single or double quote:                    
        FAIL
+        Exception: todo: Course.MoreParser#quote
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:106»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses single quote:                                                     
        FAIL
+        Exception: todo: Course.MoreParser#quote
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:106»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses double quote:                                                     
        FAIL
+        Exception: todo: Course.MoreParser#quote
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:106»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    stringTest
+      fails when string is not matched:                                        
        FAIL
+        Exception: todo: Course.MoreParser#string
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:121»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching string, leaves remaining input:                          
        FAIL
+        Exception: todo: Course.MoreParser#string
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:121»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching string:                                                  
        FAIL
+        Exception: todo: Course.MoreParser#string
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:121»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    stringTokTest
+      fails when string is not matched:                                        
        FAIL
+        Exception: todo: Course.MoreParser#stringTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:136»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching string followed by zero spaces:                          
        FAIL
+        Exception: todo: Course.MoreParser#stringTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:136»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses matching string followed by many spaces:                          
        FAIL
+        Exception: todo: Course.MoreParser#stringTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:136»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    optionTest
+      produces parsed value when parser succeeds:                              
        FAIL
+        Exception: todo: Course.MoreParser#option
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:152»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      produces given value when parser fails:                                  
        FAIL
+        Exception: todo: Course.MoreParser#option
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:152»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    digits1Test
+      fails when no digits at start of input:                                  
        FAIL
+        Exception: todo: Course.MoreParser#digits1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:166»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on digits:                                                      
        FAIL
+        Exception: todo: Course.MoreParser#digits1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:166»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on digits, leaves remaining input:                              
        FAIL
+        Exception: todo: Course.MoreParser#digits1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:166»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    oneofTest
+      fails when given character not in string:                                
        FAIL
+        Exception: todo: Course.MoreParser#oneof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:181»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      given character prefixes input:                                          
        FAIL
+        Exception: todo: Course.MoreParser#oneof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:181»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    noneofTest
+      fails when one of given characters prefixes input:                       
        FAIL
+        Exception: todo: Course.MoreParser#noneof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:196»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when none of the given characters in input:                     
        FAIL
+        Exception: todo: Course.MoreParser#noneof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:196»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when none of the given characters prefixes input:               
        FAIL
+        Exception: todo: Course.MoreParser#noneof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:196»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    betweenTest
+      fails when opening parse fails:                                          
        FAIL
+        Exception: todo: Course.MoreParser#between
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:220»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when surrounded parser fails:                                      
        FAIL
+        Exception: todo: Course.MoreParser#between
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:220»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when closing parse fails:                                          
        FAIL
+        Exception: todo: Course.MoreParser#between
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:220»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds: character surrounded by []':                                   
        FAIL
+        Exception: todo: Course.MoreParser#between
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:220»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds: digits surrounded by []:                                       
        FAIL
+        Exception: todo: Course.MoreParser#between
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:220»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    betweenCharTokTest
+      fails when opening character not present:                                
        FAIL
+        Exception: todo: Course.MoreParser#betweenCharTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:243»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when closing character not present:                                
        FAIL
+        Exception: todo: Course.MoreParser#betweenCharTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:243»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when surrounded parser fails:                                      
        FAIL
+        Exception: todo: Course.MoreParser#betweenCharTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:243»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds: character:                                                     
        FAIL
+        Exception: todo: Course.MoreParser#betweenCharTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:243»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds: digits1:                                                       
        FAIL
+        Exception: todo: Course.MoreParser#betweenCharTok
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:243»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    hexTest
+      fails on invalid hex string --- too short:                               
        FAIL
+        Exception: todo: Course.MoreParser#hex
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:263»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails on invalid hex string --- invalid char (x):                        
        FAIL
+        Exception: todo: Course.MoreParser#hex
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:263»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on valid hex value:                                             
        FAIL
+        Exception: todo: Course.MoreParser#hex
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:263»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    hexuTest
+      fails when no u at start:                                                
        FAIL
+        Exception: todo: Course.MoreParser#hexu
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:286»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when not 4 hex digits after u:                                     
        FAIL
+        Exception: todo: Course.MoreParser#hexu
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:286»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails on invalid hex digit:                                              
        FAIL
+        Exception: todo: Course.MoreParser#hexu
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:286»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on valid input --- u0010:                                       
        FAIL
+        Exception: todo: Course.MoreParser#hexu
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:286»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on valid input --- u0a1f:                                       
        FAIL
+        Exception: todo: Course.MoreParser#hexu
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:286»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    sepby1Test
+      fails when first parser fails:                                           
        FAIL
+        Exception: todo: Course.MoreParser#sepby1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:309»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses single character not followed by seperator:                       
        FAIL
+        Exception: todo: Course.MoreParser#sepby1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:309»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      parses multiple matches with separators:                                 
        FAIL
+        Exception: todo: Course.MoreParser#sepby1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:309»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds until two separators:                                           
        FAIL
+        Exception: todo: Course.MoreParser#sepby1
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:309»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    sepbyTest
+      succeeds on empty string:                                                
        FAIL
+        Exception: todo: Course.MoreParser#sepby
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on single match without seperator:                              
        FAIL
+        Exception: todo: Course.MoreParser#sepby
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds on multiple matches with seperators:                            
        FAIL
+        Exception: todo: Course.MoreParser#sepby
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds until two separators:                                           
        FAIL
+        Exception: todo: Course.MoreParser#sepby
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:332»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    eofTest
+      fails when still input left:                                             
        FAIL
+        Exception: todo: Course.MoreParser#eof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when no input left:                                             
        FAIL
+        Exception: todo: Course.MoreParser#eof
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:344»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    satisfyAllTest
+      fails when a predicate fails:                                            
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAll
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when no predicates satisfied (empty input):                        
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAll
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when no predicates satisfied:                                      
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAll
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when all predicates satisfied: ABC:                             
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAll
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when all predicates satisfied: ABc:                             
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAll
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:368»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    satisfyAnyTest
+      fails when no predicates satisfied:                                      
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAny
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:389»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when no predicates satisfied (empty input):                        
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAny
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:389»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when all predicates satisfied:                                  
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAny
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:389»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds when one of two predicates satisfied:                           
        FAIL
+        Exception: todo: Course.MoreParser#satisfyAny
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:389»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+    betweenSepbyCommaTest
+      fails when opening char missing:                                         
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when closing char missing:                                         
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when input between seperators doesn't match (multiple matches):    
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      fails when input between seperators doesn't match:                       
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds --- one match:                                                  
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds --- nothing between surrounds:                                  
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds --- 3 matches:                                                  
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds --- 3 padded matches:                                           
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+      succeeds --- digits1:                                                    
        FAIL
+        Exception: todo: Course.MoreParser#betweenSepbyComma
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/MoreParser.hs»»:«:compilation-line-number:427»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.MoreParser
+  JsonParser
+    jsonString
+      parse whole ASCII input:                                                 
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parse only the first string of input:                                    
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parse back slash (\):                                                    
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parse unicode (\u00abc):                                                 
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parse unicode (\u00ff):                                                  
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parse unicode (\u00fa):                                                  
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parsing string without quotes is an error:                               
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      parsing string containing \a is an error - \a isn't a special character: 
        FAIL
+        Exception: todo: Course.JsonParser#jsonString
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:113»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonNumber
+      positive whole:                                                          
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      negative whole:                                                          
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      positive decimal:                                                        
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      negative whole (2):                                                      
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      negative decimal:                                                        
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      negative sign on its own is error:                                       
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      alphabetic characters is error:                                          
        FAIL
+        Exception: todo: Course.JsonParser#jsonNumber
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:142»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonTrue
+      parses true:                                                             
        FAIL
+        Exception: todo: Course.JsonParser#jsonTrue
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:156»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      TRUE (caps) is an error:                                                 
        FAIL
+        Exception: todo: Course.JsonParser#jsonTrue
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:156»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonFalse
+      parses false:                                                            
        FAIL
+        Exception: todo: Course.JsonParser#jsonFalse
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      FALSE (caps) is an error:                                                
        FAIL
+        Exception: todo: Course.JsonParser#jsonFalse
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:170»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonNull
+      parses null:                                                             
        FAIL
+        Exception: todo: Course.JsonParser#jsonNull
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:184»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      NULL (caps) is an error:                                                 
        FAIL
+        Exception: todo: Course.JsonParser#jsonNull
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:184»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonArray
+      []:                                                                      
        FAIL
+        Exception: todo: Course.JsonParser#jsonArray
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:207»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      [true]:                                                                  
        FAIL
+        Exception: todo: Course.JsonParser#jsonArray
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:207»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      [true, "abc"]:                                                           
        FAIL
+        Exception: todo: Course.JsonParser#jsonArray
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:207»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      [true, "abc", []]:                                                       
        FAIL
+        Exception: todo: Course.JsonParser#jsonArray
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:207»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      [true, "abc", [false]]:                                                  
        FAIL
+        Exception: todo: Course.JsonParser#jsonArray
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:207»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonObject
+      empty:                                                                   
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      one key:                                                                 
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      two keys:                                                                
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      two keys and left over input:                                            
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+    jsonValue
+      true:                                                                    
        FAIL
+        Exception: todo: Course.JsonParser#jsonValue
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:244»:«:compilation-column-number:4»
 in course-0.1.4-inplace:Course.JsonParser
+      object:                                                                  
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+      nested object:                                                           
        FAIL
+        Exception: todo: Course.JsonParser#jsonObject
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/JsonParser.hs»»:«:compilation-line-number:227»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.JsonParser
+  Cheque
+    dollars
+      empty:                                                                   
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1':                                                             
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '0.1':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1.':                                                            
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '0.':                                                            
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '0.0':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '.34':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '0.3456789':                                                     
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1.0':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1.01':                                                          
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars 'a1a':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars 'a1a.a0.7b':                                                     
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100':                                                           
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100.0':                                                         
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100.00':                                                        
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100.00000':                                                     
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1000456.13':                                                    
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '1001456.13':                                                    
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '16000000456.13':                                                
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100.45':                                                        
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '100.07':                                                        
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '9abc9def9ghi.jkl9mno':                                          
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars '12345.67':                                                      
        FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+      dollars 
'456789123456789012345678901234567890123456789012345678901234567890.12': FAIL
+        Exception: todo: Course.Cheque#dollars
+        CallStack (from HasCallStack):
+          error, called at 
«U:«:compilation-error:src/Course/Cheque.hs»»:«:compilation-line-number:327»:«:compilation-column-number:3»
 in course-0.1.4-inplace:Course.Cheque
+
+568 out of 591 tests failed (0.06s)
+
+Test suite tasty: FAIL
+Test suite logged to:
+/home/tseenshe/fp-course/dist-newstyle/build/x86_64-linux/ghc-8.4.4/course-0.1.4/t/tasty/noopt/test/course-0.1.4-tasty.log
+0 of 1 test suites (0 of 1 test cases) passed.
+cabal: Tests failed for test:tasty from course-0.1.4.
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]