[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode 6e4849c 112/385: some compilation test ca
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode 6e4849c 112/385: some compilation test cases |
Date: |
Tue, 5 Oct 2021 23:59:12 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit 6e4849cc574dd67d02b17097ee5bee9b14075e03
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
some compilation test cases
---
haskell-tng-compile.el | 10 +
test/src/ghc-8.4.4-error.compile | 23 +
test/src/ghc-8.4.4-warning.compile | 29 +
test/src/hspec-failure.compile | 743 ++++++++++
test/src/tasty-failure.compile | 2756 ++++++++++++++++++++++++++++++++++++
5 files changed, 3561 insertions(+)
diff --git a/haskell-tng-compile.el b/haskell-tng-compile.el
index cfcc193..3625f3a 100644
--- a/haskell-tng-compile.el
+++ b/haskell-tng-compile.el
@@ -10,8 +10,18 @@
;;
;;; Code:
+(require 'compile)
+(require 'ansi-color)
+
;; FIXME implement batch compilation
+;; TODO prettify-symbol rules for home dirs and project dirs, etc
+
+(defvar haskell-tng-compile:regexp-alist
+)
+
+;;(define-compilation-mode )
+
;; FIXME how to test batch compilation? Canned responses for the errors and
;; perhaps an interactive call on a small no-dep project, like ffunctor.
diff --git a/test/src/ghc-8.4.4-error.compile b/test/src/ghc-8.4.4-error.compile
new file mode 100644
index 0000000..3b786a4
--- /dev/null
+++ b/test/src/ghc-8.4.4-error.compile
@@ -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
)
+
+lib/StackageToHackage/Hackage.hs:33: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-warning.compile
b/test/src/ghc-8.4.4-warning.compile
new file mode 100644
index 0000000..6d02ee8
--- /dev/null
+++ b/test/src/ghc-8.4.4-warning.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 (
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
)
+
+lib/StackageToHackage/Hackage.hs:13: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/hspec-failure.compile b/test/src/hspec-failure.compile
new file mode 100644
index 0000000..e8ed12a
--- /dev/null
+++ b/test/src/hspec-failure.compile
@@ -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:
+
+ test/HpackSpec.hs:80: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 b/test/src/tasty-failure.compile
new file mode 100644
index 0000000..422b3b6
--- /dev/null
+++ b/test/src/tasty-failure.compile
@@ -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:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#mapOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:31:3 in
course-0.1.4-inplace:Course.Optional
+[m Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#mapOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:31:3 in
course-0.1.4-inplace:Course.Optional
+[m bindOptional
+ Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#bindOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:48:3 in
course-0.1.4-inplace:Course.Optional
+[m even dec, odd inc, even input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#bindOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:48:3 in
course-0.1.4-inplace:Course.Optional
+[m even dec, odd inc, odd input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#bindOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:48:3 in
course-0.1.4-inplace:Course.Optional
+[m ??
+ Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(??)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:62:3 in
course-0.1.4-inplace:Course.Optional
+[m Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(??)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:62:3 in
course-0.1.4-inplace:Course.Optional
+[m <+>
+ first Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(<+>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:83:3 in
course-0.1.4-inplace:Course.Optional
+[m both Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(<+>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:83:3 in
course-0.1.4-inplace:Course.Optional
+[m first Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(<+>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:83:3 in
course-0.1.4-inplace:Course.Optional
+[m both empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#(<+>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:83:3 in
course-0.1.4-inplace:Course.Optional
+[m optional
+ replaces full data constructor:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:98:3 in
course-0.1.4-inplace:Course.Optional
+[m replaces empty data constructor:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Optional#optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Optional.hs:98:3 in
course-0.1.4-inplace:Course.Optional
+[m List
+ headOr
+ headOr on non-empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+[m headOr on empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+[m headOr on infinity always 0:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=218885 to reproduce.
+[m headOr on empty list always the default:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=779618 to reproduce.
+[m productTest
+ product of empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#product
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:95:3 in
course-0.1.4-inplace:Course.List
+[m product of 1..3:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#product
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:95:3 in
course-0.1.4-inplace:Course.List
+[m product of 1..4:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#product
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:95:3 in
course-0.1.4-inplace:Course.List
+[m sum
+ sum 1..3:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#sum
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:110:3 in
course-0.1.4-inplace:Course.List
+[m sum 1..4:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#sum
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:110:3 in
course-0.1.4-inplace:Course.List
+[m subtracting each element in a list from its sum is always 0:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#sum
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:110:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=345519 to reproduce.
+[m length
+ length 1..3:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#length
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:122:3 in
course-0.1.4-inplace:Course.List
+[m summing a list of 1s is equal to its length:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#length
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:122:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=679566 to reproduce.
+[m map
+ add 10 on list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#map
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:137:3 in
course-0.1.4-inplace:Course.List
+[m headOr after map:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=920194 to reproduce.
+[m map id is id:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#map
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:137:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=666065 to reproduce.
+[m filter
+ filter even:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#filter
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:154:3 in
course-0.1.4-inplace:Course.List
+[m filter (const True) is identity (headOr):
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=149662 to reproduce.
+[m filter (const True) is identity:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#filter
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:154:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=914136 to reproduce.
+[m filter (const False) is the empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#filter
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:154:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=323113 to reproduce.
+[m (++)
+ (1..6):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#(++)
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:173:3 in
course-0.1.4-inplace:Course.List
+[m append empty to infinite:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=525683 to reproduce.
+[m append anything to infinity:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ (0,[])
+ Use --quickcheck-replay=970556 to reproduce.
+[m associativity:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#(++)
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:173:3 in
course-0.1.4-inplace:Course.List
+ ([],[],[])
+ Use --quickcheck-replay=942050 to reproduce.
+[m append to empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#(++)
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:173:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=430345 to reproduce.
+[m flatten
+ (1..9):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#flatten
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:191:3 in
course-0.1.4-inplace:Course.List
+[m flatten (infinity :. y):
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ (0,[])
+ Use --quickcheck-replay=266051 to reproduce.
+[m flatten (y :. infinity):
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ (0,[])
+ Use --quickcheck-replay=691387 to reproduce.
+[m sum of lengths == length of flattened:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#sum
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:110:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=292173 to reproduce.
+[m flatMap
+ lists of Integer:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#flatMap
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:208:3 in
course-0.1.4-inplace:Course.List
+[m flatMap id flattens a list of lists:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ (0,[])
+ Use --quickcheck-replay=199462 to reproduce.
+[m flatMap id on a list of lists take 2:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#headOr
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:79:3 in
course-0.1.4-inplace:Course.List
+ (0,[])
+ Use --quickcheck-replay=213627 to reproduce.
+[m flatMap id == flatten:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#flatMap
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:208:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=413820 to reproduce.
+[m flattenAgain
+ lists of Integer:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#flatten
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:191:3 in
course-0.1.4-inplace:Course.List
+ []
+ Use --quickcheck-replay=279553 to reproduce.
+[m seqOptional
+ all Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#seqOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:246:3 in
course-0.1.4-inplace:Course.List
+[m empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#seqOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:246:3 in
course-0.1.4-inplace:Course.List
+[m contains Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#seqOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:246:3 in
course-0.1.4-inplace:Course.List
+[m Empty at head of infinity:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#seqOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:246:3 in
course-0.1.4-inplace:Course.List
+[m find
+ find no matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#find
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:269:3 in
course-0.1.4-inplace:Course.List
+[m empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#find
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:269:3 in
course-0.1.4-inplace:Course.List
+[m find only even:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#find
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:269:3 in
course-0.1.4-inplace:Course.List
+[m find first, not second even:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#find
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:269:3 in
course-0.1.4-inplace:Course.List
+[m find on infinite list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#find
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:269:3 in
course-0.1.4-inplace:Course.List
+[m lengthGT4
+ list of length 3:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#lengthGT4
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:288:3 in
course-0.1.4-inplace:Course.List
+[m list of length 4:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#lengthGT4
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:288:3 in
course-0.1.4-inplace:Course.List
+[m empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#lengthGT4
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:288:3 in
course-0.1.4-inplace:Course.List
+[m list of length 5:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#lengthGT4
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:288:3 in
course-0.1.4-inplace:Course.List
+[m infinite list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#lengthGT4
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:288:3 in
course-0.1.4-inplace:Course.List
+[m reverse
+ empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#reverse
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:305:3 in
course-0.1.4-inplace:Course.List
+[m reverse . reverse on largeList:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.List#reverse
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:305:3 in
course-0.1.4-inplace:Course.List
+[m reverse then append is same as append then reverse:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#(++)
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:173:3 in
course-0.1.4-inplace:Course.List
+ ([],[])
+ Use --quickcheck-replay=534070 to reproduce.
+[m reverse single element list is the list:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.List#reverse
+ CallStack (from HasCallStack):
+ error, called at src/Course/List.hs:305:3 in
course-0.1.4-inplace:Course.List
+ 0
+ Use --quickcheck-replay=23999 to reproduce.
+[m produce
+ increment:
[32;22mOK[m[32;22m
+[m double:
[32;22mOK[m[32;22m
+[m Functor
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:45:5 in
course-0.1.4-inplace:Course.Functor
+[m List
+ empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:60:5 in
course-0.1.4-inplace:Course.Functor
+[m increment:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:60:5 in
course-0.1.4-inplace:Course.Functor
+[m Optional
+ Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:75:5 in
course-0.1.4-inplace:Course.Functor
+[m Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:75:5 in
course-0.1.4-inplace:Course.Functor
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:87:5 in
course-0.1.4-inplace:Course.Functor
+[m (<$)
+ Map 7:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor#(<$)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:103:3 in
course-0.1.4-inplace:Course.Functor
+[m Always maps a constant value over List:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Functor#(<$)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:103:3 in
course-0.1.4-inplace:Course.Functor
+ 0
+ 0
+ 0
+ 0
+ Use --quickcheck-replay=204341 to reproduce.
+[m Always maps a constant value over Full (Optional):
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Functor#(<$)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:103:3 in
course-0.1.4-inplace:Course.Functor
+ 0
+ 0
+ Use --quickcheck-replay=847361 to reproduce.
+[m void
+ List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor#void
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:123:3 in
course-0.1.4-inplace:Course.Functor
+[m Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor#void
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:123:3 in
course-0.1.4-inplace:Course.Functor
+[m Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor#void
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:123:3 in
course-0.1.4-inplace:Course.Functor
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor#void
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:123:3 in
course-0.1.4-inplace:Course.Functor
+[m Applicative
+ ExactlyOne instance
+ pure == ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative pure#instance ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:51:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ Use --quickcheck-replay=746459 to reproduce.
+[m Applying within ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative (<*>)#instance
ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:57:5 in
course-0.1.4-inplace:Course.Applicative
+[m List instance
+ pure:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative pure#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:70:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ Use --quickcheck-replay=375608 to reproduce.
+[m <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:76:5 in
course-0.1.4-inplace:Course.Applicative
+[m lift1
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m empty List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional instance
+ pure:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative pure#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:95:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ Use --quickcheck-replay=592324 to reproduce.
+[m Full <*> Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:101:5 in
course-0.1.4-inplace:Course.Applicative
+[m Empty <*> Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:101:5 in
course-0.1.4-inplace:Course.Applicative
+[m Full <*> Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:101:5 in
course-0.1.4-inplace:Course.Applicative
+[m Function instance
+ addition:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+[m more addition:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+[m even more addition:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+[m addition and multiplication:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+[m more addition and multiplcation:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+[m pure:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative pure#((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:126:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=134543 to reproduce.
+[m lift2
+ + over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - all full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - first Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - second Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over functions:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift2
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:161:3 in
course-0.1.4-inplace:Course.Applicative
+[m lift3
+ + over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - third Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - first Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - first and second Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over functions:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift3
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:194:3 in
course-0.1.4-inplace:Course.Applicative
+[m lift4
+ + over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - third Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - first Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over Optional - first and second Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over functions:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift4
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:228:3 in
course-0.1.4-inplace:Course.Applicative
+[m lift1
+ + over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over empty List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m + over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#lift1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:255:3 in
course-0.1.4-inplace:Course.Applicative
+[m rightApply
+ *> over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+[m *> over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+[m another *> over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+[m *> over Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+[m *> over List property:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Use --quickcheck-replay=449856 to reproduce.
+[m *> over Optional property:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative#(*>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:281:3 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=358238 to reproduce.
+[m leftApply
+ <* over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+[m another <* over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+[m Yet another <* over List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+[m <* over Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+[m <* over List property:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Use --quickcheck-replay=621753 to reproduce.
+[m <* over Optional property:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Applicative#(<*)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:307:3 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=455616 to reproduce.
+[m sequence
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#sequence
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:330:3 in
course-0.1.4-inplace:Course.Applicative
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#sequence
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:330:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional with an empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#sequence
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:330:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#sequence
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:330:3 in
course-0.1.4-inplace:Course.Applicative
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#sequence
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:330:3 in
course-0.1.4-inplace:Course.Applicative
+[m replicateA
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#replicateA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:356:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional - Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#replicateA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:356:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional - Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#replicateA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:356:3 in
course-0.1.4-inplace:Course.Applicative
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#replicateA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:356:3 in
course-0.1.4-inplace:Course.Applicative
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#replicateA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:356:3 in
course-0.1.4-inplace:Course.Applicative
+[m filtering
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional - all true:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional - some false:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m Optional - some empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative#filtering
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:384:3 in
course-0.1.4-inplace:Course.Applicative
+[m Monad
+ (=<<) for ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad (=<<)#instance ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:40:5 in
course-0.1.4-inplace:Course.Monad
+[m (=<<) for List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad (=<<)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:52:5 in
course-0.1.4-inplace:Course.Monad
+[m (=<<) for Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad (=<<)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:64:5 in
course-0.1.4-inplace:Course.Monad
+[m (=<<) for (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad (=<<)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:76:5 in
course-0.1.4-inplace:Course.Monad
+[m <**>
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m Optional - empty function:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m Optional - empty value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m (->) 1:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m (->) 2:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m (->) 3:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m (->) 4:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m (->) 5:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<**>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:115:3 in
course-0.1.4-inplace:Course.Monad
+[m join
+ List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#join
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:137:3 in
course-0.1.4-inplace:Course.Monad
+[m Optional with Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#join
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:137:3 in
course-0.1.4-inplace:Course.Monad
+[m Optional all Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#join
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:137:3 in
course-0.1.4-inplace:Course.Monad
+[m (->):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#join
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:137:3 in
course-0.1.4-inplace:Course.Monad
+[m (>>=):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(>>=)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:151:3 in
course-0.1.4-inplace:Course.Monad
+[m kleislyComposition:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(<=<)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:167:3 in
course-0.1.4-inplace:Course.Monad
+[m State
+ get:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#get
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:61:3 in
course-0.1.4-inplace:Course.State
+[m put:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#put
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:71:3 in
course-0.1.4-inplace:Course.State
+[m (<$>):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#(<$>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:83:5 in
course-0.1.4-inplace:Course.State
+[m Applicative
+ pure:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State pure#instance (State s)
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:100:5 in
course-0.1.4-inplace:Course.State
+[m <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State (<*>)#instance (State s)
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:106:5 in
course-0.1.4-inplace:Course.State
+[m complicated <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State (<*>)#instance (State s)
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:106:5 in
course-0.1.4-inplace:Course.State
+[m Monad
+ (=<<):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State (=<<)#instance (State s)
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:121:5 in
course-0.1.4-inplace:Course.State
+[m (>>=):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(>>=)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:151:3 in
course-0.1.4-inplace:Course.Monad
+[m findM
+ find 'c' in 'a'..'h':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#findM
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:143:3 in
course-0.1.4-inplace:Course.State
+[m find 'i' in 'a'..'h':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#findM
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:143:3 in
course-0.1.4-inplace:Course.State
+[m firstRepeat
+ 'x' is the only repeat:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+[m 'x' is the first repeat:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+[m no repeats:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+[m finds repeats:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+ []
+ Use --quickcheck-replay=605194 to reproduce.
+[m removing repeats matches nub:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+ []
+ Use --quickcheck-replay=233318 to reproduce.
+[m distinct
+ No repeats:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#distinct
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:170:3 in
course-0.1.4-inplace:Course.State
+[m Every element repeated:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#distinct
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:170:3 in
course-0.1.4-inplace:Course.State
+[m No repeats after distinct:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.State#firstRepeat
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:157:3 in
course-0.1.4-inplace:Course.State
+ []
+ Use --quickcheck-replay=275621 to reproduce.
+[m Every element repeated:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.State#distinct
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:170:3 in
course-0.1.4-inplace:Course.State
+ []
+ Use --quickcheck-replay=224172 to reproduce.
+[m isHappy
+ 4:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#isHappy
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:197:3 in
course-0.1.4-inplace:Course.State
+[m 7:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#isHappy
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:197:3 in
course-0.1.4-inplace:Course.State
+[m 42:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#isHappy
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:197:3 in
course-0.1.4-inplace:Course.State
+[m 44:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.State#isHappy
+ CallStack (from HasCallStack):
+ error, called at src/Course/State.hs:197:3 in
course-0.1.4-inplace:Course.State
+[m StateT
+ <$>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<$>)#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:43:5 in
course-0.1.4-inplace:Course.StateT
+[m Applicative
+ List (pure):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT pure#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:66:5 in
course-0.1.4-inplace:Course.StateT
+[m List (<*>):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:72:5 in
course-0.1.4-inplace:Course.StateT
+[m Optional:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:72:5 in
course-0.1.4-inplace:Course.StateT
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:72:5 in
course-0.1.4-inplace:Course.StateT
+[m Monad
+ bind const:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (=<<)#instance (StateT s f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:88:5 in
course-0.1.4-inplace:Course.StateT
+[m modify:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Monad#(>>=)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Monad.hs:151:3 in
course-0.1.4-inplace:Course.Monad
+[m state':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#state'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:102:3 in
course-0.1.4-inplace:Course.StateT
+[m runState':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#runState'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:113:3 in
course-0.1.4-inplace:Course.StateT
+[m execTTest:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#execT
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:125:3 in
course-0.1.4-inplace:Course.StateT
+[m exec'Test:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#exec'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:136:3 in
course-0.1.4-inplace:Course.StateT
+[m evalTTest:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#evalT
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:148:3 in
course-0.1.4-inplace:Course.StateT
+[m eval'Test:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#eval'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:159:3 in
course-0.1.4-inplace:Course.StateT
+[m getTTest:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#getT
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:169:3 in
course-0.1.4-inplace:Course.StateT
+[m putTTest:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#putT
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:183:3 in
course-0.1.4-inplace:Course.StateT
+[m distinct'
+ removes duplicate 'c's:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#distinct'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:195:3 in
course-0.1.4-inplace:Course.StateT
+[m distinct':
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.StateT#distinct'
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:195:3 in
course-0.1.4-inplace:Course.StateT
+ []
+ Use --quickcheck-replay=48265 to reproduce.
+[m distinctF
+ Full case:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#distinctF
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:213:3 in
course-0.1.4-inplace:Course.StateT
+[m Empty case:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#distinctF
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:213:3 in
course-0.1.4-inplace:Course.StateT
+[m (<$>) for OptionalT:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<$>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:232:5 in
course-0.1.4-inplace:Course.StateT
+[m (<*>) for OptionalT
+ one:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m two:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m three:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m four:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m five:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m six:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m seven:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:270:5 in
course-0.1.4-inplace:Course.StateT
+[m (=<<) for OptionalT:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (=<<)#instance (OptionalT f)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:282:5 in
course-0.1.4-inplace:Course.StateT
+[m (<$>) for Logger:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<$>)#instance (Logger l)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:299:5 in
course-0.1.4-inplace:Course.StateT
+[m Logger Applicative
+ pure:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT pure#instance (Logger l)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:313:5 in
course-0.1.4-inplace:Course.StateT
+[m <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (<*>)#instance (Logger l)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:320:5 in
course-0.1.4-inplace:Course.StateT
+[m (=<<) for Logger:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT (=<<)#instance (Logger l)
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:333:5 in
course-0.1.4-inplace:Course.StateT
+[m log1:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#log1
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:344:3 in
course-0.1.4-inplace:Course.StateT
+[m distinctG
+ Full case:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#distinctG
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:365:3 in
course-0.1.4-inplace:Course.StateT
+[m Empty case:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.StateT#distinctG
+ CallStack (from HasCallStack):
+ error, called at src/Course/StateT.hs:365:3 in
course-0.1.4-inplace:Course.StateT
+[m Validation
+ isError
+ true for errors:
[32;22mOK[m[32;22m
+[m false for values:
[32;22mOK[m[32;22m
+[m not the same as isValue:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m isValue
+ false for errors:
[32;22mOK[m[32;22m
+[m false for values:
[32;22mOK[m[32;22m
+[m not the same as isValue:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m mapValidation
+ errors unchanged:
[32;22mOK[m[32;22m
+[m values changed:
[32;22mOK[m[32;22m
+[m map with id causes no change:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m bindValidation
+ error unchanged:
[32;22mOK[m[32;22m
+[m odd value:
[32;22mOK[m[32;22m
+[m even value:
[32;22mOK[m[32;22m
+[m bind with Value causes no change:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m valueOr
+ falls through for errors:
[32;22mOK[m[32;22m
+[m unwraps values:
[32;22mOK[m[32;22m
+[m isValue or valueOr falls through:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m errorOr
+ unwraps errors:
[32;22mOK[m[32;22m
+[m falls through for values:
[32;22mOK[m[32;22m
+[m isError or errorOr falls through:
[32;22mOK[m[32;22m
+[m[37;22m +++ OK, passed 100 tests.
+[m Extend
+ ExactlyOne instance:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:37:5 in
course-0.1.4-inplace:Course.Extend
+[m List
+ length:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:55:5 in
course-0.1.4-inplace:Course.Extend
+[m id:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:55:5 in
course-0.1.4-inplace:Course.Extend
+[m reverse:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance List
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:55:5 in
course-0.1.4-inplace:Course.Extend
+[m Optional
+ id Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:70:5 in
course-0.1.4-inplace:Course.Extend
+[m id Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend (<<=)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:70:5 in
course-0.1.4-inplace:Course.Extend
+[m cojoin
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend#cojoin
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:90:3 in
course-0.1.4-inplace:Course.Extend
+[m List:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend#cojoin
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:90:3 in
course-0.1.4-inplace:Course.Extend
+[m Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend#cojoin
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:90:3 in
course-0.1.4-inplace:Course.Extend
+[m Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Extend#cojoin
+ CallStack (from HasCallStack):
+ error, called at src/Course/Extend.hs:90:3 in
course-0.1.4-inplace:Course.Extend
+[m Comonad
+ ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Comonad copure#instance ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Comonad.hs:33:5 in
course-0.1.4-inplace:Course.Comonad
+[m <$$>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Comonad#(<$>)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Comonad.hs:45:3 in
course-0.1.4-inplace:Course.Comonad
+[m Traversable
+ listTest
+ traverse on empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Applicative pure#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:95:5 in
course-0.1.4-inplace:Course.Applicative
+[m traverse on non-empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Apply (<*>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:101:5 in
course-0.1.4-inplace:Course.Applicative
+[m exactlyOneTest
+ traverse on ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
ExactlyOne
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:49:5 in
course-0.1.4-inplace:Course.Traversable
+[m optionalTest
+ traverse on Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:58:5 in
course-0.1.4-inplace:Course.Traversable
+[m traverse on Full:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:58:5 in
course-0.1.4-inplace:Course.Traversable
+[m sequenceATest
+ on List over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable#sequenceA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:75:3 in
course-0.1.4-inplace:Course.Traversable
+[m on Optional over ExactlyOne:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable#sequenceA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:75:3 in
course-0.1.4-inplace:Course.Traversable
+[m on Optional over function:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable#sequenceA
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:75:3 in
course-0.1.4-inplace:Course.Traversable
+[m composeTest
+ traverse on Compose Optional List Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
(Compose f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:81:5 in
course-0.1.4-inplace:Course.Traversable
+[m traverse on Compose List ExactlyOne Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
(Compose f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:81:5 in
course-0.1.4-inplace:Course.Traversable
+[m productFunctorTest
+ fmap on Product Optional List Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable (<$>)#instance (Product
f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:91:5 in
course-0.1.4-inplace:Course.Traversable
+[m fmap on Product ExactlyOne Optional Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable (<$>)#instance (Product
f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:91:5 in
course-0.1.4-inplace:Course.Traversable
+[m productTraversableTest
+ traverse on Product Optional List Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
(Product f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:97:5 in
course-0.1.4-inplace:Course.Traversable
+[m coProductFunctorTest
+ fmap on InL Optional Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable (<$>)#instance
(Coproduct f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:108:5 in
course-0.1.4-inplace:Course.Traversable
+[m fmap on InR ExactlyOne Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable (<$>)#instance
(Coproduct f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:108:5 in
course-0.1.4-inplace:Course.Traversable
+[m coProductTraversableTest
+ traverse on InL Optional Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
(Coproduct f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:114:5 in
course-0.1.4-inplace:Course.Traversable
+[m traverse on InR List Int:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Traversable traverse#instance
(Coproduct f g)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Traversable.hs:114:5 in
course-0.1.4-inplace:Course.Traversable
+[m ListZipper
+ ListZipper (<$>):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<$>)#instance ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:68:5 in
course-0.1.4-inplace:Course.ListZipper
+[m MaybeListZipper (<$>):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<$>)#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:76:5 in
course-0.1.4-inplace:Course.ListZipper
+[m toList
+ Optional empty list:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Functor (<$>)#instance Optional
+ CallStack (from HasCallStack):
+ error, called at src/Course/Functor.hs:75:5 in
course-0.1.4-inplace:Course.Functor
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#toList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:92:3 in
course-0.1.4-inplace:Course.ListZipper
+[m lefts and rights:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#toList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:92:3 in
course-0.1.4-inplace:Course.ListZipper
+[m fromList
+ non-empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#fromList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:116:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#fromList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:116:3 in
course-0.1.4-inplace:Course.ListZipper
+[m round trip:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#fromList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:116:3 in
course-0.1.4-inplace:Course.ListZipper
+ []
+ Use --quickcheck-replay=497955 to reproduce.
+[m toOptional
+ empty:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:127:3 in
course-0.1.4-inplace:Course.ListZipper
+ []
+ Use --quickcheck-replay=839372 to reproduce.
+[m withFocus
+ empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#withFocus
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:187:3 in
course-0.1.4-inplace:Course.ListZipper
+[m left and right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#withFocus
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:187:3 in
course-0.1.4-inplace:Course.ListZipper
+[m setFocus
+ empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#setFocus
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:202:3 in
course-0.1.4-inplace:Course.ListZipper
+[m left and right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#setFocus
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:202:3 in
course-0.1.4-inplace:Course.ListZipper
+[m hasLeft
+ left and right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#hasLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:225:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#hasLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:225:3 in
course-0.1.4-inplace:Course.ListZipper
+[m hasRight
+ left and right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#hasRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:238:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#hasRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:238:3 in
course-0.1.4-inplace:Course.ListZipper
+[m findLeft
+ missing element returns IsNotZ:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#fromList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:116:3 in
course-0.1.4-inplace:Course.ListZipper
+ []
+ False
+ Use --quickcheck-replay=632697 to reproduce.
+[m found in left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:266:3 in
course-0.1.4-inplace:Course.ListZipper
+[m not found:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:266:3 in
course-0.1.4-inplace:Course.ListZipper
+[m one match in left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:266:3 in
course-0.1.4-inplace:Course.ListZipper
+[m multiple matches in left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:266:3 in
course-0.1.4-inplace:Course.ListZipper
+[m elements shifted to right correctly:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:266:3 in
course-0.1.4-inplace:Course.ListZipper
+[m findRight
+ missing element returns IsNotZ:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#fromList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:116:3 in
course-0.1.4-inplace:Course.ListZipper
+ []
+ Use --quickcheck-replay=23572 to reproduce.
+[m found in right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:291:3 in
course-0.1.4-inplace:Course.ListZipper
+[m not found:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:291:3 in
course-0.1.4-inplace:Course.ListZipper
+[m one match in right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:291:3 in
course-0.1.4-inplace:Course.ListZipper
+[m multiple matches in right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#findRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:291:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveLeftLoop
+ with left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftLoop
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:304:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftLoop
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:304:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveRightLoop
+ with right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightLoop
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:317:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightLoop
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:317:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveLeft
+ with left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:330:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:330:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveRight
+ with right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:343:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:343:3 in
course-0.1.4-inplace:Course.ListZipper
+[m swapLeft
+ with left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#swapLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:356:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#swapLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:356:3 in
course-0.1.4-inplace:Course.ListZipper
+[m swapRight
+ with right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#swapRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:369:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#swapRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:369:3 in
course-0.1.4-inplace:Course.ListZipper
+[m dropLeft
+ with left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#dropLefts
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:384:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#dropLefts
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:384:3 in
course-0.1.4-inplace:Course.ListZipper
+[m dropLefts empties left of zipper:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#dropLefts
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:384:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=852942 to reproduce.
+[m dropRights
+ with right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#dropRights
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:399:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty right:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#dropRights
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:399:3 in
course-0.1.4-inplace:Course.ListZipper
+[m dropRights empties right of zipper:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#dropRights
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:399:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=876174 to reproduce.
+[m moveLeftN
+ positive moves:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:413:3 in
course-0.1.4-inplace:Course.ListZipper
+[m negative moves:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:413:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveRightN
+ positive moves:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:427:3 in
course-0.1.4-inplace:Course.ListZipper
+[m negative moves:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:427:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveLeftN'
+ positive - out of bounds both sides:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m positive in range:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moving zero is `Right . id`:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=916083 to reproduce.
+[m negative in range:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m negative out of bounds:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m positive - out of bounds on left only:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m negative - out of bounds on right only:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveLeftN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:457:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moveRightN'
+ positive - out of bounds both sides:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:481:3 in
course-0.1.4-inplace:Course.ListZipper
+[m positive in range:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:481:3 in
course-0.1.4-inplace:Course.ListZipper
+[m moving zero is `Right . id`:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#moveRightN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:481:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=416654 to reproduce.
+[m negative in range:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:481:3 in
course-0.1.4-inplace:Course.ListZipper
+[m negative - out of bounds both sides:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#moveRightN'
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:481:3 in
course-0.1.4-inplace:Course.ListZipper
+[m nth
+ have 1:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#nth
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:498:3 in
course-0.1.4-inplace:Course.ListZipper
+[m have 5:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#nth
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:498:3 in
course-0.1.4-inplace:Course.ListZipper
+[m missing 8:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#nth
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:498:3 in
course-0.1.4-inplace:Course.ListZipper
+[m index
+ index works:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#index
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:510:3 in
course-0.1.4-inplace:Course.ListZipper
+[m Always returns the index on a valid zipper:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:127:3 in
course-0.1.4-inplace:Course.ListZipper
+ ([] >0< [],0)
+ Use --quickcheck-replay=641600 to reproduce.
+[m end
+ end:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#end
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:524:3 in
course-0.1.4-inplace:Course.ListZipper
+[m end never changes the zipper's contents:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:92:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=338045 to reproduce.
+[m never have rights after calling end:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#end
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:524:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=330761 to reproduce.
+[m start
+ start:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#start
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:538:3 in
course-0.1.4-inplace:Course.ListZipper
+[m start never changes the zipper's contents:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toList
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:92:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=837438 to reproduce.
+[m never have lefts after calling start:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#start
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:538:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=92310 to reproduce.
+[m deletePullLeft
+ non-empty lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#deletePullLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:551:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#deletePullLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:551:3 in
course-0.1.4-inplace:Course.ListZipper
+[m deletePullRight
+ non-empty rights:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#deletePullRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:564:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty rights:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#deletePullRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:564:3 in
course-0.1.4-inplace:Course.ListZipper
+[m insertPushLeft
+ non-empty lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#insertPushLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:580:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#insertPushLeft
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:580:3 in
course-0.1.4-inplace:Course.ListZipper
+[m deletePullLeft . insertPushLeft == id:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:127:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ 0
+ Use --quickcheck-replay=389162 to reproduce.
+[m insertPushRight
+ non-empty rights:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#insertPushRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:596:3 in
course-0.1.4-inplace:Course.ListZipper
+[m empty rights:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper#insertPushRight
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:596:3 in
course-0.1.4-inplace:Course.ListZipper
+[m deletePullRight . insertPushRight == id:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper#toOptional
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:127:3 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ 0
+ Use --quickcheck-replay=173350 to reproduce.
+[m Applicative
+ pure produces infinite lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=568135 to reproduce.
+[m pure produces infinite rights:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=315523 to reproduce.
+[m <*> applies functions to corresponding elements in zipper:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<*>)#instance ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:614:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Applicative (MaybeListZipper)
+ pure produces infinite lefts:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=824521 to reproduce.
+[m pure produces infinite rights:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.Apply (<*>)#instance ((->) t)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Applicative.hs:132:5 in
course-0.1.4-inplace:Course.Applicative
+ 0
+ 0
+ Use --quickcheck-replay=151535 to reproduce.
+[m IsZ <*> IsZ:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<*>)#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:640:5 in
course-0.1.4-inplace:Course.ListZipper
+[m IsNotZ <*> IsZ:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper (<*>)#instance MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:640:5 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=954645 to reproduce.
+[m IsNotZ <*> IsNotZ:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<*>)#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:640:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Extend
+ zipper o' zippers:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<<=)#instance ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:651:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Extend (MaybeListZipper)
+ IsNotZ:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<<=)#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:664:5 in
course-0.1.4-inplace:Course.ListZipper
+[m IsZ:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper (<<=)#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:664:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Comonad
+ copure:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper copure#instance
ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:673:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Traversable
+ All Full:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper traverse#instance ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:686:5 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=575918 to reproduce.
+[m One Empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper traverse#instance
ListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:686:5 in
course-0.1.4-inplace:Course.ListZipper
+[m Traversable (MaybeListZipper)
+ IsNotZ:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.ListZipper traverse#instance
MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:699:5 in
course-0.1.4-inplace:Course.ListZipper
+[m IsZ Full:
[91;1mFAIL[m[91;1m
+[m[31;22m *** Failed! (after 1 test):
+ Exception:
+ todo: Course.ListZipper traverse#instance MaybeListZipper
+ CallStack (from HasCallStack):
+ error, called at src/Course/ListZipper.hs:699:5 in
course-0.1.4-inplace:Course.ListZipper
+ [] >0< []
+ Use --quickcheck-replay=903857 to reproduce.
+[m Parser
+ constantParserTest
+ can return error result:
[32;22mOK[m[32;22m
+[m can return ParseResult:
[32;22mOK[m[32;22m
+[m characterTest
+ parses single character from non-empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#character
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:123:3 in
course-0.1.4-inplace:Course.Parser
+[m parsing empty string is an error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#character
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:123:3 in
course-0.1.4-inplace:Course.Parser
+[m functorTest
+ toUpper <$>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (<$>)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:136:6 in
course-0.1.4-inplace:Course.Parser
+[m valueParserTest
+ succeeds with given value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#valueParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:146:3 in
course-0.1.4-inplace:Course.Parser
+[m alternativeParserTest
+ first fails, second succeeds with no input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#(|||)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:170:3 in
course-0.1.4-inplace:Course.Parser
+[m first always fails, second succeeds with no input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#(|||)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:170:3 in
course-0.1.4-inplace:Course.Parser
+[m first always fails, second succeeds with input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#(|||)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:170:3 in
course-0.1.4-inplace:Course.Parser
+[m takes first parse result when it succeeds:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#(|||)
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:170:3 in
course-0.1.4-inplace:Course.Parser
+[m parserMonadInstanceTest
+ first parse fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m second parse fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m bind to valueParser:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m bind to valueParser with no more input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m bind to character parser with remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m parserApplicativeInstanceTest
+ pure:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#valueParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:146:3 in
course-0.1.4-inplace:Course.Parser
+[m pure an Optional value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#valueParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:146:3 in
course-0.1.4-inplace:Course.Parser
+[m pure toUpper <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (<*>)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:217:5 in
course-0.1.4-inplace:Course.Parser
+[m pure show <*>:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (<*>)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:217:5 in
course-0.1.4-inplace:Course.Parser
+[m satisfyTest
+ when character satisfies predicate:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#satisfy
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:236:3 in
course-0.1.4-inplace:Course.Parser
+[m is error when preidcate not satisfied:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#satisfy
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:236:3 in
course-0.1.4-inplace:Course.Parser
+[m digitTest
+ is error when input empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#digit
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:260:3 in
course-0.1.4-inplace:Course.Parser
+[m is error when character not digit:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#digit
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:260:3 in
course-0.1.4-inplace:Course.Parser
+[m succeeds when character is a digit :
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#digit
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:260:3 in
course-0.1.4-inplace:Course.Parser
+[m spaceTest
+ fails when input empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#space
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:273:3 in
course-0.1.4-inplace:Course.Parser
+[m fails when character not space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#space
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:273:3 in
course-0.1.4-inplace:Course.Parser
+[m succeeds when first character is a space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#space
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:273:3 in
course-0.1.4-inplace:Course.Parser
+[m listTest
+ succeeds on empty input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m parses for as long as characters match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m parses empty value when no matching characters:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m parses entire input if matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m parses for as long as characters match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m succeeds on empty input with value parser:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:300:3 in
course-0.1.4-inplace:Course.Parser
+[m list1Test
+ succeeds when at least one character matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:319:3 in
course-0.1.4-inplace:Course.Parser
+[m succeeds when at least one character matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:319:3 in
course-0.1.4-inplace:Course.Parser
+[m no matching chars fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#list1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:319:3 in
course-0.1.4-inplace:Course.Parser
+[m spaces1Test
+ fails on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#spaces1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:332:3 in
course-0.1.4-inplace:Course.Parser
+[m consumes single space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#spaces1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:332:3 in
course-0.1.4-inplace:Course.Parser
+[m consumes multiple spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#spaces1
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:332:3 in
course-0.1.4-inplace:Course.Parser
+[m lowerTest
+ fails on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#lower
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:344:3 in
course-0.1.4-inplace:Course.Parser
+[m fails if character is not lowercase:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#lower
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:344:3 in
course-0.1.4-inplace:Course.Parser
+[m produces lowercase character:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#lower
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:344:3 in
course-0.1.4-inplace:Course.Parser
+[m upperTest
+ fails on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#upper
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:356:3 in
course-0.1.4-inplace:Course.Parser
+[m fails if character is not uppercase:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#upper
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:356:3 in
course-0.1.4-inplace:Course.Parser
+[m produces uppercase character:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#upper
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:356:3 in
course-0.1.4-inplace:Course.Parser
+[m alphaTest
+ fails on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#alpha
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:368:3 in
course-0.1.4-inplace:Course.Parser
+[m fails if character is not alpha:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#alpha
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:368:3 in
course-0.1.4-inplace:Course.Parser
+[m produces alpha character:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#upper
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:356:3 in
course-0.1.4-inplace:Course.Parser
+[m sequenceParserTest
+ fails on first failing parser:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#sequenceParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:385:3 in
course-0.1.4-inplace:Course.Parser
+[m sequences list of successful parsers:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#sequenceParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:385:3 in
course-0.1.4-inplace:Course.Parser
+[m thisManyTest
+ fails when not enough matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#thisMany
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:402:3 in
course-0.1.4-inplace:Course.Parser
+[m produces n values when matched:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#thisMany
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:402:3 in
course-0.1.4-inplace:Course.Parser
+[m ageParserTest (done for you)
+ fails on invalid age (all letters):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m fails on invalid age (leading '-'):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m parses valid age:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser (=<<)#instance Parser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:202:5 in
course-0.1.4-inplace:Course.Parser
+[m firstNameParserTest
+ fails on first name that doesn't start with a capital:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#firstNameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:435:3 in
course-0.1.4-inplace:Course.Parser
+[m parses valid first name:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#firstNameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:435:3 in
course-0.1.4-inplace:Course.Parser
+[m surnameParserTest
+ fails on short surname:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#surnameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:457:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on short surname starting with a lower case letter:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#surnameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:457:3 in
course-0.1.4-inplace:Course.Parser
+[m parses shortest valid surname:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#surnameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:457:3 in
course-0.1.4-inplace:Course.Parser
+[m parses long surname:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#surnameParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:457:3 in
course-0.1.4-inplace:Course.Parser
+[m smokerParserTest
+ fails on non y/n value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#smokerParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:476:3 in
course-0.1.4-inplace:Course.Parser
+[m parses y, leaving remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#smokerParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:476:3 in
course-0.1.4-inplace:Course.Parser
+[m parses n, leaving remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#smokerParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:476:3 in
course-0.1.4-inplace:Course.Parser
+[m phoneBodyParserTest
+ produces empty list when no characters match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneBodyParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:498:3 in
course-0.1.4-inplace:Course.Parser
+[m parses valid phone body value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneBodyParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:498:3 in
course-0.1.4-inplace:Course.Parser
+[m parses up to first letter:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneBodyParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:498:3 in
course-0.1.4-inplace:Course.Parser
+[m phoneParserTest
+ fails without trailing '#':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:520:3 in
course-0.1.4-inplace:Course.Parser
+[m fails when input starts with a letter:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:520:3 in
course-0.1.4-inplace:Course.Parser
+[m produces valid phone number:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:520:3 in
course-0.1.4-inplace:Course.Parser
+[m produces a valid phone number with remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#phoneParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:520:3 in
course-0.1.4-inplace:Course.Parser
+[m personParserTest
+ fails on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on invalid age:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on first name that doesn't start with capital:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on surname that is too short:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on surname that doesn't start with a capital letter:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on invalid smoker value 'x':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on phone number containing an 'x':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on phone number starting with '-':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m fails on phone number without a trailing '#':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m produces person for valid input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m produces person for valid input and keeps remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m produces person for valid input containing extra whitespace:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Parser#personParser
+ CallStack (from HasCallStack):
+ error, called at src/Course/Parser.hs:578:3 in
course-0.1.4-inplace:Course.Parser
+[m MoreParser
+ spacesTest
+ can parse zero spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#spaces
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:44:3 in
course-0.1.4-inplace:Course.MoreParser
+[m can parse single space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#spaces
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:44:3 in
course-0.1.4-inplace:Course.MoreParser
+[m can parse multiple spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#spaces
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:44:3 in
course-0.1.4-inplace:Course.MoreParser
+[m tokTest
+ can parse input without spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#tok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:60:3 in
course-0.1.4-inplace:Course.MoreParser
+[m can parse single space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#tok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:60:3 in
course-0.1.4-inplace:Course.MoreParser
+[m can parse multiple spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#tok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:60:3 in
course-0.1.4-inplace:Course.MoreParser
+[m charTokTest
+ fails when character does not match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#charTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:75:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching character:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#charTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:75:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching character, dropping space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#charTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:75:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching character, dropping spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#charTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:75:3 in
course-0.1.4-inplace:Course.MoreParser
+[m commaTokTest
+ fails when character is not a comma:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#commaTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:89:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses leading comma:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#commaTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:89:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses leading comma, dropping space:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#commaTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:89:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses leading comma, dropping multiple spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#commaTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:89:3 in
course-0.1.4-inplace:Course.MoreParser
+[m quoteTest
+ fails when character is not a single or double quote:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#quote
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:106:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses single quote:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#quote
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:106:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses double quote:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#quote
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:106:3 in
course-0.1.4-inplace:Course.MoreParser
+[m stringTest
+ fails when string is not matched:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#string
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:121:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching string, leaves remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#string
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:121:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#string
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:121:3 in
course-0.1.4-inplace:Course.MoreParser
+[m stringTokTest
+ fails when string is not matched:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#stringTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:136:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching string followed by zero spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#stringTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:136:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses matching string followed by many spaces:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#stringTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:136:3 in
course-0.1.4-inplace:Course.MoreParser
+[m optionTest
+ produces parsed value when parser succeeds:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#option
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:152:3 in
course-0.1.4-inplace:Course.MoreParser
+[m produces given value when parser fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#option
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:152:3 in
course-0.1.4-inplace:Course.MoreParser
+[m digits1Test
+ fails when no digits at start of input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#digits1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:166:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on digits:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#digits1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:166:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on digits, leaves remaining input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#digits1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:166:3 in
course-0.1.4-inplace:Course.MoreParser
+[m oneofTest
+ fails when given character not in string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#oneof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:181:3 in
course-0.1.4-inplace:Course.MoreParser
+[m given character prefixes input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#oneof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:181:3 in
course-0.1.4-inplace:Course.MoreParser
+[m noneofTest
+ fails when one of given characters prefixes input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#noneof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:196:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when none of the given characters in input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#noneof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:196:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when none of the given characters prefixes input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#noneof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:196:3 in
course-0.1.4-inplace:Course.MoreParser
+[m betweenTest
+ fails when opening parse fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#between
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:220:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when surrounded parser fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#between
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:220:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when closing parse fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#between
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:220:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds: character surrounded by []':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#between
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:220:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds: digits surrounded by []:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#between
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:220:3 in
course-0.1.4-inplace:Course.MoreParser
+[m betweenCharTokTest
+ fails when opening character not present:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenCharTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:243:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when closing character not present:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenCharTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:243:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when surrounded parser fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenCharTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:243:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds: character:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenCharTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:243:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds: digits1:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenCharTok
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:243:3 in
course-0.1.4-inplace:Course.MoreParser
+[m hexTest
+ fails on invalid hex string --- too short:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hex
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:263:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails on invalid hex string --- invalid char (x):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hex
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:263:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on valid hex value:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hex
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:263:3 in
course-0.1.4-inplace:Course.MoreParser
+[m hexuTest
+ fails when no u at start:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hexu
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:286:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when not 4 hex digits after u:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hexu
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:286:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails on invalid hex digit:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hexu
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:286:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on valid input --- u0010:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hexu
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:286:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on valid input --- u0a1f:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#hexu
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:286:3 in
course-0.1.4-inplace:Course.MoreParser
+[m sepby1Test
+ fails when first parser fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:309:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses single character not followed by seperator:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:309:3 in
course-0.1.4-inplace:Course.MoreParser
+[m parses multiple matches with separators:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:309:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds until two separators:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby1
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:309:3 in
course-0.1.4-inplace:Course.MoreParser
+[m sepbyTest
+ succeeds on empty string:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:332:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on single match without seperator:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:332:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds on multiple matches with seperators:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:332:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds until two separators:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#sepby
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:332:3 in
course-0.1.4-inplace:Course.MoreParser
+[m eofTest
+ fails when still input left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#eof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:344:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when no input left:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#eof
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:344:3 in
course-0.1.4-inplace:Course.MoreParser
+[m satisfyAllTest
+ fails when a predicate fails:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAll
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:368:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when no predicates satisfied (empty input):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAll
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:368:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when no predicates satisfied:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAll
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:368:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when all predicates satisfied: ABC:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAll
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:368:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when all predicates satisfied: ABc:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAll
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:368:3 in
course-0.1.4-inplace:Course.MoreParser
+[m satisfyAnyTest
+ fails when no predicates satisfied:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAny
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:389:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when no predicates satisfied (empty input):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAny
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:389:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when all predicates satisfied:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAny
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:389:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds when one of two predicates satisfied:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#satisfyAny
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:389:3 in
course-0.1.4-inplace:Course.MoreParser
+[m betweenSepbyCommaTest
+ fails when opening char missing:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when closing char missing:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when input between seperators doesn't match (multiple matches):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m fails when input between seperators doesn't match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds --- one match:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds --- nothing between surrounds:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds --- 3 matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds --- 3 padded matches:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m succeeds --- digits1:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.MoreParser#betweenSepbyComma
+ CallStack (from HasCallStack):
+ error, called at src/Course/MoreParser.hs:427:3 in
course-0.1.4-inplace:Course.MoreParser
+[m JsonParser
+ jsonString
+ parse whole ASCII input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parse only the first string of input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parse back slash (\):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parse unicode (\u00abc):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parse unicode (\u00ff):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parse unicode (\u00fa):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parsing string without quotes is an error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m parsing string containing \a is an error - \a isn't a special
character: [91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonString
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:113:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonNumber
+ positive whole:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m negative whole:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m positive decimal:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m negative whole (2):
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m negative decimal:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m negative sign on its own is error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m alphabetic characters is error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNumber
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:142:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonTrue
+ parses true:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonTrue
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:156:3 in
course-0.1.4-inplace:Course.JsonParser
+[m TRUE (caps) is an error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonTrue
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:156:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonFalse
+ parses false:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonFalse
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:170:3 in
course-0.1.4-inplace:Course.JsonParser
+[m FALSE (caps) is an error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonFalse
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:170:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonNull
+ parses null:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNull
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:184:3 in
course-0.1.4-inplace:Course.JsonParser
+[m NULL (caps) is an error:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonNull
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:184:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonArray
+ []:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonArray
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:207:3 in
course-0.1.4-inplace:Course.JsonParser
+[m [true]:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonArray
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:207:3 in
course-0.1.4-inplace:Course.JsonParser
+[m [true, "abc"]:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonArray
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:207:3 in
course-0.1.4-inplace:Course.JsonParser
+[m [true, "abc", []]:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonArray
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:207:3 in
course-0.1.4-inplace:Course.JsonParser
+[m [true, "abc", [false]]:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonArray
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:207:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonObject
+ empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m one key:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m two keys:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m two keys and left over input:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m jsonValue
+ true:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonValue
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:244:4 in
course-0.1.4-inplace:Course.JsonParser
+[m object:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m nested object:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.JsonParser#jsonObject
+ CallStack (from HasCallStack):
+ error, called at src/Course/JsonParser.hs:227:3 in
course-0.1.4-inplace:Course.JsonParser
+[m Cheque
+ dollars
+ empty:
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '0.1':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1.':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '0.':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '0.0':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '.34':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '0.3456789':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1.0':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1.01':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars 'a1a':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars 'a1a.a0.7b':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100.0':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100.00':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100.00000':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1000456.13':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '1001456.13':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '16000000456.13':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100.45':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '100.07':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '9abc9def9ghi.jkl9mno':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars '12345.67':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m dollars
'456789123456789012345678901234567890123456789012345678901234567890.12':
[91;1mFAIL[m[91;1m
+[m[31;22m Exception: todo: Course.Cheque#dollars
+ CallStack (from HasCallStack):
+ error, called at src/Course/Cheque.hs:327:3 in
course-0.1.4-inplace:Course.Cheque
+[m
+[91;1m568 out of 591 tests failed[m[91;1m (0.06s)
+[m
+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.
+
- [nongnu] elpa/haskell-tng-mode 46abfc4 035/385: getting closer to good types in imports, (continued)
- [nongnu] elpa/haskell-tng-mode 46abfc4 035/385: getting closer to good types in imports, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode c3d4e70 031/385: don't reinvent standard tools, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 7c2dedb 043/385: use pyenv when running cask, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 2f04c01 051/385: starting work on semicolon inference, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode a4a664b 056/385: layout inference, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode d33d146 060/385: [ci skip] start to refactor layout out of lexer, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 12c7148 040/385: leave fontification in comments and strings, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 61f4c09 062/385: [ci skip] unify the testing approach, ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 138aca0 089/385: typelevel lists are harder than I thought..., ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode f5961e6 099/385: indentation cycles are really complicated..., ELPA Syncer, 2021/10/05
- [nongnu] elpa/haskell-tng-mode 6e4849c 112/385: some compilation test cases,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode cb1d2db 106/385: newline shouldn't trigger indent cycling, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode f342041 118/385: better SMIE blinkers, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 249f507 121/385: support whitespace gaps, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6ae08ec 021/385: fixup! multiline topdecl type sections, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode a808c7b 033/385: notes on language extensions, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode a4ec07a 032/385: fix install instructions, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3e8efdc 023/385: type aliases and deriving, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ad570a0 039/385: out of date comments, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7326aad 041/385: modules and more efficient none, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 49611c6 042/385: regression tests for fontification, ELPA Syncer, 2021/10/06