$ /nix/store/vzx1mi9c0xfadmsm9dhd83d005cb1qs9-coreutils-9.8/bin/timeout --kill-after=15s 7200s /nix/store/99b1z08awpxj8b6mzggn59gp1shljnff-nix-2.34.5/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes --log-format internal-json build --no-link git+https://github.com/NorfairKing/sydtest?ref=per-test-coverage-manifest&rev=3577827a64b248caba97eb8aa37a8afbfc7aa994#checks.x86_64-linux.mutation-really-safe-money --print-build-logs warning: ignoring untrusted flake configuration setting 'extra-substituters'. Pass '--accept-flake-config' to trust it warning: ignoring untrusted flake configuration setting 'extra-trusted-public-keys'. Pass '--accept-flake-config' to trust it  Downloading cached really-safe-money-source from https://cache.staging.nix-ci.com Downloading cached criterion-1.6.4.0-data from https://cache.staging.nix-ci.com Downloading cached js-chart-2.9.4.1-data from https://cache.staging.nix-ci.com Downloading cached binary-orphans-1.0.5-doc from https://cache.staging.nix-ci.com Downloading cached code-page-0.2.1-doc from https://cache.staging.nix-ci.com Downloading cached Glob-0.10.2-doc from https://cache.staging.nix-ci.com Downloading cached base-compat-batteries-0.14.1-doc from https://cache.staging.nix-ci.com Downloading cached cassava-0.5.4.1-doc from https://cache.staging.nix-ci.com Downloading cached criterion-measurement-0.2.3.0-doc from https://cache.staging.nix-ci.com Downloading cached math-functions-0.3.4.4-doc from https://cache.staging.nix-ci.com Downloading cached microstache-1.0.3-doc from https://cache.staging.nix-ci.com Downloading cached parallel-3.2.2.0-doc from https://cache.staging.nix-ci.com Downloading cached vector-binary-instances-0.2.5.2-doc from https://cache.staging.nix-ci.com Downloading cached vector-th-unbox-0.2.2-doc from https://cache.staging.nix-ci.com Building genvalidity-sydtest-source Progress: 0 of 9 built (1 building), 1 of 37 downloaded from cache (13 downloading) Progress: 0 of 9 built (1 building), 2 of 37 downloaded from cache (12 downloading) Progress: 0 of 9 built (1 building), 3 of 37 downloaded from cache (11 downloading) Progress: 0 of 9 built (1 building), 4 of 37 downloaded from cache (10 downloading) Progress: 0 of 9 built (1 building), 5 of 37 downloaded from cache (9 downloading) Progress: 0 of 9 built (1 building), 6 of 37 downloaded from cache (8 downloading) Progress: 0 of 9 built (1 building), 7 of 37 downloaded from cache (7 downloading) Progress: 0 of 9 built (1 building), 8 of 37 downloaded from cache (6 downloading) Progress: 0 of 9 built (1 building), 9 of 37 downloaded from cache (5 downloading) Progress: 0 of 9 built (1 building), 10 of 37 downloaded from cache (4 downloading) Progress: 0 of 9 built (1 building), 11 of 37 downloaded from cache (3 downloading) Progress: 0 of 9 built (1 building), 12 of 37 downloaded from cache (2 downloading) Progress: 0 of 9 built (1 building), 13 of 37 downloaded from cache (1 downloading) Downloading cached Glob from https://cache.staging.nix-ci.com Downloading cached base-compat-batteries from https://cache.staging.nix-ci.com Downloading cached binary-orphans from https://cache.staging.nix-ci.com Downloading cached cassava from https://cache.staging.nix-ci.com Downloading cached criterion-measurement from https://cache.staging.nix-ci.com Downloading cached dense-linear-algebra-0.1.0.0-doc from https://cache.staging.nix-ci.com Downloading cached js-chart-2.9.4.1-doc from https://cache.staging.nix-ci.com Downloading cached math-functions from https://cache.staging.nix-ci.com Downloading cached microstache from https://cache.staging.nix-ci.com Downloading cached mwc-random-0.15.2.0-doc from https://cache.staging.nix-ci.com Downloading cached parallel from https://cache.staging.nix-ci.com Downloading cached vector-binary-instances from https://cache.staging.nix-ci.com Downloading cached vector-th-unbox from https://cache.staging.nix-ci.com Building really-safe-money Progress: 0 of 8 built (2 building), 14 of 37 downloaded from cache (13 downloading) Progress: 0 of 8 built (2 building), 15 of 37 downloaded from cache (12 downloading) Downloading cached code-page from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 16 of 37 downloaded from cache (12 downloading) Downloading cached js-chart from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 17 of 37 downloaded from cache (12 downloading) Progress: 0 of 8 built (2 building), 18 of 37 downloaded from cache (11 downloading) Progress: 0 of 8 built (2 building), 19 of 37 downloaded from cache (10 downloading) Progress: 0 of 8 built (2 building), 20 of 37 downloaded from cache (9 downloading) Progress: 0 of 8 built (2 building), 21 of 37 downloaded from cache (8 downloading) Progress: 0 of 8 built (2 building), 22 of 37 downloaded from cache (8 downloading) Downloading cached statistics-0.16.4.0-doc from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 23 of 37 downloaded from cache (7 downloading) Progress: 0 of 8 built (2 building), 24 of 37 downloaded from cache (6 downloading) Progress: 0 of 8 built (2 building), 25 of 37 downloaded from cache (5 downloading) Progress: 0 of 8 built (2 building), 26 of 37 downloaded from cache (4 downloading) Downloading cached dense-linear-algebra from https://cache.staging.nix-ci.com Downloading cached mwc-random from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 27 of 37 downloaded from cache (5 downloading) Progress: 0 of 8 built (2 building), 28 of 37 downloaded from cache (4 downloading) Progress: 0 of 8 built (2 building), 29 of 37 downloaded from cache (3 downloading) Downloading cached criterion-1.6.4.0-doc from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 30 of 37 downloaded from cache (3 downloading) Progress: 0 of 8 built (2 building), 31 of 37 downloaded from cache (2 downloading) Progress: 0 of 8 built (2 building), 32 of 37 downloaded from cache (1 downloading) Downloading cached genvalidity-criterion-1.1.0.0-doc from https://cache.staging.nix-ci.com Progress: 0 of 8 built (2 building), 33 of 37 downloaded from cache (1 downloading) Progress: 0 of 8 built (2 building), 34 of 37 downloaded from cache Downloading cached statistics from https://cache.staging.nix-ci.com [really-safe-money] Phase: setupCompilerEnvironmentPhase [really-safe-money] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3. [genvalidity-sydtest-source] Phase: setupCompilerEnvironmentPhase [genvalidity-sydtest-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3. Progress: 0 of 8 built (2 building), 35 of 37 downloaded from cache Downloading cached criterion from https://cache.staging.nix-ci.com [really-safe-money] Phase: unpackPhase [really-safe-money] unpacking source archive /nix/store/pxkha6z3d3bjfgkdar4ma3wx2c1f8pmm-really-safe-money-source-0.0.0.0/really-safe-money-0.0.0.0.tar.gz [really-safe-money] source root is really-safe-money-0.0.0.0 [really-safe-money] setting SOURCE_DATE_EPOCH to timestamp 1778358092 of file "really-safe-money-0.0.0.0/src/Numeric/DecimalLiteral.hs" [really-safe-money] Phase: patchPhase [really-safe-money] Phase: compileBuildDriverPhase [really-safe-money] setupCompileFlags: -package-db=/build/tmp.xSsGXD3pEq/setup-package.conf.d -threaded [really-safe-money] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.xSsGXD3pEq/Main.o ) [really-safe-money] [2 of 2] Linking Setup Progress: 0 of 8 built (2 building), 36 of 37 downloaded from cache Downloading cached genvalidity-criterion from https://cache.staging.nix-ci.com Progress: 0 of 7 built (2 building), 37 of 37 downloaded from cache [genvalidity-sydtest-source] Phase: unpackPhase [genvalidity-sydtest-source] unpacking source archive /nix/store/dqdpwym3w17fcyylxh144v7wvc1c621z-genvalidity-sydtest [genvalidity-sydtest-source] source root is genvalidity-sydtest [genvalidity-sydtest-source] Phase: patchPhase [genvalidity-sydtest-source] Phase: compileBuildDriverPhase [genvalidity-sydtest-source] setupCompileFlags: -package-db=/build/tmp.TkM5bcN2hG/setup-package.conf.d -threaded [genvalidity-sydtest-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.TkM5bcN2hG/Main.o ) [genvalidity-sydtest-source] [2 of 2] Linking Setup [really-safe-money] Phase: updateAutotoolsGnuConfigScriptsPhase [really-safe-money] Phase: configurePhase [really-safe-money] configureFlags: --verbose --prefix=/nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.xSsGXD3pEq/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --disable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --ghc-options=-fplugin-opt=Test.Syd.Mutation.Plugin:--debug --disable-optimization --ghc-option=-j1 --ghc-option=+RTS --ghc-option=-A32M --ghc-option=-M16g --ghc-option=-RTS --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib [really-safe-money] Using Parsec parser [really-safe-money] Configuring really-safe-money-0.0.0.0... [genvalidity-sydtest-source] Phase: updateAutotoolsGnuConfigScriptsPhase [genvalidity-sydtest-source] Phase: configurePhase [genvalidity-sydtest-source] configureFlags: --verbose --prefix=/nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/genvalidity-sydtest-1.0.1.0 --with-gcc=gcc --package-db=/build/tmp.TkM5bcN2hG/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib [genvalidity-sydtest-source] Using Parsec parser [genvalidity-sydtest-source] Configuring genvalidity-sydtest-1.0.1.0... [really-safe-money] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money] Dependency containers: using containers-0.7 [really-safe-money] Dependency deepseq: using deepseq-1.5.0.0 [really-safe-money] Dependency validity: using validity-0.12.1.0 [really-safe-money] Dependency validity-containers: using validity-containers-0.5.0.5 [really-safe-money] Dependency validity-scientific: using validity-scientific-0.2.0.3 [really-safe-money] Source component graph: component lib [really-safe-money] Configured component graph: [really-safe-money]  component really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money]  include base-4.20.2.0-64da [really-safe-money]  include containers-0.7-504a [really-safe-money]  include deepseq-1.5.0.0-9a2c [really-safe-money]  include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP [really-safe-money]  include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4 [really-safe-money]  include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R [really-safe-money] Linked component graph: [really-safe-money]  unit really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money]  include base-4.20.2.0-64da [really-safe-money]  include containers-0.7-504a [really-safe-money]  include deepseq-1.5.0.0-9a2c [really-safe-money]  include validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP [really-safe-money]  include validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4 [really-safe-money]  include validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R [really-safe-money]  Money.Account=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Account,Money.AccountOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.AccountOf,Money.Amount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Amount,Money.AmountOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.AmountOf,Money.ConversionRate=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.ConversionRate,Money.ConversionRateOf=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.ConversionRateOf,Money.Currency=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.Currency,Money.MultiAccount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.MultiAccount,Money.MultiAmount=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.MultiAmount,Money.QuantisationFactor=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Money.QuantisationFactor,Numeric.DecimalLiteral=really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9:Numeric.DecimalLiteral [really-safe-money] Ready component graph: [really-safe-money]  definite really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money]  depends base-4.20.2.0-64da [really-safe-money]  depends containers-0.7-504a [really-safe-money]  depends deepseq-1.5.0.0-9a2c [really-safe-money]  depends validity-0.12.1.0-2vJMqyxn6Ae2B1jlP90HgP [really-safe-money]  depends validity-containers-0.5.0.5-JMisIHg6jT0HAhS7h7vTA4 [really-safe-money]  depends validity-scientific-0.2.0.3-6oQtdkDOQFR80MBRT1UQ1R [really-safe-money] Using Cabal-3.12.1.0 compiled by ghc-9.10 [really-safe-money] Using compiler: ghc-9.10.3 [really-safe-money] Using install prefix: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 [really-safe-money] Executables installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/bin [really-safe-money] Libraries installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money] Dynamic Libraries installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6 [really-safe-money] Private executables installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0 [really-safe-money] Data files installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0 [really-safe-money] Documentation installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0 [really-safe-money] Configuration files installed in: [really-safe-money] /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/etc [really-safe-money] No alex found [really-safe-money] Using ar found on system at: [really-safe-money] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar [really-safe-money] No c2hs found [really-safe-money] No cpphs found [really-safe-money] No doctest found [really-safe-money] Using gcc version 14.3.0 given by user at: [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc [really-safe-money] Using ghc version 9.10.3 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc [really-safe-money] Using ghc-pkg version 9.10.3 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [really-safe-money] No ghcjs found [really-safe-money] No ghcjs-pkg found [really-safe-money] No greencard found [really-safe-money] Using haddock version 2.31.1 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [really-safe-money] No happy found [really-safe-money] Using haskell-suite found on system at: haskell-suite-dummy-location [really-safe-money] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [really-safe-money] No hmake found [really-safe-money] Using hpc version 0.69 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [really-safe-money] Using hsc2hs version 0.68.10 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [really-safe-money] Using hscolour version 1.25 found on system at: [really-safe-money] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour [really-safe-money] No jhc found [really-safe-money] Using ld found on system at: [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld [really-safe-money] No pkg-config found [really-safe-money] Using runghc version 9.10.3 found on system at: [really-safe-money] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money] Using strip version 2.44 found on system at: [really-safe-money] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip [really-safe-money] Using tar found on system at: [really-safe-money] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar [really-safe-money] No uhc found [really-safe-money] Phase: buildPhase [really-safe-money] mutation-nix: setting MUTATION_MANIFEST_DIR=/nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest [really-safe-money] Preprocessing library for really-safe-money-0.0.0.0... [really-safe-money] Building library for really-safe-money-0.0.0.0... [genvalidity-sydtest-source] Dependency QuickCheck: using QuickCheck-2.15.0.1 [genvalidity-sydtest-source] Dependency base >=4.7 && <5: using base-4.20.2.0 [genvalidity-sydtest-source] Dependency genvalidity >=1.0: using genvalidity-1.1.1.0 [genvalidity-sydtest-source] Dependency sydtest: using sydtest-0.23.0.2 [genvalidity-sydtest-source] Dependency QuickCheck: using QuickCheck-2.15.0.1 [genvalidity-sydtest-source] Dependency base >=4.7 && <5: using base-4.20.2.0 [genvalidity-sydtest-source] Dependency genvalidity: using genvalidity-1.1.1.0 [genvalidity-sydtest-source] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest-source] Dependency sydtest: using sydtest-0.23.0.2 [genvalidity-sydtest-source] Source component graph: [genvalidity-sydtest-source]  component lib [genvalidity-sydtest-source]  component test:genvalidity-sydtest-test dependency lib [genvalidity-sydtest-source] Configured component graph: [genvalidity-sydtest-source]  component genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  include base-4.20.2.0-64da [genvalidity-sydtest-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source]  component genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  include base-4.20.2.0-64da [genvalidity-sydtest-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source] Linked component graph: [genvalidity-sydtest-source]  unit genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  include base-4.20.2.0-64da [genvalidity-sydtest-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source]  Test.Syd.Validity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity,Test.Syd.Validity.Applicative=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Applicative,Test.Syd.Validity.Arbitrary=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Arbitrary,Test.Syd.Validity.Eq=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Eq,Test.Syd.Validity.Functions=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions,Test.Syd.Validity.Functions.CanFail=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.CanFail,Test.Syd.Validity.Functions.Equivalence=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Equivalence,Test.Syd.Validity.Functions.Idempotence=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Idempotence,Test.Syd.Validity.Functions.Inverse=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Inverse,Test.Syd.Validity.Functions.Validity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Validity,Test.Syd.Validity.Functor=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functor,Test.Syd.Validity.GenValidity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.GenValidity,Test.Syd.Validity.GenValidity.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.GenValidity.Property,Test.Syd.Validity.Monad=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Monad,Test.Syd.Validity.Monoid=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Monoid,Test.Syd.Validity.Operations=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations,Test.Syd.Validity.Operations.Associativity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Associativity,Test.Syd.Validity.Operations.Commutativity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Commutativity,Test.Syd.Validity.Operations.Identity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Identity,Test.Syd.Validity.Ord=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Ord,Test.Syd.Validity.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Property,Test.Syd.Validity.Property.Utils=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Property.Utils,Test.Syd.Validity.Relations=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations,Test.Syd.Validity.Relations.Antireflexivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Antireflexivity,Test.Syd.Validity.Relations.Antisymmetry=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Antisymmetry,Test.Syd.Validity.Relations.Reflexivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Reflexivity,Test.Syd.Validity.Relations.Symmetry=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Symmetry,Test.Syd.Validity.Relations.Transitivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Transitivity,Test.Syd.Validity.Show=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Show,Test.Syd.Validity.Shrinking=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Shrinking,Test.Syd.Validity.Shrinking.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Shrinking.Property,Test.Syd.Validity.Types=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Types,Test.Syd.Validity.Utils=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Utils [genvalidity-sydtest-source]  unit genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  include base-4.20.2.0-64da [genvalidity-sydtest-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source] Ready component graph: [genvalidity-sydtest-source]  definite genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  depends base-4.20.2.0-64da [genvalidity-sydtest-source]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  depends sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source]  definite genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest-source]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest-source]  depends base-4.20.2.0-64da [genvalidity-sydtest-source]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest-source]  depends genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source]  depends sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest-source] Using Cabal-3.12.1.0 compiled by ghc-9.10 [genvalidity-sydtest-source] Using compiler: ghc-9.10.3 [genvalidity-sydtest-source] Using install prefix: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0 [genvalidity-sydtest-source] Executables installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/bin [genvalidity-sydtest-source] Libraries installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest-source] Dynamic Libraries installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6 [genvalidity-sydtest-source] Private executables installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/libexec/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest-source] Data files installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/share/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest-source] Documentation installed in: /share/doc/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest-source] Configuration files installed in: [genvalidity-sydtest-source] /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/etc [genvalidity-sydtest-source] No alex found [genvalidity-sydtest-source] Using ar found on system at: [genvalidity-sydtest-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar [genvalidity-sydtest-source] No c2hs found [genvalidity-sydtest-source] No cpphs found [genvalidity-sydtest-source] No doctest found [genvalidity-sydtest-source] Using gcc version 14.3.0 given by user at: [genvalidity-sydtest-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc [genvalidity-sydtest-source] Using ghc version 9.10.3 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc [genvalidity-sydtest-source] Using ghc-pkg version 9.10.3 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [genvalidity-sydtest-source] No ghcjs found [genvalidity-sydtest-source] No ghcjs-pkg found [genvalidity-sydtest-source] No greencard found [genvalidity-sydtest-source] Using haddock version 2.31.1 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [genvalidity-sydtest-source] No happy found [genvalidity-sydtest-source] Using haskell-suite found on system at: haskell-suite-dummy-location [genvalidity-sydtest-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [genvalidity-sydtest-source] No hmake found [genvalidity-sydtest-source] Using hpc version 0.69 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [genvalidity-sydtest-source] Using hsc2hs version 0.68.10 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [genvalidity-sydtest-source] Using hscolour version 1.25 found on system at: [genvalidity-sydtest-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour [genvalidity-sydtest-source] No jhc found [genvalidity-sydtest-source] Using ld found on system at: [genvalidity-sydtest-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld [genvalidity-sydtest-source] No pkg-config found [genvalidity-sydtest-source] Using runghc version 9.10.3 found on system at: [genvalidity-sydtest-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3 [genvalidity-sydtest-source] Using strip version 2.44 found on system at: [genvalidity-sydtest-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip [genvalidity-sydtest-source] Using tar found on system at: [genvalidity-sydtest-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar [genvalidity-sydtest-source] No uhc found [really-safe-money] [ 1 of 12] Compiling Numeric.DecimalLiteral ( src/Numeric/DecimalLiteral.hs, dist/build/Numeric/DecimalLiteral.o, dist/build/Numeric/DecimalLiteral.dyn_o ) [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/CondFlip at 368:7-62 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 375:80-82 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 375:80-82 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 337:21-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/CondFlip at 337:13-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 315:67-68 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 304:42-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 244:14-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:41-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:41-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:63-65 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:63-65 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 252:36-37 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 252:38-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 208:9-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ListLit at 186:15-25 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ListLit at 186:15-25 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 139:27-29 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 139:27-29 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 136:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 136:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 125:29-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 127:44-45 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 130:48-49 [genvalidity-sydtest-source] Phase: buildPhase [genvalidity-sydtest-source] Distribution quality warnings: [genvalidity-sydtest-source] [no-description] No 'description' field. [genvalidity-sydtest-source] [missing-upper-bounds] On library, these packages miss upper bounds: [genvalidity-sydtest-source] - QuickCheck [genvalidity-sydtest-source] - genvalidity [genvalidity-sydtest-source] - sydtest [genvalidity-sydtest-source] Please add them. There is more information at https://pvp.haskell.org/ [genvalidity-sydtest-source] Building source dist for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest-source] Source tarball created: dist/genvalidity-sydtest-1.0.1.0.tar.gz [genvalidity-sydtest-source] Phase: checkPhase [genvalidity-sydtest-source] Phase: haddockPhase [genvalidity-sydtest-source] Phase: installPhase [genvalidity-sydtest-source] Phase: fixupPhase [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0 [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache sydtest ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0 (17.95 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0 [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/25hwvm1yj97bbr983ygnl5vx2qwgx1sn-genvalidity-sydtest-source-1.0.1.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 1 of 7 built (1 building), 37 of 37 downloaded from cache Building genvalidity-sydtest [really-safe-money] [ 2 of 12] Compiling Money.QuantisationFactor ( src/Money/QuantisationFactor.hs, dist/build/Money/QuantisationFactor.o, dist/build/Money/QuantisationFactor.dyn_o ) [really-safe-money] mutation: instrumenting Money.QuantisationFactor [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 87:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 87:9-22 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 92:13-14 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 92:13-14 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 93:16-17 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 93:9-22 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 98:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 98:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 98:5-19 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 67:67-68 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 67:67-68 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 40:62-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ListLit at 39:7-8 [really-safe-money] mutation: recording Money.QuantisationFactor/ListLit at 39:7-8 [genvalidity-sydtest] Phase: setupCompilerEnvironmentPhase [genvalidity-sydtest] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3. [really-safe-money] [ 3 of 12] Compiling Money.Currency ( src/Money/Currency.hs, dist/build/Money/Currency.o, dist/build/Money/Currency.dyn_o ) [really-safe-money] mutation: instrumenting Money.Currency [genvalidity-sydtest] Phase: unpackPhase [genvalidity-sydtest] unpacking source archive /nix/store/apw3gfrazwk495zlrhcj919ch4h1b6g2-genvalidity-sydtest-source-1.0.1.0/genvalidity-sydtest-1.0.1.0.tar.gz [genvalidity-sydtest] source root is genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] setting SOURCE_DATE_EPOCH to timestamp 1778593583 of file "genvalidity-sydtest-1.0.1.0/test/Test/Syd/Validity/ShrinkingSpec.hs" [genvalidity-sydtest] warning: file "genvalidity-sydtest-1.0.1.0/test/Test/Syd/Validity/ShrinkingSpec.hs" may be generated; SOURCE_DATE_EPOCH may be non-deterministic [genvalidity-sydtest] Phase: patchPhase [genvalidity-sydtest] Phase: compileBuildDriverPhase [genvalidity-sydtest] setupCompileFlags: -package-db=/build/tmp.SOXXQ8tlPT/setup-package.conf.d -threaded [genvalidity-sydtest] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.SOXXQ8tlPT/Main.o ) [genvalidity-sydtest] [2 of 2] Linking Setup [really-safe-money] [ 4 of 12] Compiling Money.ConversionRate ( src/Money/ConversionRate.hs, dist/build/Money/ConversionRate.o, dist/build/Money/ConversionRate.dyn_o ) [really-safe-money] mutation: instrumenting Money.ConversionRate [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 116:45-46 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 116:45-46 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 109:27-28 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 109:27-28 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 72:25-26 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/Negate at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/CondFlip at 72:18-69 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 38:56-57 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/Negate at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/ListLit at 37:7-8 [really-safe-money] mutation: recording Money.ConversionRate/ListLit at 37:7-8 [really-safe-money] [ 5 of 12] Compiling Money.ConversionRateOf ( src/Money/ConversionRateOf.hs, dist/build/Money/ConversionRateOf.o, dist/build/Money/ConversionRateOf.dyn_o ) [really-safe-money] mutation: instrumenting Money.ConversionRateOf [really-safe-money] [ 6 of 12] Compiling Money.Amount ( src/Money/Amount.hs, dist/build/Money/Amount.o, dist/build/Money/Amount.dyn_o ) [really-safe-money] mutation: instrumenting Money.Amount [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 569:18-19 [really-safe-money] mutation: recording Money.Amount/ConstBool at 569:10-19 [really-safe-money] mutation: recording Money.Amount/ConstBool at 569:10-19 [really-safe-money] mutation: recording Money.Amount/Negate at 569:10-19 [really-safe-money] mutation: recording Money.Amount/CondFlip at 569:7-29 [really-safe-money] mutation: recording Money.Amount/ConstBool at 544:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 544:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 544:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 544:7-66 [really-safe-money] mutation: recording Money.Amount/IntLit at 518:14-15 [really-safe-money] mutation: recording Money.Amount/ConstBool at 518:10-15 [really-safe-money] mutation: recording Money.Amount/ConstBool at 518:10-15 [really-safe-money] mutation: recording Money.Amount/Negate at 518:10-15 [really-safe-money] mutation: recording Money.Amount/CondFlip at 518:7-66 [really-safe-money] mutation: recording Money.Amount/ConstBool at 476:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 476:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 476:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 476:7-66 [really-safe-money] mutation: recording Money.Amount/ConstBool at 388:5-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 388:5-16 [really-safe-money] mutation: recording Money.Amount/Negate at 388:5-16 [really-safe-money] mutation: recording Money.Amount/IntLit at 389:9-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 389:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 389:5-10 [really-safe-money] mutation: recording Money.Amount/Negate at 389:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 390:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 390:5-14 [really-safe-money] mutation: recording Money.Amount/Negate at 390:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 397:14-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 397:14-31 [really-safe-money] mutation: recording Money.Amount/Negate at 397:14-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 399:18-83 [really-safe-money] mutation: recording Money.Amount/ConstBool at 399:18-83 [really-safe-money] mutation: recording Money.Amount/Negate at 399:18-83 [really-safe-money] mutation: recording Money.Amount/CondFlip at 399:15-57 [really-safe-money] mutation: recording Money.Amount/CondFlip at 397:11-25 [really-safe-money] mutation: recording Money.Amount/IntLit at 320:9-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 320:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 320:5-10 [really-safe-money] mutation: recording Money.Amount/Negate at 320:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 321:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 321:5-14 [really-safe-money] mutation: recording Money.Amount/Negate at 321:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 327:9-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 327:9-16 [really-safe-money] mutation: recording Money.Amount/Negate at 327:9-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 328:9-21 [really-safe-money] mutation: recording Money.Amount/ConstBool at 328:9-21 [really-safe-money] mutation: recording Money.Amount/Negate at 328:9-21 [really-safe-money] mutation: recording Money.Amount/ConstBool at 329:9-18 [really-safe-money] mutation: recording Money.Amount/ConstBool at 329:9-18 [really-safe-money] mutation: recording Money.Amount/Negate at 329:9-18 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 332:14-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 332:14-40 [really-safe-money] mutation: recording Money.Amount/Negate at 332:14-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 339:22-39 [really-safe-money] mutation: recording Money.Amount/ConstBool at 339:22-39 [really-safe-money] mutation: recording Money.Amount/Negate at 339:22-39 [really-safe-money] mutation: recording Money.Amount/ConstBool at 341:26-91 [really-safe-money] mutation: recording Money.Amount/ConstBool at 341:26-91 [really-safe-money] mutation: recording Money.Amount/Negate at 341:26-91 [really-safe-money] mutation: recording Money.Amount/CondFlip at 341:23-65 [really-safe-money] mutation: recording Money.Amount/CondFlip at 339:19-33 [really-safe-money] mutation: recording Money.Amount/CondFlip at 332:11-33 [really-safe-money] mutation: recording Money.Amount/IntLit at 290:79-80 [really-safe-money] mutation: recording Money.Amount/IntLit at 494:96-97 [really-safe-money] mutation: recording Money.Amount/ConstBool at 495:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 495:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 495:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 495:7-66 [really-safe-money] mutation: recording Money.Amount/IntLit at 250:15-16 [really-safe-money] mutation: recording Money.Amount/IntLit at 661:30-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 681:12-37 [really-safe-money] mutation: recording Money.Amount/ConstBool at 681:12-37 [really-safe-money] mutation: recording Money.Amount/Negate at 681:12-37 [really-safe-money] mutation: recording Money.Amount/CondFlip at 681:9-27 [really-safe-money] mutation: recording Money.Amount/ConstBool at 806:79-92 [really-safe-money] mutation: recording Money.Amount/ConstBool at 806:79-92 [really-safe-money] mutation: recording Money.Amount/Negate at 806:79-92 [really-safe-money] mutation: recording Money.Amount/ConstBool at 607:15-22 [really-safe-money] mutation: recording Money.Amount/ConstBool at 607:15-22 [really-safe-money] mutation: recording Money.Amount/Negate at 607:15-22 [really-safe-money] mutation: recording Money.Amount/ListLit at 603:7-8 [really-safe-money] mutation: recording Money.Amount/ListLit at 603:7-8 [genvalidity-sydtest] Phase: updateAutotoolsGnuConfigScriptsPhase [genvalidity-sydtest] Phase: configurePhase [genvalidity-sydtest] configureFlags: --verbose --prefix=/nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc/share/doc/genvalidity-sydtest-1.0.1.0 --with-gcc=gcc --package-db=/build/tmp.SOXXQ8tlPT/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib [genvalidity-sydtest] Using Parsec parser [genvalidity-sydtest] Configuring genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Dependency QuickCheck: using QuickCheck-2.15.0.1 [genvalidity-sydtest] Dependency base >=4.7 && <5: using base-4.20.2.0 [genvalidity-sydtest] Dependency genvalidity >=1.0: using genvalidity-1.1.1.0 [genvalidity-sydtest] Dependency sydtest: using sydtest-0.23.0.2 [genvalidity-sydtest] Dependency QuickCheck: using QuickCheck-2.15.0.1 [genvalidity-sydtest] Dependency base >=4.7 && <5: using base-4.20.2.0 [genvalidity-sydtest] Dependency genvalidity: using genvalidity-1.1.1.0 [genvalidity-sydtest] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] Dependency sydtest: using sydtest-0.23.0.2 [genvalidity-sydtest] Source component graph: [genvalidity-sydtest]  component lib [genvalidity-sydtest]  component test:genvalidity-sydtest-test dependency lib [genvalidity-sydtest] Configured component graph: [genvalidity-sydtest]  component genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  include base-4.20.2.0-64da [genvalidity-sydtest]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest]  component genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  include base-4.20.2.0-64da [genvalidity-sydtest]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest] Linked component graph: [genvalidity-sydtest]  unit genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  include base-4.20.2.0-64da [genvalidity-sydtest]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest]  Test.Syd.Validity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity,Test.Syd.Validity.Applicative=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Applicative,Test.Syd.Validity.Arbitrary=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Arbitrary,Test.Syd.Validity.Eq=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Eq,Test.Syd.Validity.Functions=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions,Test.Syd.Validity.Functions.CanFail=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.CanFail,Test.Syd.Validity.Functions.Equivalence=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Equivalence,Test.Syd.Validity.Functions.Idempotence=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Idempotence,Test.Syd.Validity.Functions.Inverse=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Inverse,Test.Syd.Validity.Functions.Validity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functions.Validity,Test.Syd.Validity.Functor=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Functor,Test.Syd.Validity.GenValidity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.GenValidity,Test.Syd.Validity.GenValidity.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.GenValidity.Property,Test.Syd.Validity.Monad=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Monad,Test.Syd.Validity.Monoid=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Monoid,Test.Syd.Validity.Operations=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations,Test.Syd.Validity.Operations.Associativity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Associativity,Test.Syd.Validity.Operations.Commutativity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Commutativity,Test.Syd.Validity.Operations.Identity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Operations.Identity,Test.Syd.Validity.Ord=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Ord,Test.Syd.Validity.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Property,Test.Syd.Validity.Property.Utils=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Property.Utils,Test.Syd.Validity.Relations=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations,Test.Syd.Validity.Relations.Antireflexivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Antireflexivity,Test.Syd.Validity.Relations.Antisymmetry=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Antisymmetry,Test.Syd.Validity.Relations.Reflexivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Reflexivity,Test.Syd.Validity.Relations.Symmetry=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Symmetry,Test.Syd.Validity.Relations.Transitivity=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Relations.Transitivity,Test.Syd.Validity.Show=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Show,Test.Syd.Validity.Shrinking=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Shrinking,Test.Syd.Validity.Shrinking.Property=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Shrinking.Property,Test.Syd.Validity.Types=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Types,Test.Syd.Validity.Utils=genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5:Test.Syd.Validity.Utils [genvalidity-sydtest]  unit genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  include base-4.20.2.0-64da [genvalidity-sydtest]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest] Ready component graph: [genvalidity-sydtest]  definite genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  depends base-4.20.2.0-64da [genvalidity-sydtest]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  depends sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest]  definite genvalidity-sydtest-1.0.1.0-IoHwpqgplwz9l00OADhvK6-genvalidity-sydtest-test [genvalidity-sydtest]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [genvalidity-sydtest]  depends base-4.20.2.0-64da [genvalidity-sydtest]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [genvalidity-sydtest]  depends genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest]  depends sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [genvalidity-sydtest] Using Cabal-3.12.1.0 compiled by ghc-9.10 [genvalidity-sydtest] Using compiler: ghc-9.10.3 [genvalidity-sydtest] Using install prefix: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] Executables installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/bin [genvalidity-sydtest] Libraries installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest] Dynamic Libraries installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6 [genvalidity-sydtest] Private executables installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/libexec/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] Data files installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/share/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] Documentation installed in: [genvalidity-sydtest] /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc/share/doc/genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] Configuration files installed in: [genvalidity-sydtest] /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/etc [genvalidity-sydtest] No alex found [genvalidity-sydtest] Using ar found on system at: [genvalidity-sydtest] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar [genvalidity-sydtest] No c2hs found [genvalidity-sydtest] No cpphs found [genvalidity-sydtest] No doctest found [genvalidity-sydtest] Using gcc version 14.3.0 given by user at: [genvalidity-sydtest] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc [genvalidity-sydtest] Using ghc version 9.10.3 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc [genvalidity-sydtest] Using ghc-pkg version 9.10.3 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [genvalidity-sydtest] No ghcjs found [genvalidity-sydtest] No ghcjs-pkg found [genvalidity-sydtest] No greencard found [genvalidity-sydtest] Using haddock version 2.31.1 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [genvalidity-sydtest] No happy found [genvalidity-sydtest] Using haskell-suite found on system at: haskell-suite-dummy-location [genvalidity-sydtest] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [genvalidity-sydtest] No hmake found [genvalidity-sydtest] Using hpc version 0.69 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [genvalidity-sydtest] Using hsc2hs version 0.68.10 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [genvalidity-sydtest] Using hscolour version 1.25 found on system at: [genvalidity-sydtest] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour [genvalidity-sydtest] No jhc found [genvalidity-sydtest] Using ld found on system at: [genvalidity-sydtest] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld [genvalidity-sydtest] No pkg-config found [genvalidity-sydtest] Using runghc version 9.10.3 found on system at: [genvalidity-sydtest] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3 [genvalidity-sydtest] Using strip version 2.44 found on system at: [genvalidity-sydtest] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip [genvalidity-sydtest] Using tar found on system at: [genvalidity-sydtest] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar [genvalidity-sydtest] No uhc found [genvalidity-sydtest] Phase: buildPhase [genvalidity-sydtest] Preprocessing library for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Building library for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] [ 1 of 34] Compiling Paths_genvalidity_sydtest ( dist/build/autogen/Paths_genvalidity_sydtest.hs, dist/build/Paths_genvalidity_sydtest.o, dist/build/Paths_genvalidity_sydtest.dyn_o ) [genvalidity-sydtest] [ 2 of 34] Compiling Test.Syd.Validity.Functions.Idempotence ( src/Test/Syd/Validity/Functions/Idempotence.hs, dist/build/Test/Syd/Validity/Functions/Idempotence.o, dist/build/Test/Syd/Validity/Functions/Idempotence.dyn_o ) [genvalidity-sydtest] [ 3 of 34] Compiling Test.Syd.Validity.Operations.Associativity ( src/Test/Syd/Validity/Operations/Associativity.hs, dist/build/Test/Syd/Validity/Operations/Associativity.o, dist/build/Test/Syd/Validity/Operations/Associativity.dyn_o ) [genvalidity-sydtest] [ 4 of 34] Compiling Test.Syd.Validity.Operations.Commutativity ( src/Test/Syd/Validity/Operations/Commutativity.hs, dist/build/Test/Syd/Validity/Operations/Commutativity.o, dist/build/Test/Syd/Validity/Operations/Commutativity.dyn_o ) [genvalidity-sydtest] [ 5 of 34] Compiling Test.Syd.Validity.Operations.Identity ( src/Test/Syd/Validity/Operations/Identity.hs, dist/build/Test/Syd/Validity/Operations/Identity.o, dist/build/Test/Syd/Validity/Operations/Identity.dyn_o ) [genvalidity-sydtest] [ 6 of 34] Compiling Test.Syd.Validity.Operations ( src/Test/Syd/Validity/Operations.hs, dist/build/Test/Syd/Validity/Operations.o, dist/build/Test/Syd/Validity/Operations.dyn_o ) [genvalidity-sydtest] [ 7 of 34] Compiling Test.Syd.Validity.Property.Utils ( src/Test/Syd/Validity/Property/Utils.hs, dist/build/Test/Syd/Validity/Property/Utils.o, dist/build/Test/Syd/Validity/Property/Utils.dyn_o ) [genvalidity-sydtest] [ 8 of 34] Compiling Test.Syd.Validity.GenValidity.Property ( src/Test/Syd/Validity/GenValidity/Property.hs, dist/build/Test/Syd/Validity/GenValidity/Property.o, dist/build/Test/Syd/Validity/GenValidity/Property.dyn_o ) [genvalidity-sydtest] [ 9 of 34] Compiling Test.Syd.Validity.Functions.Validity ( src/Test/Syd/Validity/Functions/Validity.hs, dist/build/Test/Syd/Validity/Functions/Validity.o, dist/build/Test/Syd/Validity/Functions/Validity.dyn_o ) [genvalidity-sydtest] [10 of 34] Compiling Test.Syd.Validity.Relations.Antireflexivity ( src/Test/Syd/Validity/Relations/Antireflexivity.hs, dist/build/Test/Syd/Validity/Relations/Antireflexivity.o, dist/build/Test/Syd/Validity/Relations/Antireflexivity.dyn_o ) [genvalidity-sydtest] [11 of 34] Compiling Test.Syd.Validity.Relations.Antisymmetry ( src/Test/Syd/Validity/Relations/Antisymmetry.hs, dist/build/Test/Syd/Validity/Relations/Antisymmetry.o, dist/build/Test/Syd/Validity/Relations/Antisymmetry.dyn_o ) [genvalidity-sydtest] [12 of 34] Compiling Test.Syd.Validity.Relations.Reflexivity ( src/Test/Syd/Validity/Relations/Reflexivity.hs, dist/build/Test/Syd/Validity/Relations/Reflexivity.o, dist/build/Test/Syd/Validity/Relations/Reflexivity.dyn_o ) [genvalidity-sydtest] [13 of 34] Compiling Test.Syd.Validity.Relations.Symmetry ( src/Test/Syd/Validity/Relations/Symmetry.hs, dist/build/Test/Syd/Validity/Relations/Symmetry.o, dist/build/Test/Syd/Validity/Relations/Symmetry.dyn_o ) [genvalidity-sydtest] [14 of 34] Compiling Test.Syd.Validity.Relations.Transitivity ( src/Test/Syd/Validity/Relations/Transitivity.hs, dist/build/Test/Syd/Validity/Relations/Transitivity.o, dist/build/Test/Syd/Validity/Relations/Transitivity.dyn_o ) [genvalidity-sydtest] [15 of 34] Compiling Test.Syd.Validity.Relations ( src/Test/Syd/Validity/Relations.hs, dist/build/Test/Syd/Validity/Relations.o, dist/build/Test/Syd/Validity/Relations.dyn_o ) [genvalidity-sydtest] [16 of 34] Compiling Test.Syd.Validity.Shrinking.Property ( src/Test/Syd/Validity/Shrinking/Property.hs, dist/build/Test/Syd/Validity/Shrinking/Property.o, dist/build/Test/Syd/Validity/Shrinking/Property.dyn_o ) [genvalidity-sydtest] [17 of 34] Compiling Test.Syd.Validity.Types ( src/Test/Syd/Validity/Types.hs, dist/build/Test/Syd/Validity/Types.o, dist/build/Test/Syd/Validity/Types.dyn_o ) [genvalidity-sydtest] [18 of 34] Compiling Test.Syd.Validity.Functions.Inverse ( src/Test/Syd/Validity/Functions/Inverse.hs, dist/build/Test/Syd/Validity/Functions/Inverse.o, dist/build/Test/Syd/Validity/Functions/Inverse.dyn_o ) [genvalidity-sydtest] [19 of 34] Compiling Test.Syd.Validity.Functions.Equivalence ( src/Test/Syd/Validity/Functions/Equivalence.hs, dist/build/Test/Syd/Validity/Functions/Equivalence.o, dist/build/Test/Syd/Validity/Functions/Equivalence.dyn_o ) [genvalidity-sydtest] [20 of 34] Compiling Test.Syd.Validity.Functions.CanFail ( src/Test/Syd/Validity/Functions/CanFail.hs, dist/build/Test/Syd/Validity/Functions/CanFail.o, dist/build/Test/Syd/Validity/Functions/CanFail.dyn_o ) [genvalidity-sydtest] [21 of 34] Compiling Test.Syd.Validity.Functions ( src/Test/Syd/Validity/Functions.hs, dist/build/Test/Syd/Validity/Functions.o, dist/build/Test/Syd/Validity/Functions.dyn_o ) [genvalidity-sydtest] [22 of 34] Compiling Test.Syd.Validity.Property ( src/Test/Syd/Validity/Property.hs, dist/build/Test/Syd/Validity/Property.o, dist/build/Test/Syd/Validity/Property.dyn_o ) [genvalidity-sydtest] [23 of 34] Compiling Test.Syd.Validity.Utils ( src/Test/Syd/Validity/Utils.hs, dist/build/Test/Syd/Validity/Utils.o, dist/build/Test/Syd/Validity/Utils.dyn_o ) [genvalidity-sydtest] [24 of 34] Compiling Test.Syd.Validity.Shrinking ( src/Test/Syd/Validity/Shrinking.hs, dist/build/Test/Syd/Validity/Shrinking.o, dist/build/Test/Syd/Validity/Shrinking.dyn_o ) [genvalidity-sydtest] [25 of 34] Compiling Test.Syd.Validity.Show ( src/Test/Syd/Validity/Show.hs, dist/build/Test/Syd/Validity/Show.o, dist/build/Test/Syd/Validity/Show.dyn_o ) [genvalidity-sydtest] [26 of 34] Compiling Test.Syd.Validity.Ord ( src/Test/Syd/Validity/Ord.hs, dist/build/Test/Syd/Validity/Ord.o, dist/build/Test/Syd/Validity/Ord.dyn_o ) [genvalidity-sydtest] [27 of 34] Compiling Test.Syd.Validity.Monoid ( src/Test/Syd/Validity/Monoid.hs, dist/build/Test/Syd/Validity/Monoid.o, dist/build/Test/Syd/Validity/Monoid.dyn_o ) [genvalidity-sydtest] [28 of 34] Compiling Test.Syd.Validity.Monad ( src/Test/Syd/Validity/Monad.hs, dist/build/Test/Syd/Validity/Monad.o, dist/build/Test/Syd/Validity/Monad.dyn_o ) [genvalidity-sydtest] [29 of 34] Compiling Test.Syd.Validity.GenValidity ( src/Test/Syd/Validity/GenValidity.hs, dist/build/Test/Syd/Validity/GenValidity.o, dist/build/Test/Syd/Validity/GenValidity.dyn_o ) [genvalidity-sydtest] [30 of 34] Compiling Test.Syd.Validity.Functor ( src/Test/Syd/Validity/Functor.hs, dist/build/Test/Syd/Validity/Functor.o, dist/build/Test/Syd/Validity/Functor.dyn_o ) [genvalidity-sydtest] [31 of 34] Compiling Test.Syd.Validity.Eq ( src/Test/Syd/Validity/Eq.hs, dist/build/Test/Syd/Validity/Eq.o, dist/build/Test/Syd/Validity/Eq.dyn_o ) [genvalidity-sydtest] [32 of 34] Compiling Test.Syd.Validity.Arbitrary ( src/Test/Syd/Validity/Arbitrary.hs, dist/build/Test/Syd/Validity/Arbitrary.o, dist/build/Test/Syd/Validity/Arbitrary.dyn_o ) [genvalidity-sydtest] [33 of 34] Compiling Test.Syd.Validity.Applicative ( src/Test/Syd/Validity/Applicative.hs, dist/build/Test/Syd/Validity/Applicative.o, dist/build/Test/Syd/Validity/Applicative.dyn_o ) [genvalidity-sydtest] [34 of 34] Compiling Test.Syd.Validity ( src/Test/Syd/Validity.hs, dist/build/Test/Syd/Validity.o, dist/build/Test/Syd/Validity.dyn_o ) [genvalidity-sydtest] [ 1 of 34] Compiling Paths_genvalidity_sydtest ( dist/build/autogen/Paths_genvalidity_sydtest.hs, dist/build/Paths_genvalidity_sydtest.p_o ) [genvalidity-sydtest] [ 2 of 34] Compiling Test.Syd.Validity.Functions.Idempotence ( src/Test/Syd/Validity/Functions/Idempotence.hs, dist/build/Test/Syd/Validity/Functions/Idempotence.p_o ) [genvalidity-sydtest] [ 3 of 34] Compiling Test.Syd.Validity.Operations.Associativity ( src/Test/Syd/Validity/Operations/Associativity.hs, dist/build/Test/Syd/Validity/Operations/Associativity.p_o ) [genvalidity-sydtest] [ 4 of 34] Compiling Test.Syd.Validity.Operations.Commutativity ( src/Test/Syd/Validity/Operations/Commutativity.hs, dist/build/Test/Syd/Validity/Operations/Commutativity.p_o ) [genvalidity-sydtest] [ 5 of 34] Compiling Test.Syd.Validity.Operations.Identity ( src/Test/Syd/Validity/Operations/Identity.hs, dist/build/Test/Syd/Validity/Operations/Identity.p_o ) [genvalidity-sydtest] [ 6 of 34] Compiling Test.Syd.Validity.Operations ( src/Test/Syd/Validity/Operations.hs, dist/build/Test/Syd/Validity/Operations.p_o ) [genvalidity-sydtest] [ 7 of 34] Compiling Test.Syd.Validity.Property.Utils ( src/Test/Syd/Validity/Property/Utils.hs, dist/build/Test/Syd/Validity/Property/Utils.p_o ) [genvalidity-sydtest] [ 8 of 34] Compiling Test.Syd.Validity.GenValidity.Property ( src/Test/Syd/Validity/GenValidity/Property.hs, dist/build/Test/Syd/Validity/GenValidity/Property.p_o ) [genvalidity-sydtest] [ 9 of 34] Compiling Test.Syd.Validity.Functions.Validity ( src/Test/Syd/Validity/Functions/Validity.hs, dist/build/Test/Syd/Validity/Functions/Validity.p_o ) [genvalidity-sydtest] [10 of 34] Compiling Test.Syd.Validity.Relations.Antireflexivity ( src/Test/Syd/Validity/Relations/Antireflexivity.hs, dist/build/Test/Syd/Validity/Relations/Antireflexivity.p_o ) [genvalidity-sydtest] [11 of 34] Compiling Test.Syd.Validity.Relations.Antisymmetry ( src/Test/Syd/Validity/Relations/Antisymmetry.hs, dist/build/Test/Syd/Validity/Relations/Antisymmetry.p_o ) [genvalidity-sydtest] [12 of 34] Compiling Test.Syd.Validity.Relations.Reflexivity ( src/Test/Syd/Validity/Relations/Reflexivity.hs, dist/build/Test/Syd/Validity/Relations/Reflexivity.p_o ) [genvalidity-sydtest] [13 of 34] Compiling Test.Syd.Validity.Relations.Symmetry ( src/Test/Syd/Validity/Relations/Symmetry.hs, dist/build/Test/Syd/Validity/Relations/Symmetry.p_o ) [genvalidity-sydtest] [14 of 34] Compiling Test.Syd.Validity.Relations.Transitivity ( src/Test/Syd/Validity/Relations/Transitivity.hs, dist/build/Test/Syd/Validity/Relations/Transitivity.p_o ) [genvalidity-sydtest] [15 of 34] Compiling Test.Syd.Validity.Relations ( src/Test/Syd/Validity/Relations.hs, dist/build/Test/Syd/Validity/Relations.p_o ) [genvalidity-sydtest] [16 of 34] Compiling Test.Syd.Validity.Shrinking.Property ( src/Test/Syd/Validity/Shrinking/Property.hs, dist/build/Test/Syd/Validity/Shrinking/Property.p_o ) [genvalidity-sydtest] [17 of 34] Compiling Test.Syd.Validity.Types ( src/Test/Syd/Validity/Types.hs, dist/build/Test/Syd/Validity/Types.p_o ) [genvalidity-sydtest] [18 of 34] Compiling Test.Syd.Validity.Functions.Inverse ( src/Test/Syd/Validity/Functions/Inverse.hs, dist/build/Test/Syd/Validity/Functions/Inverse.p_o ) [genvalidity-sydtest] [19 of 34] Compiling Test.Syd.Validity.Functions.Equivalence ( src/Test/Syd/Validity/Functions/Equivalence.hs, dist/build/Test/Syd/Validity/Functions/Equivalence.p_o ) [genvalidity-sydtest] [20 of 34] Compiling Test.Syd.Validity.Functions.CanFail ( src/Test/Syd/Validity/Functions/CanFail.hs, dist/build/Test/Syd/Validity/Functions/CanFail.p_o ) [genvalidity-sydtest] [21 of 34] Compiling Test.Syd.Validity.Functions ( src/Test/Syd/Validity/Functions.hs, dist/build/Test/Syd/Validity/Functions.p_o ) [genvalidity-sydtest] [22 of 34] Compiling Test.Syd.Validity.Property ( src/Test/Syd/Validity/Property.hs, dist/build/Test/Syd/Validity/Property.p_o ) [genvalidity-sydtest] [23 of 34] Compiling Test.Syd.Validity.Utils ( src/Test/Syd/Validity/Utils.hs, dist/build/Test/Syd/Validity/Utils.p_o ) [genvalidity-sydtest] [24 of 34] Compiling Test.Syd.Validity.Shrinking ( src/Test/Syd/Validity/Shrinking.hs, dist/build/Test/Syd/Validity/Shrinking.p_o ) [genvalidity-sydtest] [25 of 34] Compiling Test.Syd.Validity.Show ( src/Test/Syd/Validity/Show.hs, dist/build/Test/Syd/Validity/Show.p_o ) [genvalidity-sydtest] [26 of 34] Compiling Test.Syd.Validity.Ord ( src/Test/Syd/Validity/Ord.hs, dist/build/Test/Syd/Validity/Ord.p_o ) [genvalidity-sydtest] [27 of 34] Compiling Test.Syd.Validity.Monoid ( src/Test/Syd/Validity/Monoid.hs, dist/build/Test/Syd/Validity/Monoid.p_o ) [genvalidity-sydtest] [28 of 34] Compiling Test.Syd.Validity.Monad ( src/Test/Syd/Validity/Monad.hs, dist/build/Test/Syd/Validity/Monad.p_o ) [genvalidity-sydtest] [29 of 34] Compiling Test.Syd.Validity.GenValidity ( src/Test/Syd/Validity/GenValidity.hs, dist/build/Test/Syd/Validity/GenValidity.p_o ) [genvalidity-sydtest] [30 of 34] Compiling Test.Syd.Validity.Functor ( src/Test/Syd/Validity/Functor.hs, dist/build/Test/Syd/Validity/Functor.p_o ) [genvalidity-sydtest] [31 of 34] Compiling Test.Syd.Validity.Eq ( src/Test/Syd/Validity/Eq.hs, dist/build/Test/Syd/Validity/Eq.p_o ) [genvalidity-sydtest] [32 of 34] Compiling Test.Syd.Validity.Arbitrary ( src/Test/Syd/Validity/Arbitrary.hs, dist/build/Test/Syd/Validity/Arbitrary.p_o ) [genvalidity-sydtest] [33 of 34] Compiling Test.Syd.Validity.Applicative ( src/Test/Syd/Validity/Applicative.hs, dist/build/Test/Syd/Validity/Applicative.p_o ) [genvalidity-sydtest] [34 of 34] Compiling Test.Syd.Validity ( src/Test/Syd/Validity.hs, dist/build/Test/Syd/Validity.p_o ) [genvalidity-sydtest] Preprocessing test suite 'genvalidity-sydtest-test' for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Building test suite 'genvalidity-sydtest-test' for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] [ 1 of 15] Compiling Paths_genvalidity_sydtest ( dist/build/genvalidity-sydtest-test/autogen/Paths_genvalidity_sydtest.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Paths_genvalidity_sydtest.o ) [genvalidity-sydtest] [ 2 of 15] Compiling Test.Syd.Validity.ApplicativeSpec ( test/Test/Syd/Validity/ApplicativeSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/ApplicativeSpec.o ) [genvalidity-sydtest] [ 3 of 15] Compiling Test.Syd.Validity.ArbitrarySpec ( test/Test/Syd/Validity/ArbitrarySpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/ArbitrarySpec.o ) [genvalidity-sydtest] [ 4 of 15] Compiling Test.Syd.Validity.EqSpec ( test/Test/Syd/Validity/EqSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/EqSpec.o ) [genvalidity-sydtest] [ 5 of 15] Compiling Test.Syd.Validity.FunctorSpec ( test/Test/Syd/Validity/FunctorSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/FunctorSpec.o ) [genvalidity-sydtest] [ 6 of 15] Compiling Test.Syd.Validity.GenRelativeValiditySpec ( test/Test/Syd/Validity/GenRelativeValiditySpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/GenRelativeValiditySpec.o ) [genvalidity-sydtest] [ 7 of 15] Compiling Test.Syd.Validity.GenValiditySpec ( test/Test/Syd/Validity/GenValiditySpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/GenValiditySpec.o ) [genvalidity-sydtest] [ 8 of 15] Compiling Test.Syd.Validity.MonadSpec ( test/Test/Syd/Validity/MonadSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/MonadSpec.o ) [genvalidity-sydtest] [ 9 of 15] Compiling Test.Syd.Validity.MonoidSpec ( test/Test/Syd/Validity/MonoidSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/MonoidSpec.o ) [genvalidity-sydtest] [10 of 15] Compiling Test.Syd.Validity.Operations.CommutativitySpec ( test/Test/Syd/Validity/Operations/CommutativitySpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/Operations/CommutativitySpec.o ) [genvalidity-sydtest] [11 of 15] Compiling Test.Syd.Validity.OrdSpec ( test/Test/Syd/Validity/OrdSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/OrdSpec.o ) [genvalidity-sydtest] [12 of 15] Compiling Test.Syd.Validity.RelativeValiditySpec ( test/Test/Syd/Validity/RelativeValiditySpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/RelativeValiditySpec.o ) [genvalidity-sydtest] [13 of 15] Compiling Test.Syd.Validity.ShowSpec ( test/Test/Syd/Validity/ShowSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/ShowSpec.o ) [genvalidity-sydtest] [14 of 15] Compiling Test.Syd.Validity.ShrinkingSpec ( test/Test/Syd/Validity/ShrinkingSpec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Test/Syd/Validity/ShrinkingSpec.o ) [genvalidity-sydtest] [15 of 15] Compiling Main ( test/Spec.hs, dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test-tmp/Main.o ) [genvalidity-sydtest] [16 of 16] Linking dist/build/genvalidity-sydtest-test/genvalidity-sydtest-test [genvalidity-sydtest] Phase: checkPhase [genvalidity-sydtest] Running 1 test suites... [genvalidity-sydtest] Test suite genvalidity-sydtest-test: RUNNING... [genvalidity-sydtest] Tests: [genvalidity-sydtest]  [genvalidity-sydtest] Test.Syd.Validity.MonoidSpec [genvalidity-sydtest]  Monoid [Int] [genvalidity-sydtest]  mappend :: [Int] -> [Int] -> [Int] [genvalidity-sydtest]  ✓ is an associative operation for "valid :: ([Int],[Int],[Int])"  7.86 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mempty :: [Int] [genvalidity-sydtest]  ✓ is the identity for mappend :: [Int] -> [Int] -> [Int] for "valid :: [Int]"  6.62 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mconcat :: [[Int]] -> [Int] [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "valid :: [[Int]]"  4.53 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monoid [Int] [genvalidity-sydtest]  mconcat :: [[Int]] -> [Int] [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "arbitrary :: [[Int]]"  6.31 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mempty :: [Int] [genvalidity-sydtest]  ✓ is the identity for mappend :: [Int] -> [Int] -> [Int] for "arbitrary :: [Int]"  6.04 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mappend :: [Int] -> [Int] -> [Int] [genvalidity-sydtest]  ✓ is an associative operation for "arbitrary :: ([Int],[Int],[Int])"  6.39 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monoid ([Ratio Integer]) [genvalidity-sydtest]  mappend :: ([Ratio Integer]) -> ([Ratio Integer]) -> ([Ratio Integer]) [genvalidity-sydtest]  ✓ is an associative operation for "valid :: (([Ratio Integer],[Ratio Integer],[Ratio Integer]))"  56.35 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mempty :: ([Ratio Integer]) [genvalidity-sydtest]  ✓ is the identity for mappend :: ([Ratio Integer]) -> ([Ratio Integer]) -> ([Ratio Integer]) for "valid :: ([Ratio Integer])"  37.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mconcat :: [([Ratio Integer])] -> ([Ratio Integer]) [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "valid :: ([[Ratio Integer]])"  25.72 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monoid [Char] [genvalidity-sydtest]  mappend :: [Char] -> [Char] -> [Char] [genvalidity-sydtest]  ✓ is an associative operation for "singleton list of 'a' :: ([Char],[Char],[Char])"  0.52 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mempty :: [Char] [genvalidity-sydtest]  ✓ is the identity for mappend :: [Char] -> [Char] -> [Char] for "singleton list of 'a' :: [Char]"  1.10 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  mconcat :: [[Char]] -> [Char] [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "singleton list of 'a' :: [[Char]]"  2.83 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.OrdSpec [genvalidity-sydtest]  Ord (Ratio Integer) [genvalidity-sydtest]  "max :: (Ratio Integer -> Ratio Integer -> Ratio Integer)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (Ratio Integer)"'s  4.06 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>=) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is transitive for "valid (Ratio Integer)"'s  10.90 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "valid (Ratio Integer)"'s  3.88 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid (Ratio Integer)"'s  1.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (Ratio Integer)"'s  4.03 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "min :: (Ratio Integer -> Ratio Integer -> Ratio Integer)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (Ratio Integer)"'s  10.47 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<=) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (Ratio Integer)"'s  1.25 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid (Ratio Integer)"'s  2.04 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid (Ratio Integer)"'s  4.50 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "valid (Ratio Integer)"'s  5.90 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (Ratio Integer)"'s  3.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid (Ratio Integer)"'s  2.48 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "valid (Ratio Integer)"'s  2.01 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "valid (Ratio Integer)"'s  3.14 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (Ratio Integer)"'s  5.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid (Ratio Integer)"'s  3.98 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Ord Int [genvalidity-sydtest]  (<=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= GT) for "arbitrary Int"'s  0.63 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "arbitrary Int"'s  0.78 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "arbitrary Int"'s  0.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "arbitrary Int"'s  0.75 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "min :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "arbitrary Int"'s  0.53 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "arbitrary Int"'s  0.25 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "arbitrary Int"'s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == GT) for "arbitrary Int"'s  0.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "max :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "arbitrary Int"'s  0.66 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "arbitrary Int"'s  0.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == LT) for "arbitrary Int"'s  0.17 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "arbitrary Int"'s  0.24 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "arbitrary Int"'s  0.58 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= LT) for "arbitrary Int"'s  0.77 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "arbitrary Int"'s  0.24 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "arbitrary Int"'s  0.18 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Ord Int [genvalidity-sydtest]  (>=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antisymmetric for "valid Int"'s  0.72 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid Int"'s  0.54 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid Int"'s  0.78 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid Int"'s  0.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "max :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid Int"'s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "min :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid Int"'s  0.24 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "valid Int"'s  1.66 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid Int"'s  0.59 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid Int"'s  0.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "valid Int"'s  0.17 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid Int"'s  0.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid Int"'s  0.47 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antisymmetric for "valid Int"'s  0.34 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid Int"'s  0.59 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid Int"'s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid Int"'s  0.51 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Ord Int [genvalidity-sydtest]  (>=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "even Int"'s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= LT) for "even Int"'s  1.03 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "even Int"'s  0.27 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "even Int"'s  1.10 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == LT) for "even Int"'s  0.22 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "even Int"'s  1.27 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "even Int"'s  1.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "even Int"'s  0.82 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b == GT) for "even Int"'s  0.98 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "even Int"'s  0.90 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "max :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "even Int"'s  1.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  "min :: (Int -> Int -> Int)" [genvalidity-sydtest]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "even Int"'s  0.87 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "even Int"'s  0.74 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "even Int"'s  0.10 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> compare a b /= GT) for "even Int"'s  0.77 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antisymmetric for "even Int"'s  2.46 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.MonadSpec [genvalidity-sydtest]  Monad [] [genvalidity-sydtest]  relation with Applicative [] [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "[] of ints :: [Int]"  0.67 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "[] of ints :: [Int]" and "[] of ints :: [Int]"  16.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "[] of additions :: ([Int -> Int])" and "[] of ints :: [Int]"  0.63 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Functor [] [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "[] of ints :: [Int]"  0.55 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "[] of ints :: [Int]" "perturbations using the int :: (Int -> [Int])" and "perturbations using the double the int :: (Int -> [Int])"  223.53 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> [] a and (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> [Int])"  1.17 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "[] of ints :: [Int]"  1.12 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad Maybe [genvalidity-sydtest]  (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "Maybe of ints :: (Maybe Int)" "perturbations using the int :: (Int -> Maybe Int)" and "perturbations using the double the int :: (Int -> Maybe Int)"  0.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> Maybe a and (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "Maybe of ints :: (Maybe Int)"  0.76 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> Maybe Int)"  0.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Functor Maybe [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "Maybe of ints :: (Maybe Int)"  0.27 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative Maybe [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "Maybe of additions :: (Maybe (Int -> Int))" and "Maybe of ints :: (Maybe Int)"  0.27 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "Maybe of ints :: (Maybe Int)"  0.28 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "Maybe of ints :: (Maybe Int)" and "Maybe of ints :: (Maybe Int)"  6.17 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad Maybe [genvalidity-sydtest]  (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "Maybe of ints :: (Maybe Int)" "perturbations using the int :: (Int -> Maybe Int)" and "perturbations using the double the int :: (Int -> Maybe Int)"  0.54 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative Maybe [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "Maybe of ints :: (Maybe Int)"  0.42 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "Maybe of ints :: (Maybe Int)" and "Maybe of ints :: (Maybe Int)"  0.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "Maybe of additions :: (Maybe (Int -> Int))" and "Maybe of ints :: (Maybe Int)"  0.20 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> Maybe a and (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "Maybe of ints :: (Maybe Int)"  0.18 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> Maybe Int)"  0.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Functor Maybe [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "Maybe of ints :: (Maybe Int)"  0.19 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad (Either Int) [genvalidity-sydtest]  return :: a -> (Either Int) a and (>>=) :: (Either Int) a -> (b -> (Either Int) a) -> (Either Int) b [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "(Either Int) of ints :: (Either Int Int)"  0.36 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> Either Int Int)"  0.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative (Either Int) [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "(Either Int) of additions :: (Either Int (Int -> Int))" and "(Either Int) of ints :: (Either Int Int)"  0.62 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "(Either Int) of ints :: (Either Int Int)"  0.84 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "(Either Int) of ints :: (Either Int Int)" and "(Either Int) of ints :: (Either Int Int)"  0.84 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>>=) :: (Either Int) a -> (b -> (Either Int) a) -> (Either Int) b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "(Either Int) of ints :: (Either Int Int)" "perturbations using the int :: (Int -> Either Int Int)" and "perturbations using the double the int :: (Int -> Either Int Int)"  0.88 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Functor (Either Int) [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "(Either Int) of ints :: (Either Int Int)"  0.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad Maybe [genvalidity-sydtest]  relation with Functor Maybe [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "appends :: ([Char] -> [Char])" and "Just an ABC :: (Maybe [Char])"  2.04 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative Maybe [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "Just an ABC :: (Maybe [Char])"  0.69 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "Just an ABC :: (Maybe [Char])" and "Just an ABC :: (Maybe [Char])"  0.40 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "append 'a' in Just :: (Maybe ([Char] -> [Char]))" and "Just an ABC :: (Maybe [Char])"  0.75 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "Just an ABC :: (Maybe [Char])" "justisation :: ([Char] -> Maybe [Char])" and "justisation :: ([Char] -> Maybe [Char])"  0.48 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> Maybe a and (>>=) :: Maybe a -> (b -> Maybe a) -> Maybe b [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "Just an ABC :: (Maybe [Char])"  0.37 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "ABC :: [Char]" and "justisation :: ([Char] -> Maybe [Char])"  1.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad [] [genvalidity-sydtest]  (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "list of fives :: [Int]" "singletonisation :: (Int -> [Int])" and "singletonisation :: (Int -> [Int])"  2.19 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> [] a and (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "list of fives :: [Int]"  2.14 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "four :: Int" and "singletonisation :: (Int -> [Int])"  3.18 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative [] [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "list of fives :: [Int]"  1.14 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "list of fives :: [Int]" and "list of sixes :: [Int]"  24.54 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "increment in list :: ([Int -> Int])" and "list of fives :: [Int]"  3.41 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Functor [] [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "factorisations :: (Int -> Int)" and "list of fives :: [Int]"  1.83 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Monad [] [genvalidity-sydtest]  relation with Functor [] [genvalidity-sydtest]  ✓ satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "[] of ints :: [Int]"  10.22 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "[] of ints :: [Int]" "perturbations using the int :: (Int -> [Int])" and "perturbations using the double the int :: (Int -> [Int])"  176.97 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  relation with Applicative [] [genvalidity-sydtest]  ✓ satisfies '(>>) = (*>)' for "[] of ints :: [Int]" and "[] of ints :: [Int]"  26.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies 'pure = return' for "[] of ints :: [Int]"  0.28 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies '(<*>) = ap' for "[] of additions :: ([Int -> Int])" and "[] of ints :: [Int]"  1.37 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  return :: a -> [] a and (>>=) :: [] a -> (b -> [] a) -> [] b [genvalidity-sydtest]  ✓ satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> [Int])"  0.81 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the second Monad law: 'm >>= return = m' for "[] of ints :: [Int]"  0.90 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.EqSpec [genvalidity-sydtest]  Eq (Ratio Integer) [genvalidity-sydtest]  (==) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Ratio Integer)"s  1.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid (Ratio Integer)"s  4.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid (Ratio Integer)"s  3.89 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is symmetric for "valid (Ratio Integer)"s  5.16 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (/=) :: (Ratio Integer) -> (Ratio Integer) -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Ratio Integer)"s  24.04 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "valid (Ratio Integer)"s  3.20 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Eq Int [genvalidity-sydtest]  (==) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid Int"s  6.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "valid Int"s  2.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "valid Int"s  6.22 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is symmetric for "valid Int"s  0.10 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (/=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a == b) for "valid Int"s  0.18 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is antireflexive for "valid Int"s  0.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Eq Int [genvalidity-sydtest]  (==) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is transitive for "arbitrary Int"s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is symmetric for "arbitrary Int"s  0.36 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "arbitrary Int"s  0.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a /= b) for "arbitrary Int"s  0.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (/=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "arbitrary Int"s  0.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a == b) for "arbitrary Int"s  0.46 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Eq Int [genvalidity-sydtest]  (/=) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is antireflexive for "even Int"s  0.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a == b) for "even Int"s  0.46 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (==) :: Int -> Int -> Bool [genvalidity-sydtest]  ✓ is equivalent to (\a b -> not $ a /= b) for "even Int"s  0.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is symmetric for "even Int"s  0.29 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is reflexive for "even Int"s  0.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ is transitive for "even Int"s  0.11 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.ArbitrarySpec [genvalidity-sydtest]  Arbitrary Int [genvalidity-sydtest]  arbitrary :: Gen Int [genvalidity-sydtest]  ✓ only generates valid values  0.86 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.Operations.CommutativitySpec [genvalidity-sydtest]  commutative [genvalidity-sydtest]  ✓ cross product is not commutative  0.58 ms [genvalidity-sydtest]  passed for all of 1 inputs. [genvalidity-sydtest]  ✓ + is commutative  0.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ * is commutative  0.61 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ - is not commutative  1.40 ms [genvalidity-sydtest]  passed for all of 1 inputs. [genvalidity-sydtest]  ✓ dot product is commutative  0.29 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.GenValiditySpec [genvalidity-sydtest]  GenValid (Ratio Integer) [genvalidity-sydtest]  genValid :: Gen (Ratio Integer) [genvalidity-sydtest]  ✓ only generates valid '(Ratio Integer)'s  1.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  GenValid (Ratio Integer) [genvalidity-sydtest]  genValid :: Gen (Ratio Integer) [genvalidity-sydtest]  ✓ only generates valid '(Ratio Integer)'s  2.59 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.ShrinkingSpec [genvalidity-sydtest]  shrinkValid :: (Int -> [Int]) [genvalidity-sydtest]  ✓ preserves validity  4.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ never shrinks to itself for valid values  7.36 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  shrinkValidPreservesValidOnGenValid [genvalidity-sydtest]  ✓ [Ordering]  27.83 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ Ordering  0.54 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  shrinkValid :: (Ratio Int8 -> [Ratio Int8]) [genvalidity-sydtest]  ✓ never shrinks to itself for valid values  7.22 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ preserves validity  20.52 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  shrinkValidDoesNotShrinkToItself [genvalidity-sydtest]  ✓ [Int]  115.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ Int  5.38 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  shrinkValidDoesNotShrinkToItself [genvalidity-sydtest]  ✓ [Ordering]  17.33 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ Ordering  0.32 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  shrinkValidPreservesValidOnGenValid [genvalidity-sydtest]  ✓ Ordering  0.37 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ [Ordering]  30.05 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.FunctorSpec [genvalidity-sydtest]  Functor Maybe [genvalidity-sydtest]  fmap :: (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "Just an ABC :: (Maybe [Char])" 's given to "prepends :: ([Char] -> [Char])" and "appends :: ([Char] -> [Char])"  3.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "Just an ABC :: (Maybe [Char])"  4.58 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<$) :: a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "ABC :: [Char]" and "Just an ABC :: (Maybe [Char])"  16.52 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor [] [genvalidity-sydtest]  fmap :: (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "list of fives :: [Int]"  5.67 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "list of fives :: [Int]" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  8.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<$) :: a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "four :: Int" and "list of fives :: [Int]"  1.91 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor [] [genvalidity-sydtest]  (<$) :: a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "[] of ints :: [Int]"  1.78 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  fmap :: (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "[] of ints :: [Int]" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  2.95 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "[] of ints :: [Int]"  2.11 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor (Either Int) [genvalidity-sydtest]  fmap :: (a -> b) -> (Either Int) a -> (Either Int) b [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "(Either Int) of ints :: (Either Int Int)"  1.67 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "(Either Int) of ints :: (Either Int Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  1.95 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<$) :: a -> (Either Int) b -> (Either Int) a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "(Either Int) of ints :: (Either Int Int)"  1.33 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor [] [genvalidity-sydtest]  (<$) :: a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "[] of ints :: [Int]"  2.69 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  fmap :: (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "[] of ints :: [Int]"  1.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "[] of ints :: [Int]" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  6.20 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor Maybe [genvalidity-sydtest]  (<$) :: a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "Maybe of ints :: (Maybe Int)"  0.40 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  fmap :: (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "Maybe of ints :: (Maybe Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  1.28 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "Maybe of ints :: (Maybe Int)"  0.43 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor ((,) Int) [genvalidity-sydtest]  fmap :: (a -> b) -> ((,) Int) a -> ((,) Int) b [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "((,) Int) of ints :: (Int,Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  0.96 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "((,) Int) of ints :: (Int,Int)"  0.81 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<$) :: a -> ((,) Int) b -> ((,) Int) a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "((,) Int) of ints :: (Int,Int)"  0.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Functor Maybe [genvalidity-sydtest]  (<$) :: a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation for "int :: Int" and "Maybe of ints :: (Maybe Int)"  0.30 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  fmap :: (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "Maybe of ints :: (Maybe Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)"  1.16 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfies the first Fuctor law: 'fmap id == id' for "Maybe of ints :: (Maybe Int)"  0.49 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.ShowSpec [genvalidity-sydtest]  Show (Ratio Integer) and Read (Ratio Integer) [genvalidity-sydtest]  ✓ are implemented such that read . show == id for arbitrary values  1.40 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Show Int and Read Int [genvalidity-sydtest]  ✓ are implemented such that read . show == id for valid values  1.24 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Show (Ratio Integer) and Read (Ratio Integer) [genvalidity-sydtest]  ✓ are implemented such that read . show == id for valid values  9.05 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Show Int and Read Int [genvalidity-sydtest]  ✓ are implemented such that read . show == id for even values  1.13 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest] Test.Syd.Validity.ApplicativeSpec [genvalidity-sydtest]  Applicative [] [genvalidity-sydtest]  (*>) :: [] a -> [] b -> [] b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "[] of ints :: [Int]" in front of "[] of ints :: Int"  19.92 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  pure :: a -> [] a and (<*>) :: [] (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "[] of increments :: ([Int -> Int])" sequenced with "int :: Int"  4.97 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "[] of ints :: [Int]"  4.65 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "[] of ints :: [Int]"  1.52 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "[] of scalings :: ([Int -> Int])" composed with "[] of increments :: ([Int -> Int])" and applied to "[] of ints :: [Int]"  4.55 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int"  0.59 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: [] a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "[] of ints :: Int" behind "[] of ints :: [Int]"  18.99 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative (Either Int) [genvalidity-sydtest]  (*>) :: (Either Int) a -> (Either Int) b -> (Either Int) b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "(Either Int) of ints :: (Either Int Int)" in front of "(Either Int) of ints :: Int"  0.48 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: (Either Int) a -> (Either Int) b -> (Either Int) a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "(Either Int) of ints :: Int" behind "(Either Int) of ints :: (Either Int Int)"  0.64 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  pure :: a -> (Either Int) a and (<*>) :: (Either Int) (a -> b) -> (Either Int) a -> (Either Int) b [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "(Either Int) of ints :: (Either Int Int)"  1.08 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "(Either Int) of ints :: (Either Int Int)"  2.87 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "(Either Int) of scalings :: (Either Int (Int -> Int))" composed with "(Either Int) of increments :: (Either Int (Int -> Int))" and applied to "(Either Int) of ints :: (Either Int Int)"  0.44 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int"  2.63 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "(Either Int) of increments :: (Either Int (Int -> Int))" sequenced with "int :: Int"  2.78 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative Maybe [genvalidity-sydtest]  pure :: a -> Maybe a and (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int"  2.62 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "Maybe of increments :: (Maybe (Int -> Int))" sequenced with "int :: Int"  2.31 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "Maybe of ints :: (Maybe Int)"  3.74 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "Maybe of scalings :: (Maybe (Int -> Int))" composed with "Maybe of increments :: (Maybe (Int -> Int))" and applied to "Maybe of ints :: (Maybe Int)"  0.78 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "Maybe of ints :: (Maybe Int)"  0.33 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: Maybe a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "Maybe of ints :: Int" behind "Maybe of ints :: (Maybe Int)"  0.62 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (*>) :: Maybe a -> Maybe b -> Maybe b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "Maybe of ints :: (Maybe Int)" in front of "Maybe of ints :: Int"  0.33 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative Maybe [genvalidity-sydtest]  (<*) :: Maybe a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "purely Nothing :: [Char]" behind "Just an ABC :: (Maybe [Char])"  0.29 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (*>) :: Maybe a -> Maybe b -> Maybe b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "Just an ABC :: (Maybe [Char])" in front of "purely Nothing :: [Char]"  0.74 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  pure :: a -> Maybe a and (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "Just an ABC :: (Maybe [Char])"  0.47 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "prepends :: ([Char] -> [Char])" mapped over "Just an ABC :: (Maybe [Char])"  2.39 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "prepends :: ([Char] -> [Char])" sequenced with "ABC :: [Char]"  1.45 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "appends in a Just :: (Maybe ([Char] -> [Char]))" composed with "prepends in a Just :: (Maybe ([Char] -> [Char]))" and applied to "Just an ABC :: (Maybe [Char])"  4.86 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "prepends in a Just :: (Maybe ([Char] -> [Char]))" sequenced with "ABC :: [Char]"  1.71 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative [] [genvalidity-sydtest]  (*>) :: [] a -> [] b -> [] b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "[] of ints :: [Int]" in front of "[] of ints :: Int"  17.33 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  pure :: a -> [] a and (<*>) :: [] (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int"  0.71 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "[] of scalings :: ([Int -> Int])" composed with "[] of increments :: ([Int -> Int])" and applied to "[] of ints :: [Int]"  2.15 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "[] of ints :: [Int]"  2.04 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "[] of ints :: [Int]"  3.84 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "[] of increments :: ([Int -> Int])" sequenced with "int :: Int"  1.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: [] a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "[] of ints :: Int" behind "[] of ints :: [Int]"  14.93 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative [] [genvalidity-sydtest]  pure :: a -> [] a and (<*>) :: [] (a -> b) -> [] a -> [] b [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "four :: Int"  0.70 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "increments in a list :: ([Int -> Int])" sequenced with "four :: Int"  0.55 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "scalings in a list :: ([Int -> Int])" composed with "increments in a list :: ([Int -> Int])" and applied to "list of fives :: [Int]"  3.20 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "list of fives :: [Int]"  0.97 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "list of fives :: [Int]"  3.29 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: [] a -> [] b -> [] a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "purely empty list :: Int" behind "list of fives :: [Int]"  2.62 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (*>) :: [] a -> [] b -> [] b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "list of fives :: [Int]" in front of "purely empty list :: Int"  3.24 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  Applicative Maybe [genvalidity-sydtest]  (*>) :: Maybe a -> Maybe b -> Maybe b [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "Maybe of ints :: (Maybe Int)" in front of "Maybe of ints :: Int"  2.89 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  (<*) :: Maybe a -> Maybe b -> Maybe a [genvalidity-sydtest]  ✓ is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "Maybe of ints :: Int" behind "Maybe of ints :: (Maybe Int)"  4.10 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  pure :: a -> Maybe a and (<*>) :: Maybe (a -> b) -> Maybe a -> Maybe b [genvalidity-sydtest]  ✓ satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "Maybe of scalings :: (Maybe (Int -> Int))" composed with "Maybe of increments :: (Maybe (Int -> Int))" and applied to "Maybe of ints :: (Maybe Int)"  2.07 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the identity law: 'pure id <*> v = v' for "Maybe of ints :: (Maybe Int)"  0.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "Maybe of ints :: (Maybe Int)"  0.46 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int"  0.21 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  ✓ satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "Maybe of increments :: (Maybe (Int -> Int))" sequenced with "int :: Int"  0.29 ms [genvalidity-sydtest]  passed for all of 100 inputs. [genvalidity-sydtest]  [genvalidity-sydtest]  Examples: 24402 [genvalidity-sydtest]  Passed: 246 [genvalidity-sydtest]  Failed: 0 [genvalidity-sydtest]  Sum of test runtimes: 1.32 seconds [genvalidity-sydtest]  Test suite took:  0.25 seconds [genvalidity-sydtest]  [genvalidity-sydtest] Test suite genvalidity-sydtest-test: PASS [genvalidity-sydtest] Test suite logged to: [genvalidity-sydtest] dist/test/genvalidity-sydtest-1.0.1.0-genvalidity-sydtest-test.log [genvalidity-sydtest] 1 of 1 test suites (1 of 1 test cases) passed. [genvalidity-sydtest] Phase: haddockPhase [genvalidity-sydtest] Preprocessing library for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Running Haddock on library for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Warning: The documentation for the following packages are not installed. No [genvalidity-sydtest] links will be generated to these packages: attoparsec-0.14.4, [genvalidity-sydtest] attoparsec-0.14.4, libyaml-clib-0.2.5, path-0.9.6, path-0.9.6, vector-0.13.2.0 [genvalidity-sydtest] [ 1 of 34] Compiling Paths_genvalidity_sydtest ( dist/build/autogen/Paths_genvalidity_sydtest.hs, nothing ) [genvalidity-sydtest] [ 2 of 34] Compiling Test.Syd.Validity.Functions.Idempotence ( src/Test/Syd/Validity/Functions/Idempotence.hs, nothing ) [genvalidity-sydtest] [ 3 of 34] Compiling Test.Syd.Validity.Operations.Associativity ( src/Test/Syd/Validity/Operations/Associativity.hs, nothing ) [genvalidity-sydtest] [ 4 of 34] Compiling Test.Syd.Validity.Operations.Commutativity ( src/Test/Syd/Validity/Operations/Commutativity.hs, nothing ) [genvalidity-sydtest] [ 5 of 34] Compiling Test.Syd.Validity.Operations.Identity ( src/Test/Syd/Validity/Operations/Identity.hs, nothing ) [genvalidity-sydtest] [ 6 of 34] Compiling Test.Syd.Validity.Operations ( src/Test/Syd/Validity/Operations.hs, nothing ) [genvalidity-sydtest] [ 7 of 34] Compiling Test.Syd.Validity.Property.Utils ( src/Test/Syd/Validity/Property/Utils.hs, nothing ) [genvalidity-sydtest] [ 8 of 34] Compiling Test.Syd.Validity.GenValidity.Property ( src/Test/Syd/Validity/GenValidity/Property.hs, nothing ) [genvalidity-sydtest] [ 9 of 34] Compiling Test.Syd.Validity.Functions.Validity ( src/Test/Syd/Validity/Functions/Validity.hs, nothing ) [genvalidity-sydtest] [10 of 34] Compiling Test.Syd.Validity.Relations.Antireflexivity ( src/Test/Syd/Validity/Relations/Antireflexivity.hs, nothing ) [genvalidity-sydtest] [11 of 34] Compiling Test.Syd.Validity.Relations.Antisymmetry ( src/Test/Syd/Validity/Relations/Antisymmetry.hs, nothing ) [genvalidity-sydtest] [12 of 34] Compiling Test.Syd.Validity.Relations.Reflexivity ( src/Test/Syd/Validity/Relations/Reflexivity.hs, nothing ) [genvalidity-sydtest] [13 of 34] Compiling Test.Syd.Validity.Relations.Symmetry ( src/Test/Syd/Validity/Relations/Symmetry.hs, nothing ) [genvalidity-sydtest] [14 of 34] Compiling Test.Syd.Validity.Relations.Transitivity ( src/Test/Syd/Validity/Relations/Transitivity.hs, nothing ) [genvalidity-sydtest] [15 of 34] Compiling Test.Syd.Validity.Relations ( src/Test/Syd/Validity/Relations.hs, nothing ) [genvalidity-sydtest] [16 of 34] Compiling Test.Syd.Validity.Shrinking.Property ( src/Test/Syd/Validity/Shrinking/Property.hs, nothing ) [genvalidity-sydtest] [17 of 34] Compiling Test.Syd.Validity.Types ( src/Test/Syd/Validity/Types.hs, nothing ) [genvalidity-sydtest] [18 of 34] Compiling Test.Syd.Validity.Functions.Inverse ( src/Test/Syd/Validity/Functions/Inverse.hs, nothing ) [genvalidity-sydtest] [19 of 34] Compiling Test.Syd.Validity.Functions.Equivalence ( src/Test/Syd/Validity/Functions/Equivalence.hs, nothing ) [genvalidity-sydtest] [20 of 34] Compiling Test.Syd.Validity.Functions.CanFail ( src/Test/Syd/Validity/Functions/CanFail.hs, nothing ) [genvalidity-sydtest] [21 of 34] Compiling Test.Syd.Validity.Functions ( src/Test/Syd/Validity/Functions.hs, nothing ) [genvalidity-sydtest] [22 of 34] Compiling Test.Syd.Validity.Property ( src/Test/Syd/Validity/Property.hs, nothing ) [genvalidity-sydtest] [23 of 34] Compiling Test.Syd.Validity.Utils ( src/Test/Syd/Validity/Utils.hs, nothing ) [genvalidity-sydtest] [24 of 34] Compiling Test.Syd.Validity.Shrinking ( src/Test/Syd/Validity/Shrinking.hs, nothing ) [genvalidity-sydtest] [25 of 34] Compiling Test.Syd.Validity.Show ( src/Test/Syd/Validity/Show.hs, nothing ) [genvalidity-sydtest] [26 of 34] Compiling Test.Syd.Validity.Ord ( src/Test/Syd/Validity/Ord.hs, nothing ) [genvalidity-sydtest] [27 of 34] Compiling Test.Syd.Validity.Monoid ( src/Test/Syd/Validity/Monoid.hs, nothing ) [genvalidity-sydtest] [28 of 34] Compiling Test.Syd.Validity.Monad ( src/Test/Syd/Validity/Monad.hs, nothing ) [genvalidity-sydtest] [29 of 34] Compiling Test.Syd.Validity.GenValidity ( src/Test/Syd/Validity/GenValidity.hs, nothing ) [genvalidity-sydtest] [30 of 34] Compiling Test.Syd.Validity.Functor ( src/Test/Syd/Validity/Functor.hs, nothing ) [genvalidity-sydtest] [31 of 34] Compiling Test.Syd.Validity.Eq ( src/Test/Syd/Validity/Eq.hs, nothing ) [genvalidity-sydtest] [32 of 34] Compiling Test.Syd.Validity.Arbitrary ( src/Test/Syd/Validity/Arbitrary.hs, nothing ) [genvalidity-sydtest] [33 of 34] Compiling Test.Syd.Validity.Applicative ( src/Test/Syd/Validity/Applicative.hs, nothing ) [genvalidity-sydtest] [34 of 34] Compiling Test.Syd.Validity ( src/Test/Syd/Validity.hs, nothing ) [genvalidity-sydtest] Haddock coverage: [genvalidity-sydtest]  50% ( 2 / 4) in 'Test.Syd.Validity.Functions.Idempotence' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  idempotentOnGen (src/Test/Syd/Validity/Functions/Idempotence.hs:17) [genvalidity-sydtest]  idempotent (src/Test/Syd/Validity/Functions/Idempotence.hs:20) [genvalidity-sydtest]  75% ( 3 / 4) in 'Test.Syd.Validity.Operations.Associativity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  75% ( 3 / 4) in 'Test.Syd.Validity.Operations.Commutativity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  64% ( 9 / 14) in 'Test.Syd.Validity.Operations.Identity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  leftIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:54) [genvalidity-sydtest]  leftIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:66) [genvalidity-sydtest]  rightIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:111) [genvalidity-sydtest]  rightIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:123) [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Operations' [genvalidity-sydtest]  0% ( 0 / 6) in 'Test.Syd.Validity.Property.Utils' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  forAllValid (src/Test/Syd/Validity/Property/Utils.hs:15) [genvalidity-sydtest]  shouldBeValid (src/Test/Syd/Validity/Property/Utils.hs:24) [genvalidity-sydtest]  shouldBeInvalid (src/Test/Syd/Validity/Property/Utils.hs:40) [genvalidity-sydtest]  <==> (src/Test/Syd/Validity/Property/Utils.hs:21) [genvalidity-sydtest]  ===> (src/Test/Syd/Validity/Property/Utils.hs:18) [genvalidity-sydtest]  100% ( 3 / 3) in 'Test.Syd.Validity.GenValidity.Property' [genvalidity-sydtest]  40% ( 4 / 10) in 'Test.Syd.Validity.Functions.Validity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  producesValidsOnGens2 (src/Test/Syd/Validity/Functions/Validity.hs:51) [genvalidity-sydtest]  producesValid2 (src/Test/Syd/Validity/Functions/Validity.hs:58) [genvalidity-sydtest]  producesValidsOnArbitrary2 (src/Test/Syd/Validity/Functions/Validity.hs:64) [genvalidity-sydtest]  producesValidsOnGens3 (src/Test/Syd/Validity/Functions/Validity.hs:72) [genvalidity-sydtest]  producesValid3 (src/Test/Syd/Validity/Functions/Validity.hs:87) [genvalidity-sydtest]  producesValidsOnArbitrary3 (src/Test/Syd/Validity/Functions/Validity.hs:101) [genvalidity-sydtest]  60% ( 3 / 5) in 'Test.Syd.Validity.Relations.Antireflexivity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  antireflexivityOnGen (src/Test/Syd/Validity/Relations/Antireflexivity.hs:32) [genvalidity-sydtest]  50% ( 3 / 6) in 'Test.Syd.Validity.Relations.Antisymmetry' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  antisymmetryOnGensWithEquality (src/Test/Syd/Validity/Relations/Antisymmetry.hs:43) [genvalidity-sydtest]  antisymmetryOnGens (src/Test/Syd/Validity/Relations/Antisymmetry.hs:54) [genvalidity-sydtest]  60% ( 3 / 5) in 'Test.Syd.Validity.Relations.Reflexivity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  reflexivityOnGen (src/Test/Syd/Validity/Relations/Reflexivity.hs:32) [genvalidity-sydtest]  60% ( 3 / 5) in 'Test.Syd.Validity.Relations.Symmetry' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  symmetryOnGens (src/Test/Syd/Validity/Relations/Symmetry.hs:34) [genvalidity-sydtest]  60% ( 3 / 5) in 'Test.Syd.Validity.Relations.Transitivity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  transitivityOnGens (src/Test/Syd/Validity/Relations/Transitivity.hs:35) [genvalidity-sydtest]  100% ( 6 / 6) in 'Test.Syd.Validity.Relations' [genvalidity-sydtest]  100% ( 13 / 13) in 'Test.Syd.Validity.Shrinking.Property' [genvalidity-sydtest]  50% ( 1 / 2) in 'Test.Syd.Validity.Types' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  15% ( 2 / 13) in 'Test.Syd.Validity.Functions.Inverse' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  inverseFunctionsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:28) [genvalidity-sydtest]  inverseFunctions (src/Test/Syd/Validity/Functions/Inverse.hs:33) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:49) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:60) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:68) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:78) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:89) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:97) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:107) [genvalidity-sydtest]  inverseFunctionsIfSucceed (src/Test/Syd/Validity/Functions/Inverse.hs:120) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:128) [genvalidity-sydtest]  7% ( 2 / 28) in 'Test.Syd.Validity.Functions.Equivalence' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  equivalentOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:47) [genvalidity-sydtest]  equivalent (src/Test/Syd/Validity/Functions/Equivalence.hs:54) [genvalidity-sydtest]  equivalentOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:73) [genvalidity-sydtest]  equivalent2 (src/Test/Syd/Validity/Functions/Equivalence.hs:81) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:100) [genvalidity-sydtest]  equivalentWhenFirstSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:119) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:111) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:129) [genvalidity-sydtest]  equivalentWhenFirstSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:162) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:147) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:172) [genvalidity-sydtest]  equivalentWhenSecondSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:191) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:183) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:201) [genvalidity-sydtest]  equivalentWhenSecondSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:234) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:219) [genvalidity-sydtest]  equivalentWhenSucceedOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:244) [genvalidity-sydtest]  equivalentWhenSucceed (src/Test/Syd/Validity/Functions/Equivalence.hs:258) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:266) [genvalidity-sydtest]  equivalentWhenSucceedOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:276) [genvalidity-sydtest]  equivalentWhenSucceed2 (src/Test/Syd/Validity/Functions/Equivalence.hs:312) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:297) [genvalidity-sydtest]  equivalentOnGens3 (src/Test/Syd/Validity/Functions/Equivalence.hs:322) [genvalidity-sydtest]  equivalent3 (src/Test/Syd/Validity/Functions/Equivalence.hs:338) [genvalidity-sydtest]  equivalentOnArbitrary3 (src/Test/Syd/Validity/Functions/Equivalence.hs:353) [genvalidity-sydtest]  38% ( 7 / 18) in 'Test.Syd.Validity.Functions.CanFail' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  succeedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:77) [genvalidity-sydtest]  succeeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:84) [genvalidity-sydtest]  succeedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:90) [genvalidity-sydtest]  failsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:100) [genvalidity-sydtest]  validIfSucceedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:109) [genvalidity-sydtest]  validIfSucceeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:119) [genvalidity-sydtest]  validIfSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:125) [genvalidity-sydtest]  validIfSucceedsOnGens3 (src/Test/Syd/Validity/Functions/CanFail.hs:133) [genvalidity-sydtest]  validIfSucceeds3 (src/Test/Syd/Validity/Functions/CanFail.hs:152) [genvalidity-sydtest]  validIfSucceedsOnArbitrary3 (src/Test/Syd/Validity/Functions/CanFail.hs:158) [genvalidity-sydtest]  100% ( 6 / 6) in 'Test.Syd.Validity.Functions' [genvalidity-sydtest]  54% ( 80 /146) in 'Test.Syd.Validity.Property' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  Module header [genvalidity-sydtest]  forAllValid (src/Test/Syd/Validity/Property/Utils.hs:15) [genvalidity-sydtest]  producesValidsOnGens2 (src/Test/Syd/Validity/Functions/Validity.hs:51) [genvalidity-sydtest]  producesValid2 (src/Test/Syd/Validity/Functions/Validity.hs:58) [genvalidity-sydtest]  producesValidsOnArbitrary2 (src/Test/Syd/Validity/Functions/Validity.hs:64) [genvalidity-sydtest]  producesValidsOnGens3 (src/Test/Syd/Validity/Functions/Validity.hs:72) [genvalidity-sydtest]  producesValid3 (src/Test/Syd/Validity/Functions/Validity.hs:87) [genvalidity-sydtest]  producesValidsOnArbitrary3 (src/Test/Syd/Validity/Functions/Validity.hs:101) [genvalidity-sydtest]  succeedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:77) [genvalidity-sydtest]  succeeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:84) [genvalidity-sydtest]  succeedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:90) [genvalidity-sydtest]  failsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:100) [genvalidity-sydtest]  validIfSucceedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:109) [genvalidity-sydtest]  validIfSucceeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:119) [genvalidity-sydtest]  validIfSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:125) [genvalidity-sydtest]  validIfSucceedsOnGens3 (src/Test/Syd/Validity/Functions/CanFail.hs:133) [genvalidity-sydtest]  validIfSucceeds3 (src/Test/Syd/Validity/Functions/CanFail.hs:152) [genvalidity-sydtest]  validIfSucceedsOnArbitrary3 (src/Test/Syd/Validity/Functions/CanFail.hs:158) [genvalidity-sydtest]  equivalentOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:47) [genvalidity-sydtest]  equivalent (src/Test/Syd/Validity/Functions/Equivalence.hs:54) [genvalidity-sydtest]  equivalentOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:73) [genvalidity-sydtest]  equivalent2 (src/Test/Syd/Validity/Functions/Equivalence.hs:81) [genvalidity-sydtest]  equivalentOnGens3 (src/Test/Syd/Validity/Functions/Equivalence.hs:322) [genvalidity-sydtest]  equivalent3 (src/Test/Syd/Validity/Functions/Equivalence.hs:338) [genvalidity-sydtest]  equivalentOnArbitrary3 (src/Test/Syd/Validity/Functions/Equivalence.hs:353) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:100) [genvalidity-sydtest]  equivalentWhenFirstSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:119) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:111) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:129) [genvalidity-sydtest]  equivalentWhenFirstSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:162) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:147) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:172) [genvalidity-sydtest]  equivalentWhenSecondSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:191) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:183) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:201) [genvalidity-sydtest]  equivalentWhenSecondSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:234) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:219) [genvalidity-sydtest]  equivalentWhenSucceedOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:244) [genvalidity-sydtest]  equivalentWhenSucceed (src/Test/Syd/Validity/Functions/Equivalence.hs:258) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:266) [genvalidity-sydtest]  equivalentWhenSucceedOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:276) [genvalidity-sydtest]  equivalentWhenSucceed2 (src/Test/Syd/Validity/Functions/Equivalence.hs:312) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:297) [genvalidity-sydtest]  inverseFunctionsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:28) [genvalidity-sydtest]  inverseFunctions (src/Test/Syd/Validity/Functions/Inverse.hs:33) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:49) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:60) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:68) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:78) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:89) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:97) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:107) [genvalidity-sydtest]  inverseFunctionsIfSucceed (src/Test/Syd/Validity/Functions/Inverse.hs:120) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:128) [genvalidity-sydtest]  idempotentOnGen (src/Test/Syd/Validity/Functions/Idempotence.hs:17) [genvalidity-sydtest]  idempotent (src/Test/Syd/Validity/Functions/Idempotence.hs:20) [genvalidity-sydtest]  reflexivityOnGen (src/Test/Syd/Validity/Relations/Reflexivity.hs:32) [genvalidity-sydtest]  transitivityOnGens (src/Test/Syd/Validity/Relations/Transitivity.hs:35) [genvalidity-sydtest]  antisymmetryOnGensWithEquality (src/Test/Syd/Validity/Relations/Antisymmetry.hs:43) [genvalidity-sydtest]  antisymmetryOnGens (src/Test/Syd/Validity/Relations/Antisymmetry.hs:54) [genvalidity-sydtest]  antireflexivityOnGen (src/Test/Syd/Validity/Relations/Antireflexivity.hs:32) [genvalidity-sydtest]  symmetryOnGens (src/Test/Syd/Validity/Relations/Symmetry.hs:34) [genvalidity-sydtest]  leftIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:54) [genvalidity-sydtest]  leftIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:66) [genvalidity-sydtest]  rightIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:111) [genvalidity-sydtest]  rightIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:123) [genvalidity-sydtest] Warning: 'Spec' is out of scope. [genvalidity-sydtest]  If you qualify the identifier, haddock can try to link it anyway. [genvalidity-sydtest]  14% ( 1 / 7) in 'Test.Syd.Validity.Utils' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  nameOf (src/Test/Syd/Validity/Utils.hs:27) [genvalidity-sydtest]  genDescr (src/Test/Syd/Validity/Utils.hs:38) [genvalidity-sydtest]  binRelStr (src/Test/Syd/Validity/Utils.hs:45) [genvalidity-sydtest]  shouldBeValid (src/Test/Syd/Validity/Property/Utils.hs:24) [genvalidity-sydtest]  shouldBeInvalid (src/Test/Syd/Validity/Property/Utils.hs:40) [genvalidity-sydtest]  Anon (src/Test/Syd/Validity/Utils.hs:49) [genvalidity-sydtest]  45% ( 5 / 11) in 'Test.Syd.Validity.Shrinking' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  shrinkValidSpec (src/Test/Syd/Validity/Shrinking.hs:35) [genvalidity-sydtest]  shrinkValidSpecWithLimit (src/Test/Syd/Validity/Shrinking.hs:48) [genvalidity-sydtest]  shrinkValidPreservesValidOnGenValid (src/Test/Syd/Validity/Shrinking.hs:66) [genvalidity-sydtest]  shrinkValidPreservesValidOnGenValidWithLimit (src/Test/Syd/Validity/Shrinking.hs:74) [genvalidity-sydtest]  shrinkValidDoesNotShrinkToItself (src/Test/Syd/Validity/Shrinking.hs:81) [genvalidity-sydtest]  shrinkValidDoesNotShrinkToItselfWithLimit (src/Test/Syd/Validity/Shrinking.hs:89) [genvalidity-sydtest]  100% ( 7 / 7) in 'Test.Syd.Validity.Show' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Ord' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Monoid' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Monad' [genvalidity-sydtest]  100% ( 5 / 5) in 'Test.Syd.Validity.GenValidity' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Functor' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Eq' [genvalidity-sydtest]  100% ( 3 / 3) in 'Test.Syd.Validity.Arbitrary' [genvalidity-sydtest]  100% ( 4 / 4) in 'Test.Syd.Validity.Applicative' [genvalidity-sydtest] Warning: 'Spec' is out of scope. [genvalidity-sydtest]  If you qualify the identifier, haddock can try to link it anyway. [genvalidity-sydtest]  63% (122 /192) in 'Test.Syd.Validity' [genvalidity-sydtest]  Missing documentation for: [genvalidity-sydtest]  forAllValid (src/Test/Syd/Validity/Property/Utils.hs:15) [genvalidity-sydtest]  shouldBeValid (src/Test/Syd/Validity/Property/Utils.hs:24) [genvalidity-sydtest]  shouldBeInvalid (src/Test/Syd/Validity/Property/Utils.hs:40) [genvalidity-sydtest]  shrinkValidSpec (src/Test/Syd/Validity/Shrinking.hs:35) [genvalidity-sydtest]  shrinkValidSpecWithLimit (src/Test/Syd/Validity/Shrinking.hs:48) [genvalidity-sydtest]  shrinkValidPreservesValidOnGenValid (src/Test/Syd/Validity/Shrinking.hs:66) [genvalidity-sydtest]  producesValidsOnGens2 (src/Test/Syd/Validity/Functions/Validity.hs:51) [genvalidity-sydtest]  producesValid2 (src/Test/Syd/Validity/Functions/Validity.hs:58) [genvalidity-sydtest]  producesValidsOnArbitrary2 (src/Test/Syd/Validity/Functions/Validity.hs:64) [genvalidity-sydtest]  producesValidsOnGens3 (src/Test/Syd/Validity/Functions/Validity.hs:72) [genvalidity-sydtest]  producesValid3 (src/Test/Syd/Validity/Functions/Validity.hs:87) [genvalidity-sydtest]  producesValidsOnArbitrary3 (src/Test/Syd/Validity/Functions/Validity.hs:101) [genvalidity-sydtest]  succeedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:77) [genvalidity-sydtest]  succeeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:84) [genvalidity-sydtest]  succeedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:90) [genvalidity-sydtest]  failsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:100) [genvalidity-sydtest]  validIfSucceedsOnGens2 (src/Test/Syd/Validity/Functions/CanFail.hs:109) [genvalidity-sydtest]  validIfSucceeds2 (src/Test/Syd/Validity/Functions/CanFail.hs:119) [genvalidity-sydtest]  validIfSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/CanFail.hs:125) [genvalidity-sydtest]  validIfSucceedsOnGens3 (src/Test/Syd/Validity/Functions/CanFail.hs:133) [genvalidity-sydtest]  validIfSucceeds3 (src/Test/Syd/Validity/Functions/CanFail.hs:152) [genvalidity-sydtest]  validIfSucceedsOnArbitrary3 (src/Test/Syd/Validity/Functions/CanFail.hs:158) [genvalidity-sydtest]  equivalentOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:47) [genvalidity-sydtest]  equivalent (src/Test/Syd/Validity/Functions/Equivalence.hs:54) [genvalidity-sydtest]  equivalentOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:73) [genvalidity-sydtest]  equivalent2 (src/Test/Syd/Validity/Functions/Equivalence.hs:81) [genvalidity-sydtest]  equivalentOnGens3 (src/Test/Syd/Validity/Functions/Equivalence.hs:322) [genvalidity-sydtest]  equivalent3 (src/Test/Syd/Validity/Functions/Equivalence.hs:338) [genvalidity-sydtest]  equivalentOnArbitrary3 (src/Test/Syd/Validity/Functions/Equivalence.hs:353) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:100) [genvalidity-sydtest]  equivalentWhenFirstSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:119) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:111) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:129) [genvalidity-sydtest]  equivalentWhenFirstSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:162) [genvalidity-sydtest]  equivalentWhenFirstSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:147) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:172) [genvalidity-sydtest]  equivalentWhenSecondSucceeds (src/Test/Syd/Validity/Functions/Equivalence.hs:191) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:183) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:201) [genvalidity-sydtest]  equivalentWhenSecondSucceeds2 (src/Test/Syd/Validity/Functions/Equivalence.hs:234) [genvalidity-sydtest]  equivalentWhenSecondSucceedsOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:219) [genvalidity-sydtest]  equivalentWhenSucceedOnGen (src/Test/Syd/Validity/Functions/Equivalence.hs:244) [genvalidity-sydtest]  equivalentWhenSucceed (src/Test/Syd/Validity/Functions/Equivalence.hs:258) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Equivalence.hs:266) [genvalidity-sydtest]  equivalentWhenSucceedOnGens2 (src/Test/Syd/Validity/Functions/Equivalence.hs:276) [genvalidity-sydtest]  equivalentWhenSucceed2 (src/Test/Syd/Validity/Functions/Equivalence.hs:312) [genvalidity-sydtest]  equivalentWhenSucceedOnArbitrary2 (src/Test/Syd/Validity/Functions/Equivalence.hs:297) [genvalidity-sydtest]  inverseFunctionsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:28) [genvalidity-sydtest]  inverseFunctions (src/Test/Syd/Validity/Functions/Inverse.hs:33) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:49) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:60) [genvalidity-sydtest]  inverseFunctionsIfFirstSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:68) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:78) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceeds (src/Test/Syd/Validity/Functions/Inverse.hs:89) [genvalidity-sydtest]  inverseFunctionsIfSecondSucceedsOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:97) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnGen (src/Test/Syd/Validity/Functions/Inverse.hs:107) [genvalidity-sydtest]  inverseFunctionsIfSucceed (src/Test/Syd/Validity/Functions/Inverse.hs:120) [genvalidity-sydtest]  inverseFunctionsIfSucceedOnArbitrary (src/Test/Syd/Validity/Functions/Inverse.hs:128) [genvalidity-sydtest]  idempotentOnGen (src/Test/Syd/Validity/Functions/Idempotence.hs:17) [genvalidity-sydtest]  idempotent (src/Test/Syd/Validity/Functions/Idempotence.hs:20) [genvalidity-sydtest]  reflexivityOnGen (src/Test/Syd/Validity/Relations/Reflexivity.hs:32) [genvalidity-sydtest]  transitivityOnGens (src/Test/Syd/Validity/Relations/Transitivity.hs:35) [genvalidity-sydtest]  antisymmetryOnGensWithEquality (src/Test/Syd/Validity/Relations/Antisymmetry.hs:43) [genvalidity-sydtest]  antisymmetryOnGens (src/Test/Syd/Validity/Relations/Antisymmetry.hs:54) [genvalidity-sydtest]  antireflexivityOnGen (src/Test/Syd/Validity/Relations/Antireflexivity.hs:32) [genvalidity-sydtest]  symmetryOnGens (src/Test/Syd/Validity/Relations/Symmetry.hs:34) [genvalidity-sydtest]  leftIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:54) [genvalidity-sydtest]  leftIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:66) [genvalidity-sydtest]  rightIdentityOnGenWithEquality (src/Test/Syd/Validity/Operations/Identity.hs:111) [genvalidity-sydtest]  rightIdentityOnGen (src/Test/Syd/Validity/Operations/Identity.hs:123) [genvalidity-sydtest] Documentation created: dist/doc/html/genvalidity-sydtest/, [genvalidity-sydtest] dist/doc/html/genvalidity-sydtest/genvalidity-sydtest.txt [genvalidity-sydtest] Preprocessing test suite 'genvalidity-sydtest-test' for genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] Phase: installPhase [genvalidity-sydtest] Installing library in /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [genvalidity-sydtest] Phase: fixupPhase [genvalidity-sydtest] shrinking RPATHs of ELF executables and libraries in /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] shrinking /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSgenvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5-ghc9.10.3.so [genvalidity-sydtest] checking for references to /build/ in /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0... [genvalidity-sydtest] patching script interpreter paths in /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 [genvalidity-sydtest] stripping (with command strip and flags -S -p) in /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0/lib [genvalidity-sydtest] shrinking RPATHs of ELF executables and libraries in /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc [genvalidity-sydtest] checking for references to /build/ in /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc... [genvalidity-sydtest] patching script interpreter paths in /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc [post-build-hook] Pushing 2 paths (261 are already present) using zstd to cache sydtest ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc (3.78 MiB) [post-build-hook] Pushing /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 (6.59 MiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0 /nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 2 paths... [post-build-hook] copying path '/nix/store/yzwickjcy44mlgc0a9j7q0cbrjkyd7b3-genvalidity-sydtest-1.0.1.0-doc' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/c48y2lj1gdigfi3x4ns4jn2yayrhqwrz-genvalidity-sydtest-1.0.1.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/zgxc2yyiy5h6fznds57y5nymkwvjn82h-genvalidity-sydtest-1.0.1.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 2 of 7 built (1 building), 37 of 37 downloaded from cache [really-safe-money] [ 7 of 12] Compiling Money.MultiAmount ( src/Money/MultiAmount.hs, dist/build/Money/MultiAmount.o, dist/build/Money/MultiAmount.dyn_o ) [really-safe-money] mutation: instrumenting Money.MultiAmount [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 168:17-57 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 119:9-37 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 106:9-37 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 73:3-51 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/ListLit at 63:7-8 [really-safe-money] mutation: recording Money.MultiAmount/ListLit at 63:7-8 [really-safe-money] [ 8 of 12] Compiling Money.AmountOf ( src/Money/AmountOf.hs, dist/build/Money/AmountOf.o, dist/build/Money/AmountOf.dyn_o ) [really-safe-money] mutation: instrumenting Money.AmountOf [really-safe-money] [ 9 of 12] Compiling Money.Account ( src/Money/Account.hs, dist/build/Money/Account.o, dist/build/Money/Account.dyn_o ) [really-safe-money] mutation: instrumenting Money.Account [really-safe-money] mutation: recording Money.Account/IntLit at 421:32-33 [really-safe-money] mutation: recording Money.Account/ConstBool at 451:14-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 451:14-23 [really-safe-money] mutation: recording Money.Account/Negate at 451:14-23 [really-safe-money] mutation: recording Money.Account/CondFlip at 451:11-76 [really-safe-money] mutation: recording Money.Account/ConstBool at 455:14-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 455:14-23 [really-safe-money] mutation: recording Money.Account/Negate at 455:14-23 [really-safe-money] mutation: recording Money.Account/CondFlip at 455:11-136 [really-safe-money] mutation: recording Money.Account/IntLit at 495:17-18 [really-safe-money] mutation: recording Money.Account/ConstBool at 495:12-18 [really-safe-money] mutation: recording Money.Account/ConstBool at 495:12-18 [really-safe-money] mutation: recording Money.Account/Negate at 495:12-18 [really-safe-money] mutation: recording Money.Account/CondFlip at 495:9-41 [really-safe-money] mutation: recording Money.Account/IntLit at 503:15-16 [really-safe-money] mutation: recording Money.Account/ConstBool at 503:10-16 [really-safe-money] mutation: recording Money.Account/ConstBool at 503:10-16 [really-safe-money] mutation: recording Money.Account/Negate at 503:10-16 [really-safe-money] mutation: recording Money.Account/CondFlip at 503:7-33 [really-safe-money] mutation: recording Money.Account/IntLit at 233:19-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 233:14-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 233:14-20 [really-safe-money] mutation: recording Money.Account/Negate at 233:14-20 [really-safe-money] mutation: recording Money.Account/CondFlip at 233:11-48 [really-safe-money] mutation: recording Money.Account/IntLit at 197:19-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 197:14-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 197:14-20 [really-safe-money] mutation: recording Money.Account/Negate at 197:14-20 [really-safe-money] mutation: recording Money.Account/CondFlip at 197:11-48 [really-safe-money] mutation: recording Money.Account/ConstBool at 123:10-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 123:10-23 [really-safe-money] mutation: recording Money.Account/Negate at 123:10-23 [really-safe-money] mutation: recording Money.Account/IntLit at 131:25-26 [really-safe-money] mutation: recording Money.Account/ConstBool at 131:20-26 [really-safe-money] mutation: recording Money.Account/ConstBool at 131:20-26 [really-safe-money] mutation: recording Money.Account/Negate at 131:20-26 [really-safe-money] mutation: recording Money.Account/CondFlip at 131:17-39 [really-safe-money] mutation: recording Money.Account/CondFlip at 123:7-39 [really-safe-money] [10 of 12] Compiling Money.MultiAccount ( src/Money/MultiAccount.hs, dist/build/Money/MultiAccount.o, dist/build/Money/MultiAccount.dyn_o ) [really-safe-money] mutation: instrumenting Money.MultiAccount [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 134:9-37 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 120:9-37 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 78:3-52 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/ListLit at 66:7-8 [really-safe-money] mutation: recording Money.MultiAccount/ListLit at 66:7-8 [really-safe-money] [11 of 12] Compiling Money.AccountOf ( src/Money/AccountOf.hs, dist/build/Money/AccountOf.o, dist/build/Money/AccountOf.dyn_o ) [really-safe-money] mutation: instrumenting Money.AccountOf [really-safe-money] [12 of 12] Compiling Paths_really_safe_money ( dist/build/autogen/Paths_really_safe_money.hs, dist/build/Paths_really_safe_money.o, dist/build/Paths_really_safe_money.dyn_o ) [really-safe-money] [ 1 of 12] Compiling Numeric.DecimalLiteral ( src/Numeric/DecimalLiteral.hs, dist/build/Numeric/DecimalLiteral.p_o ) [really-safe-money] mutation: instrumenting Numeric.DecimalLiteral [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 396:23-27 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 368:10-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/CondFlip at 368:7-62 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 375:80-82 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 375:80-82 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 337:21-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 337:16-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 337:46-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/CondFlip at 337:13-51 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 332:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 333:11-46 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 315:67-68 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 304:42-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 299:11-47 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 289:33-35 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 236:41-44 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 244:14-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 244:9-15 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 245:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 264:13-26 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 266:13-19 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 267:13-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:41-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:41-43 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:63-65 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 269:63-65 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 270:13-22 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 252:36-37 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 252:38-39 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 223:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 208:9-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 208:5-10 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 208:62-67 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 209:5-14 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ListLit at 186:15-25 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ListLit at 186:15-25 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 145:28-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 152:9-23 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 154:36-38 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 158:9-18 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 139:27-29 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 139:27-29 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 136:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 136:39-41 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:22-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:34-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 119:22-42 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/ConstBool at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/Negate at 123:19-34 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 125:29-30 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 127:44-45 [really-safe-money] mutation: recording Numeric.DecimalLiteral/IntLit at 130:48-49 [really-safe-money] [ 2 of 12] Compiling Money.QuantisationFactor ( src/Money/QuantisationFactor.hs, dist/build/Money/QuantisationFactor.p_o ) [really-safe-money] mutation: instrumenting Money.QuantisationFactor [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 87:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 87:12-28 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 87:9-22 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 92:13-14 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 92:13-14 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 93:16-17 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 93:12-17 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 93:9-22 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 98:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 98:27-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 98:8-28 [really-safe-money] mutation: recording Money.QuantisationFactor/CondFlip at 98:5-19 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 102:6-46 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 67:67-68 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 67:67-68 [really-safe-money] mutation: recording Money.QuantisationFactor/IntLit at 40:62-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ConstBool at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/Negate at 40:57-63 [really-safe-money] mutation: recording Money.QuantisationFactor/ListLit at 39:7-8 [really-safe-money] mutation: recording Money.QuantisationFactor/ListLit at 39:7-8 [really-safe-money] [ 3 of 12] Compiling Money.Currency ( src/Money/Currency.hs, dist/build/Money/Currency.p_o ) [really-safe-money] mutation: instrumenting Money.Currency [really-safe-money] [ 4 of 12] Compiling Money.ConversionRate ( src/Money/ConversionRate.hs, dist/build/Money/ConversionRate.p_o ) [really-safe-money] mutation: instrumenting Money.ConversionRate [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 116:45-46 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 116:45-46 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 109:27-28 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 109:27-28 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 72:25-26 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/Negate at 72:21-26 [really-safe-money] mutation: recording Money.ConversionRate/CondFlip at 72:18-69 [really-safe-money] mutation: recording Money.ConversionRate/IntLit at 38:56-57 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/ConstBool at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/Negate at 38:41-57 [really-safe-money] mutation: recording Money.ConversionRate/ListLit at 37:7-8 [really-safe-money] mutation: recording Money.ConversionRate/ListLit at 37:7-8 [really-safe-money] [ 5 of 12] Compiling Money.ConversionRateOf ( src/Money/ConversionRateOf.hs, dist/build/Money/ConversionRateOf.p_o ) [really-safe-money] mutation: instrumenting Money.ConversionRateOf [really-safe-money] [ 6 of 12] Compiling Money.Amount ( src/Money/Amount.hs, dist/build/Money/Amount.p_o ) [really-safe-money] mutation: instrumenting Money.Amount [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 801:36-38 [really-safe-money] mutation: recording Money.Amount/IntLit at 569:18-19 [really-safe-money] mutation: recording Money.Amount/ConstBool at 569:10-19 [really-safe-money] mutation: recording Money.Amount/ConstBool at 569:10-19 [really-safe-money] mutation: recording Money.Amount/Negate at 569:10-19 [really-safe-money] mutation: recording Money.Amount/CondFlip at 569:7-29 [really-safe-money] mutation: recording Money.Amount/ConstBool at 544:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 544:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 544:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 544:7-66 [really-safe-money] mutation: recording Money.Amount/IntLit at 518:14-15 [really-safe-money] mutation: recording Money.Amount/ConstBool at 518:10-15 [really-safe-money] mutation: recording Money.Amount/ConstBool at 518:10-15 [really-safe-money] mutation: recording Money.Amount/Negate at 518:10-15 [really-safe-money] mutation: recording Money.Amount/CondFlip at 518:7-66 [really-safe-money] mutation: recording Money.Amount/ConstBool at 476:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 476:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 476:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 476:7-66 [really-safe-money] mutation: recording Money.Amount/ConstBool at 388:5-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 388:5-16 [really-safe-money] mutation: recording Money.Amount/Negate at 388:5-16 [really-safe-money] mutation: recording Money.Amount/IntLit at 389:9-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 389:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 389:5-10 [really-safe-money] mutation: recording Money.Amount/Negate at 389:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 390:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 390:5-14 [really-safe-money] mutation: recording Money.Amount/Negate at 390:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 397:14-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 397:14-31 [really-safe-money] mutation: recording Money.Amount/Negate at 397:14-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 399:18-83 [really-safe-money] mutation: recording Money.Amount/ConstBool at 399:18-83 [really-safe-money] mutation: recording Money.Amount/Negate at 399:18-83 [really-safe-money] mutation: recording Money.Amount/CondFlip at 399:15-57 [really-safe-money] mutation: recording Money.Amount/CondFlip at 397:11-25 [really-safe-money] mutation: recording Money.Amount/IntLit at 320:9-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 320:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 320:5-10 [really-safe-money] mutation: recording Money.Amount/Negate at 320:5-10 [really-safe-money] mutation: recording Money.Amount/ConstBool at 321:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 321:5-14 [really-safe-money] mutation: recording Money.Amount/Negate at 321:5-14 [really-safe-money] mutation: recording Money.Amount/ConstBool at 327:9-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 327:9-16 [really-safe-money] mutation: recording Money.Amount/Negate at 327:9-16 [really-safe-money] mutation: recording Money.Amount/ConstBool at 328:9-21 [really-safe-money] mutation: recording Money.Amount/ConstBool at 328:9-21 [really-safe-money] mutation: recording Money.Amount/Negate at 328:9-21 [really-safe-money] mutation: recording Money.Amount/ConstBool at 329:9-18 [really-safe-money] mutation: recording Money.Amount/ConstBool at 329:9-18 [really-safe-money] mutation: recording Money.Amount/Negate at 329:9-18 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/IntLit at 332:38-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 332:14-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 332:14-40 [really-safe-money] mutation: recording Money.Amount/Negate at 332:14-40 [really-safe-money] mutation: recording Money.Amount/ConstBool at 339:22-39 [really-safe-money] mutation: recording Money.Amount/ConstBool at 339:22-39 [really-safe-money] mutation: recording Money.Amount/Negate at 339:22-39 [really-safe-money] mutation: recording Money.Amount/ConstBool at 341:26-91 [really-safe-money] mutation: recording Money.Amount/ConstBool at 341:26-91 [really-safe-money] mutation: recording Money.Amount/Negate at 341:26-91 [really-safe-money] mutation: recording Money.Amount/CondFlip at 341:23-65 [really-safe-money] mutation: recording Money.Amount/CondFlip at 339:19-33 [really-safe-money] mutation: recording Money.Amount/CondFlip at 332:11-33 [really-safe-money] mutation: recording Money.Amount/IntLit at 290:79-80 [really-safe-money] mutation: recording Money.Amount/IntLit at 494:96-97 [really-safe-money] mutation: recording Money.Amount/ConstBool at 495:10-23 [really-safe-money] mutation: recording Money.Amount/ConstBool at 495:10-23 [really-safe-money] mutation: recording Money.Amount/Negate at 495:10-23 [really-safe-money] mutation: recording Money.Amount/CondFlip at 495:7-66 [really-safe-money] mutation: recording Money.Amount/IntLit at 250:15-16 [really-safe-money] mutation: recording Money.Amount/IntLit at 661:30-31 [really-safe-money] mutation: recording Money.Amount/ConstBool at 681:12-37 [really-safe-money] mutation: recording Money.Amount/ConstBool at 681:12-37 [really-safe-money] mutation: recording Money.Amount/Negate at 681:12-37 [really-safe-money] mutation: recording Money.Amount/CondFlip at 681:9-27 [really-safe-money] mutation: recording Money.Amount/ConstBool at 806:79-92 [really-safe-money] mutation: recording Money.Amount/ConstBool at 806:79-92 [really-safe-money] mutation: recording Money.Amount/Negate at 806:79-92 [really-safe-money] mutation: recording Money.Amount/ConstBool at 607:15-22 [really-safe-money] mutation: recording Money.Amount/ConstBool at 607:15-22 [really-safe-money] mutation: recording Money.Amount/Negate at 607:15-22 [really-safe-money] mutation: recording Money.Amount/ListLit at 603:7-8 [really-safe-money] mutation: recording Money.Amount/ListLit at 603:7-8 [really-safe-money] [ 7 of 12] Compiling Money.MultiAmount ( src/Money/MultiAmount.hs, dist/build/Money/MultiAmount.p_o ) [really-safe-money] mutation: instrumenting Money.MultiAmount [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 168:20-45 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 168:17-57 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 119:12-28 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 119:9-37 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 106:12-28 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 106:9-37 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 73:6-27 [really-safe-money] mutation: recording Money.MultiAmount/CondFlip at 73:3-51 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/ConstBool at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/Negate at 66:13-29 [really-safe-money] mutation: recording Money.MultiAmount/ListLit at 63:7-8 [really-safe-money] mutation: recording Money.MultiAmount/ListLit at 63:7-8 [really-safe-money] [ 8 of 12] Compiling Money.AmountOf ( src/Money/AmountOf.hs, dist/build/Money/AmountOf.p_o ) [really-safe-money] mutation: instrumenting Money.AmountOf [really-safe-money] [ 9 of 12] Compiling Money.Account ( src/Money/Account.hs, dist/build/Money/Account.p_o ) [really-safe-money] mutation: instrumenting Money.Account [really-safe-money] mutation: recording Money.Account/IntLit at 421:32-33 [really-safe-money] mutation: recording Money.Account/ConstBool at 451:14-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 451:14-23 [really-safe-money] mutation: recording Money.Account/Negate at 451:14-23 [really-safe-money] mutation: recording Money.Account/CondFlip at 451:11-76 [really-safe-money] mutation: recording Money.Account/ConstBool at 455:14-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 455:14-23 [really-safe-money] mutation: recording Money.Account/Negate at 455:14-23 [really-safe-money] mutation: recording Money.Account/CondFlip at 455:11-136 [really-safe-money] mutation: recording Money.Account/IntLit at 495:17-18 [really-safe-money] mutation: recording Money.Account/ConstBool at 495:12-18 [really-safe-money] mutation: recording Money.Account/ConstBool at 495:12-18 [really-safe-money] mutation: recording Money.Account/Negate at 495:12-18 [really-safe-money] mutation: recording Money.Account/CondFlip at 495:9-41 [really-safe-money] mutation: recording Money.Account/IntLit at 503:15-16 [really-safe-money] mutation: recording Money.Account/ConstBool at 503:10-16 [really-safe-money] mutation: recording Money.Account/ConstBool at 503:10-16 [really-safe-money] mutation: recording Money.Account/Negate at 503:10-16 [really-safe-money] mutation: recording Money.Account/CondFlip at 503:7-33 [really-safe-money] mutation: recording Money.Account/IntLit at 233:19-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 233:14-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 233:14-20 [really-safe-money] mutation: recording Money.Account/Negate at 233:14-20 [really-safe-money] mutation: recording Money.Account/CondFlip at 233:11-48 [really-safe-money] mutation: recording Money.Account/IntLit at 197:19-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 197:14-20 [really-safe-money] mutation: recording Money.Account/ConstBool at 197:14-20 [really-safe-money] mutation: recording Money.Account/Negate at 197:14-20 [really-safe-money] mutation: recording Money.Account/CondFlip at 197:11-48 [really-safe-money] mutation: recording Money.Account/ConstBool at 123:10-23 [really-safe-money] mutation: recording Money.Account/ConstBool at 123:10-23 [really-safe-money] mutation: recording Money.Account/Negate at 123:10-23 [really-safe-money] mutation: recording Money.Account/IntLit at 131:25-26 [really-safe-money] mutation: recording Money.Account/ConstBool at 131:20-26 [really-safe-money] mutation: recording Money.Account/ConstBool at 131:20-26 [really-safe-money] mutation: recording Money.Account/Negate at 131:20-26 [really-safe-money] mutation: recording Money.Account/CondFlip at 131:17-39 [really-safe-money] mutation: recording Money.Account/CondFlip at 123:7-39 [really-safe-money] [10 of 12] Compiling Money.MultiAccount ( src/Money/MultiAccount.hs, dist/build/Money/MultiAccount.p_o ) [really-safe-money] mutation: instrumenting Money.MultiAccount [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 134:12-29 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 134:9-37 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 120:12-29 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 120:9-37 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 78:6-28 [really-safe-money] mutation: recording Money.MultiAccount/CondFlip at 78:3-52 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/ConstBool at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/Negate at 69:13-30 [really-safe-money] mutation: recording Money.MultiAccount/ListLit at 66:7-8 [really-safe-money] mutation: recording Money.MultiAccount/ListLit at 66:7-8 [really-safe-money] [11 of 12] Compiling Money.AccountOf ( src/Money/AccountOf.hs, dist/build/Money/AccountOf.p_o ) [really-safe-money] mutation: instrumenting Money.AccountOf [really-safe-money] [12 of 12] Compiling Paths_really_safe_money ( dist/build/autogen/Paths_really_safe_money.hs, dist/build/Paths_really_safe_money.p_o ) [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Account.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AccountOf.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Amount.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/AmountOf.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRate.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/ConversionRateOf.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/Currency.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAccount.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/MultiAmount.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Money/QuantisationFactor.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Numeric/DecimalLiteral.dyn_o' [really-safe-money] Warning: ignoring unrecognised input `dist/build/Paths_really_safe_money.dyn_o' [really-safe-money] mutation-nix: manifest output at /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest: [really-safe-money] total 224 [really-safe-money] drwxr-xr-x 2 nixbld nixbld 4096 May 12 13:47 . [really-safe-money] drwxrwxr-t 230 nobody nixbld 28672 May 12 13:46 .. [really-safe-money] -rw-r--r-- 1 nixbld nixbld 22147 May 12 13:48 Money.Account.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 12 13:48 Money.AccountOf.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 49349 May 12 13:47 Money.Amount.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 12 13:48 Money.AmountOf.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 7642 May 12 13:47 Money.ConversionRate.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 12 13:47 Money.ConversionRateOf.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 2 May 12 13:47 Money.Currency.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 8130 May 12 13:48 Money.MultiAccount.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 10713 May 12 13:48 Money.MultiAmount.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 13422 May 12 13:47 Money.QuantisationFactor.json [really-safe-money] -rw-r--r-- 1 nixbld nixbld 56802 May 12 13:47 Numeric.DecimalLiteral.json [really-safe-money] buildPhase completed in 2 minutes 24 seconds [really-safe-money] Phase: haddockPhase [really-safe-money] Phase: installPhase [really-safe-money] Installing library in /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money] Phase: fixupPhase [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 [really-safe-money] shrinking /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9-ghc9.10.3.so [really-safe-money] checking for references to /build/ in /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0... [really-safe-money] patching script interpreter paths in /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 [really-safe-money] stripping (with command strip and flags -S -p) in /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0/lib [really-safe-money] shrinking RPATHs of ELF executables and libraries in /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest [really-safe-money] checking for references to /build/ in /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest... [really-safe-money] patching script interpreter paths in /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 [post-build-hook] Pushing 2 paths (187 are already present) using zstd to cache sydtest ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 (104.54 MiB) [post-build-hook] Pushing /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest (166.60 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest /nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0 [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 2 paths... [post-build-hook] copying path '/nix/store/xnsvlwr9dqn5cv7k681hpkcsj1ywhv7d-really-safe-money-0.0.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/31vfxdilz9d5x8yp5nvr39wz0gfiayhn-really-safe-money-0.0.0.0-manifest' to 'https://cache.staging.nix-ci.com'... [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/3k7zahj9nwcphq442fc0zgcl47qvrgbd-really-safe-money-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 3 of 7 built, 37 of 37 downloaded from cache Building really-safe-money-gen-source [really-safe-money-gen-source] Phase: setupCompilerEnvironmentPhase [really-safe-money-gen-source] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3. [really-safe-money-gen-source] Phase: unpackPhase [really-safe-money-gen-source] unpacking source archive /nix/store/igm3hbdpcwgfbdx9yjyf6d68w1ifih08-really-safe-money-gen [really-safe-money-gen-source] source root is really-safe-money-gen [really-safe-money-gen-source] Phase: patchPhase [really-safe-money-gen-source] Phase: compileBuildDriverPhase [really-safe-money-gen-source] setupCompileFlags: -package-db=/build/tmp.GHf5BXLgDA/setup-package.conf.d -threaded [really-safe-money-gen-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.GHf5BXLgDA/Main.o ) [really-safe-money-gen-source] [2 of 2] Linking Setup [really-safe-money-gen-source] Phase: updateAutotoolsGnuConfigScriptsPhase [really-safe-money-gen-source] Phase: configurePhase [really-safe-money-gen-source] configureFlags: --verbose --prefix=/nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/share/doc/really-safe-money-gen-0.0.0.0 --with-gcc=gcc --package-db=/build/tmp.GHf5BXLgDA/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --enable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib [really-safe-money-gen-source] Using Parsec parser [really-safe-money-gen-source] Configuring really-safe-money-gen-0.0.0.0... [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1 [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0 [really-safe-money-gen-source] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2 [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0 [really-safe-money-gen-source] Dependency QuickCheck: using QuickCheck-2.15.0.1 [really-safe-money-gen-source] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-gen-source] Dependency criterion: using criterion-1.6.4.0 [really-safe-money-gen-source] Dependency deepseq: using deepseq-1.5.0.0 [really-safe-money-gen-source] Dependency genvalidity: using genvalidity-1.1.1.0 [really-safe-money-gen-source] Dependency genvalidity-criterion: using genvalidity-criterion-1.1.0.0 [really-safe-money-gen-source] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0 [really-safe-money-gen-source] Dependency really-safe-money: using really-safe-money-0.0.0.0 [really-safe-money-gen-source] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0 [really-safe-money-gen-source] Dependency vector: using vector-0.13.2.0 [really-safe-money-gen-source] Source component graph: [really-safe-money-gen-source]  component lib [really-safe-money-gen-source]  component bench:really-safe-money-bench dependency lib [really-safe-money-gen-source] Configured component graph: [really-safe-money-gen-source]  component really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  include base-4.20.2.0-64da [really-safe-money-gen-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  component really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  include base-4.20.2.0-64da [really-safe-money-gen-source]  include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN [really-safe-money-gen-source]  include deepseq-1.5.0.0-9a2c [really-safe-money-gen-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3 [really-safe-money-gen-source]  include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen-source] Linked component graph: [really-safe-money-gen-source]  unit really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  include base-4.20.2.0-64da [really-safe-money-gen-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  Money.Account.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53:Numeric.DecimalLiteral.Gen [really-safe-money-gen-source]  unit really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  include base-4.20.2.0-64da [really-safe-money-gen-source]  include criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN [really-safe-money-gen-source]  include deepseq-1.5.0.0-9a2c [really-safe-money-gen-source]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  include genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3 [really-safe-money-gen-source]  include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  include really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen-source] Ready component graph: [really-safe-money-gen-source]  definite really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  depends base-4.20.2.0-64da [really-safe-money-gen-source]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen-source]  depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  definite really-safe-money-gen-0.0.0.0-LP0fSqTOwvk9RMpsKSu0nN-really-safe-money-bench [really-safe-money-gen-source]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen-source]  depends base-4.20.2.0-64da [really-safe-money-gen-source]  depends criterion-1.6.4.0-ExZW8LB8ON09pSIfu9sGRN [really-safe-money-gen-source]  depends deepseq-1.5.0.0-9a2c [really-safe-money-gen-source]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen-source]  depends genvalidity-criterion-1.1.0.0-9pHw4wnFNz9EtFzK0UU3g3 [really-safe-money-gen-source]  depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen-source]  depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen-source]  depends really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source]  depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen-source] Using Cabal-3.12.1.0 compiled by ghc-9.10 [really-safe-money-gen-source] Using compiler: ghc-9.10.3 [really-safe-money-gen-source] Using install prefix: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0 [really-safe-money-gen-source] Executables installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/bin [really-safe-money-gen-source] Libraries installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-6HAQXS408A94VVAcwfSL53 [really-safe-money-gen-source] Dynamic Libraries installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6 [really-safe-money-gen-source] Private executables installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0 [really-safe-money-gen-source] Data files installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0 [really-safe-money-gen-source] Documentation installed in: /share/doc/really-safe-money-gen-0.0.0.0 [really-safe-money-gen-source] Configuration files installed in: [really-safe-money-gen-source] /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/etc [really-safe-money-gen-source] No alex found [really-safe-money-gen-source] Using ar found on system at: [really-safe-money-gen-source] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar [really-safe-money-gen-source] No c2hs found [really-safe-money-gen-source] No cpphs found [really-safe-money-gen-source] No doctest found [really-safe-money-gen-source] Using gcc version 14.3.0 given by user at: [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc [really-safe-money-gen-source] Using ghc version 9.10.3 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc [really-safe-money-gen-source] Using ghc-pkg version 9.10.3 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [really-safe-money-gen-source] No ghcjs found [really-safe-money-gen-source] No ghcjs-pkg found [really-safe-money-gen-source] No greencard found [really-safe-money-gen-source] Using haddock version 2.31.1 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [really-safe-money-gen-source] No happy found [really-safe-money-gen-source] Using haskell-suite found on system at: haskell-suite-dummy-location [really-safe-money-gen-source] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [really-safe-money-gen-source] No hmake found [really-safe-money-gen-source] Using hpc version 0.69 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [really-safe-money-gen-source] Using hsc2hs version 0.68.10 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [really-safe-money-gen-source] Using hscolour version 1.25 found on system at: [really-safe-money-gen-source] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour [really-safe-money-gen-source] No jhc found [really-safe-money-gen-source] Using ld found on system at: [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld [really-safe-money-gen-source] No pkg-config found [really-safe-money-gen-source] Using runghc version 9.10.3 found on system at: [really-safe-money-gen-source] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money-gen-source] Using strip version 2.44 found on system at: [really-safe-money-gen-source] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip [really-safe-money-gen-source] Using tar found on system at: [really-safe-money-gen-source] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar [really-safe-money-gen-source] No uhc found [really-safe-money-gen-source] Phase: buildPhase [really-safe-money-gen-source] Distribution quality errors: [really-safe-money-gen-source] [no-syn-desc] No 'synopsis' or 'description' field. [really-safe-money-gen-source] Distribution quality warnings: [really-safe-money-gen-source] [no-category] No 'category' field. [really-safe-money-gen-source] [no-maintainer] No 'maintainer' field. [really-safe-money-gen-source] [all-rights-reserved] The 'license' is AllRightsReserved. Is that really what [really-safe-money-gen-source] you want? [really-safe-money-gen-source] [missing-upper-bounds] On library, these packages miss upper bounds: [really-safe-money-gen-source] - QuickCheck [really-safe-money-gen-source] - genvalidity [really-safe-money-gen-source] - genvalidity-containers [really-safe-money-gen-source] - really-safe-money [really-safe-money-gen-source] Please add them. There is more information at https://pvp.haskell.org/ [really-safe-money-gen-source] Note: the public hackage server would reject this package. [really-safe-money-gen-source] Building source dist for really-safe-money-gen-0.0.0.0... [really-safe-money-gen-source] Source tarball created: dist/really-safe-money-gen-0.0.0.0.tar.gz [really-safe-money-gen-source] Phase: haddockPhase [really-safe-money-gen-source] Phase: installPhase [really-safe-money-gen-source] Phase: fixupPhase [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0 [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache sydtest ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0 (16.39 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0 [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/h3n4vxcfdy84b6l3fsi101l1z9vr77g0-really-safe-money-gen-source-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 4 of 6 built, 37 of 37 downloaded from cache Building really-safe-money-gen [really-safe-money-gen] Phase: setupCompilerEnvironmentPhase [really-safe-money-gen] Build with /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3. [really-safe-money-gen] Phase: unpackPhase [really-safe-money-gen] unpacking source archive /nix/store/scsnsqgw6lfs1fdq2g6hy0xk1r81xy8n-really-safe-money-gen-source-0.0.0.0/really-safe-money-gen-0.0.0.0.tar.gz [really-safe-money-gen] source root is really-safe-money-gen-0.0.0.0 [really-safe-money-gen] setting SOURCE_DATE_EPOCH to timestamp 1778593794 of file "really-safe-money-gen-0.0.0.0/test/Spec.hs" [really-safe-money-gen] warning: file "really-safe-money-gen-0.0.0.0/test/Spec.hs" may be generated; SOURCE_DATE_EPOCH may be non-deterministic [really-safe-money-gen] Phase: patchPhase [really-safe-money-gen] Phase: compileBuildDriverPhase [really-safe-money-gen] setupCompileFlags: -package-db=/build/tmp.s0U1drSug3/setup-package.conf.d -threaded [really-safe-money-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.s0U1drSug3/Main.o ) [really-safe-money-gen] [2 of 2] Linking Setup [really-safe-money-gen] Phase: updateAutotoolsGnuConfigScriptsPhase [really-safe-money-gen] Phase: configurePhase [really-safe-money-gen] configureFlags: --verbose --prefix=/nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc/share/doc/really-safe-money-gen-0.0.0.0 --with-gcc=gcc --package-db=/build/tmp.s0U1drSug3/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-options=-O2 --ghc-options=-Wall --ghc-options=-Wincomplete-uni-patterns --ghc-options=-Wincomplete-record-updates --ghc-options=-Wpartial-fields --ghc-options=-Widentities --ghc-options=-Wredundant-constraints --ghc-options=-Wcpp-undef --ghc-options=-Werror --extra-lib-dirs=/nix/store/ffyzkisqs4vc4mg28bwwlyqjf8i9ph6b-ncurses-6.5/lib --extra-lib-dirs=/nix/store/n28qgdj8c1q41kf7n4y1jxa6ckp85m3c-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/1b6h99dw7bk4wbn77kbalih42zbc67m1-elfutils-0.194/lib --extra-lib-dirs=/nix/store/hi0ar880110k6jsmmili7dh1gq3cg2a9-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/g09cflpnp4g80q56sj9dng1qzv4v4ybc-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/lib [really-safe-money-gen] Using Parsec parser [really-safe-money-gen] Configuring really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Dependency QuickCheck: using QuickCheck-2.15.0.1 [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-gen] Dependency genvalidity: using genvalidity-1.1.1.0 [really-safe-money-gen] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2 [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0 [really-safe-money-gen] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-gen] Dependency containers: using containers-0.7 [really-safe-money-gen] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0 [really-safe-money-gen] Dependency genvalidity-vector: using genvalidity-vector-1.0.0.0 [really-safe-money-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0 [really-safe-money-gen] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Dependency sydtest: using sydtest-0.23.0.2 [really-safe-money-gen] Dependency vector: using vector-0.13.2.0 [really-safe-money-gen] Source component graph: [really-safe-money-gen]  component lib [really-safe-money-gen]  component test:really-safe-money-test dependency lib [really-safe-money-gen] Configured component graph: [really-safe-money-gen]  component really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen]  include base-4.20.2.0-64da [really-safe-money-gen]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen]  include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  component really-safe-money-gen-0.0.0.0-KdN8RQ4uWyH9cGwvDytxua-really-safe-money-test [really-safe-money-gen]  include base-4.20.2.0-64da [really-safe-money-gen]  include containers-0.7-504a [really-safe-money-gen]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [really-safe-money-gen]  include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  include really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [really-safe-money-gen]  include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen] Linked component graph: [really-safe-money-gen]  unit really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  include QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen]  include base-4.20.2.0-64da [really-safe-money-gen]  include genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen]  include genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  Money.Account.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv:Numeric.DecimalLiteral.Gen [really-safe-money-gen]  unit really-safe-money-gen-0.0.0.0-KdN8RQ4uWyH9cGwvDytxua-really-safe-money-test [really-safe-money-gen]  include base-4.20.2.0-64da [really-safe-money-gen]  include containers-0.7-504a [really-safe-money-gen]  include genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [really-safe-money-gen]  include genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen]  include really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  include really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  include sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [really-safe-money-gen]  include vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen] Ready component graph: [really-safe-money-gen]  definite really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  depends QuickCheck-2.15.0.1-8fVC1qSJKj9H9pvMjJXUwU [really-safe-money-gen]  depends base-4.20.2.0-64da [really-safe-money-gen]  depends genvalidity-1.1.1.0-KJOcA1wEUno9vXRiVdno1L [really-safe-money-gen]  depends genvalidity-containers-1.0.0.2-DXaOCEBh8iJ1c8u2LwVlK1 [really-safe-money-gen]  depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  definite really-safe-money-gen-0.0.0.0-KdN8RQ4uWyH9cGwvDytxua-really-safe-money-test [really-safe-money-gen]  depends base-4.20.2.0-64da [really-safe-money-gen]  depends containers-0.7-504a [really-safe-money-gen]  depends genvalidity-sydtest-1.0.1.0-IC8r9LzioZH7vdtV3iQYG5 [really-safe-money-gen]  depends genvalidity-vector-1.0.0.0-6KKiduowklk7hSxSW05Gxi [really-safe-money-gen]  depends really-safe-money-0.0.0.0-KH9ltLBvnn0Cn1rgifGPh9 [really-safe-money-gen]  depends really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen]  depends sydtest-0.23.0.2-ENjhd0UdrZJB5ZbvwjISNG [really-safe-money-gen]  depends vector-0.13.2.0-GDUCoiHhVuq2SKPTzzTr3a [really-safe-money-gen] Using Cabal-3.12.1.0 compiled by ghc-9.10 [really-safe-money-gen] Using compiler: ghc-9.10.3 [really-safe-money-gen] Using install prefix: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Executables installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/bin [really-safe-money-gen] Libraries installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen] Dynamic Libraries installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6 [really-safe-money-gen] Private executables installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Data files installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/share/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Documentation installed in: [really-safe-money-gen] /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc/share/doc/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Configuration files installed in: [really-safe-money-gen] /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/etc [really-safe-money-gen] No alex found [really-safe-money-gen] Using ar found on system at: [really-safe-money-gen] /nix/store/iz5lckcsg66r223si2gck7csk2hihj0m-binutils-wrapper-2.44/bin/ar [really-safe-money-gen] No c2hs found [really-safe-money-gen] No cpphs found [really-safe-money-gen] No doctest found [really-safe-money-gen] Using gcc version 14.3.0 given by user at: [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/gcc [really-safe-money-gen] Using ghc version 9.10.3 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc [really-safe-money-gen] Using ghc-pkg version 9.10.3 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [really-safe-money-gen] No ghcjs found [really-safe-money-gen] No ghcjs-pkg found [really-safe-money-gen] No greencard found [really-safe-money-gen] Using haddock version 2.31.1 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [really-safe-money-gen] No happy found [really-safe-money-gen] Using haskell-suite found on system at: haskell-suite-dummy-location [really-safe-money-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [really-safe-money-gen] No hmake found [really-safe-money-gen] Using hpc version 0.69 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [really-safe-money-gen] Using hsc2hs version 0.68.10 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [really-safe-money-gen] Using hscolour version 1.25 found on system at: [really-safe-money-gen] /nix/store/f755skyzf4jvfx3crwq9mmh3x4lsaz8i-hscolour-1.25/bin/HsColour [really-safe-money-gen] No jhc found [really-safe-money-gen] Using ld found on system at: [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/ld [really-safe-money-gen] No pkg-config found [really-safe-money-gen] Using runghc version 9.10.3 found on system at: [really-safe-money-gen] /nix/store/s9jd43rkwc2syl9cvgj6f786avy8bgzy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money-gen] Using strip version 2.44 found on system at: [really-safe-money-gen] /nix/store/8v97ngkcpfzgghwnnr7fsz33p2x22gy9-gcc-wrapper-14.3.0/bin/strip [really-safe-money-gen] Using tar found on system at: [really-safe-money-gen] /nix/store/xl6pd2spjajwcpq09fnmnjv5psqmlmma-gnutar-1.35/bin/tar [really-safe-money-gen] No uhc found [really-safe-money-gen] Phase: buildPhase [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Building library for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, dist/build/Money/Amount/Gen.o, dist/build/Money/Amount/Gen.dyn_o ) [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, dist/build/Money/Account/Gen.o, dist/build/Money/Account/Gen.dyn_o ) [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, dist/build/Money/AccountOf/Gen.o, dist/build/Money/AccountOf/Gen.dyn_o ) [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, dist/build/Money/AmountOf/Gen.o, dist/build/Money/AmountOf/Gen.dyn_o ) [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, dist/build/Money/ConversionRate/Gen.o, dist/build/Money/ConversionRate/Gen.dyn_o ) [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, dist/build/Money/ConversionRateOf/Gen.o, dist/build/Money/ConversionRateOf/Gen.dyn_o ) [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, dist/build/Money/QuantisationFactor/Gen.o, dist/build/Money/QuantisationFactor/Gen.dyn_o ) [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, dist/build/Money/Currency/Gen.o, dist/build/Money/Currency/Gen.dyn_o ) [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, dist/build/Money/MultiAmount/Gen.o, dist/build/Money/MultiAmount/Gen.dyn_o ) [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, dist/build/Money/MultiAccount/Gen.o, dist/build/Money/MultiAccount/Gen.dyn_o ) [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, dist/build/Money/Gen.o, dist/build/Money/Gen.dyn_o ) [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, dist/build/Numeric/DecimalLiteral/Gen.o, dist/build/Numeric/DecimalLiteral/Gen.dyn_o ) [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, dist/build/Paths_really_safe_money_gen.o, dist/build/Paths_really_safe_money_gen.dyn_o ) [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, dist/build/Money/Amount/Gen.p_o ) [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, dist/build/Money/Account/Gen.p_o ) [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, dist/build/Money/AccountOf/Gen.p_o ) [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, dist/build/Money/AmountOf/Gen.p_o ) [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, dist/build/Money/ConversionRate/Gen.p_o ) [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, dist/build/Money/ConversionRateOf/Gen.p_o ) [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, dist/build/Money/QuantisationFactor/Gen.p_o ) [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, dist/build/Money/Currency/Gen.p_o ) [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, dist/build/Money/MultiAmount/Gen.p_o ) [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, dist/build/Money/MultiAccount/Gen.p_o ) [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, dist/build/Money/Gen.p_o ) [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, dist/build/Numeric/DecimalLiteral/Gen.p_o ) [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, dist/build/Paths_really_safe_money_gen.p_o ) [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Building test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] [ 1 of 14] Compiling Money.AccountSpec ( test/Money/AccountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AccountSpec.o ) [really-safe-money-gen] [ 2 of 14] Compiling Money.AmountSpec ( test/Money/AmountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AmountSpec.o ) [really-safe-money-gen] [ 3 of 14] Compiling Money.ConversionRateSpec ( test/Money/ConversionRateSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/ConversionRateSpec.o ) [really-safe-money-gen] [ 4 of 14] Compiling Money.Currency.TestUtils ( test/Money/Currency/TestUtils.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/Currency/TestUtils.o ) [really-safe-money-gen] [ 5 of 14] Compiling Money.ConversionRateOfSpec ( test/Money/ConversionRateOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/ConversionRateOfSpec.o ) [really-safe-money-gen] [ 6 of 14] Compiling Money.AmountOfSpec ( test/Money/AmountOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AmountOfSpec.o ) [really-safe-money-gen] [ 7 of 14] Compiling Money.AccountOfSpec ( test/Money/AccountOfSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/AccountOfSpec.o ) [really-safe-money-gen] [ 8 of 14] Compiling Money.CurrencySpec ( test/Money/CurrencySpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/CurrencySpec.o ) [really-safe-money-gen] [ 9 of 14] Compiling Money.MultiAccountSpec ( test/Money/MultiAccountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/MultiAccountSpec.o ) [really-safe-money-gen] [10 of 14] Compiling Money.MultiAmountSpec ( test/Money/MultiAmountSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/MultiAmountSpec.o ) [really-safe-money-gen] [11 of 14] Compiling Money.QuantisationFactorSpec ( test/Money/QuantisationFactorSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Money/QuantisationFactorSpec.o ) [really-safe-money-gen] [12 of 14] Compiling Numeric.DecimalLiteralSpec ( test/Numeric/DecimalLiteralSpec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Numeric/DecimalLiteralSpec.o ) [really-safe-money-gen] [13 of 14] Compiling Main ( test/Spec.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Main.o ) [really-safe-money-gen] [14 of 14] Compiling Paths_really_safe_money_gen ( dist/build/really-safe-money-test/autogen/Paths_really_safe_money_gen.hs, dist/build/really-safe-money-test/really-safe-money-test-tmp/Paths_really_safe_money_gen.o ) [really-safe-money-gen] [15 of 15] Linking dist/build/really-safe-money-test/really-safe-money-test [really-safe-money-gen] Phase: checkPhase [really-safe-money-gen] mutation-nix: collecting per-test coverage [really-safe-money-gen] mutation-nix: running mutations [really-safe-money-gen] TTTeTTeTeTTTTTTTTTTTTTTTTTsTTTTTeeseseeeeeeeeeeeeeeeeeteeeeesststsssssssssssssssssisssssttititttttttttttttttttntttttiininiiiiiiiiiiiiiiiiigiiiiinngngnnnnnnnnnnnnnnnnn nnnnngg g gggggggggggggggggmggggg m m u mmumummmmmmmmmmmmmmmmmtmmmmmuututuuuuuuuuuuuuuuuuuauuuuuttatatttttttttttttttttttttttaatataaaaaaaaaaaaaaaaaiaaaaattititttttttttttttttttotttttiioioiiiiiiiiiiiiiiiiiniiiiioononooooooooooooooooo ooooonn n nnnnnnnnnnnnnnnnnInnnnn I I n IInCnCNCCLILCNCNCCNCCItIICNCnntotoeooinioeoeooeoonLnnoeottLnLngnnstsngngnngnntittngnLLisidasstLtsasassasdLtLLsasiitttFtttLiLttttttttFi iittttt B leBBitiBeBeBBeBltattBeB aoai oot to o oo oi t o oaatotpaoo a oaoaooaopa aaoaott l tllataltltlltl tsttltl s sa t t a r ssrartsaa s asasaasatscssasarrctc rttsrstrtrttrt r/rrtrtcc/ /sc rcr c c c scMcc c //MsMr/ssc/cs/s/ss/sr/o//s/sMMorocMrr/M/rNrMrrNrcNnNNrNrooncn/occMoMcucoccuc/ueuucucnne/eMn//ono/m/n//m/Nmymm/m/eeyMyoeMMnenNeMeNNeNue/eeNeNyy/o/nyooeyeuroyuurumrCrruru//CnCe/nny/ymin/mmimeioiimimCCoeoyCee/C/eceCeecercncceceoonyn/oyyCoCr/yorr/ri/v//r/rnnv/vCn//onoiD/niiDicDeDDiDivveCeovCCnvnceCvccec/ereececeerorneoovev/coe//c/Dcscc/c/rrsnsvrnnereDinrDDiDeiiiiDiDssiviesvvrsremvseemecmommemeiioeorieesiscaeiccacianaacacoonrnsorrioiilroiilimlRllilinnRsRinssonomLsnmmLmaLaLLmLmRRaiaoRiinRnaiiRaaialitiiaiaaatotnaooRaRltoalltlLtettltltteneRtnnataLentLLeLie.eeLeLee.R.aeRRtetirReiiritrhrriri..haht.aae.etaa.ttateasaatathhstsehtt.h.eltheelerl:lleless:e:.seehshr.esrr.ra.1..r.r::1.1h:..s:sah.:aahalh1hhaha171h0s7hh:3:lsh3llsl.s6sslsl026s9:2ss383.:s8..:.h::::.:.9::::7:::7:7h3::hh3hs3433h3h:24722237:5:s934ss6s:3577s3s25527:182767:681::8:37-55:7:7--:-1-::---3::-33:36:4::3:3-24228242858924566198268831326618-611:7:63178806:1:007678::-:6:-- [really-safe-money-gen] : [really-safe-money-gen] :--:::-:7- [really-safe-money-gen] --:-:: [really-safe-money-gen]  [really-safe-money-gen] 2 [really-safe-money-gen] 9 [really-safe-money-gen] 52@ [really-safe-money-gen] @225 [really-safe-money-gen] 1132-2@88121 [really-safe-money-gen] @@6@:@76@@@377@009362@22626@@@:@ [really-safe-money-gen] @:: @ -::@--:-2: ::-:-@ [really-safe-money-gen]  @ [really-safe-money-gen]  [really-safe-money-gen] - -2 [really-safe-money-gen]  [really-safe-money-gen]  33 [really-safe-money-gen] 2: [really-safe-money-gen] - [really-safe-money-gen]  [really-safe-money-gen] 2 [really-safe-money-gen] 2 --@-@-@@3-37@@-99@7 [really-safe-money-gen] @1@@2@2-61@1 6@@434:@@3::@:@@1@@:@:191 0-9 ,5, [really-safe-money-gen]  5 [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen] @ 3 [really-safe-money-gen]  [really-safe-money-gen] 0,3-66,--7,7@--,@@-@ -,--@-@67,6,9736 7 @337@@3@-3733@3@, 797, 59+ + 95 6 33 77 3 7+ , 7+,,3+3-3,+--5-64+22-4- 6+7+ 6774343,7333,35,1,,3,3+91 1+9 ,5,95 56679,71773731,1+06,++7,73 +,55 37 3 4 4073669736 7 ,+37,,+, +,++,+,6 ,9,, 59@ @535 7735+3733737,@7,77@,,@@@ 9,@ 6 33 77 3 7@ 7 @77 [really-safe-money-gen] @ [really-safe-money-gen] +37@++5+64@22+4+ [really-safe-money-gen] @ @@ [really-safe-money-gen]  [really-safe-money-gen]  3, [really-safe-money-gen] 33,35,@,,3,3@ @@@@ @@i i95@ 6679,7 [really-safe-money-gen] 77373@- [really-safe-money-gen] @ [really-safe-money-gen]  [really-safe-money-gen] -@@n n3 @ 55 37 4 4 [really-safe-money-gen] - [really-safe-money-gen]  - [really-safe-money-gen]  [really-safe-money-gen] s s,@ [really-safe-money-gen]  ,,@, @-@@,@, - [really-safe-money-gen] - tvt5@ v77@5@@-@@7@7 [really-safe-money-gen] >-- -> -aaa [really-safe-money-gen]  a [really-safe-money-gen]  @ [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  > -- > -nln@ l@@ @ [really-safe-money-gen]  > @ @->> ->>v cic@ vi@@s@ > @ @- >> > a>ede [really-safe-money-gen]  ad [really-safe-money-gen]  [really-safe-money-gen] e [really-safe-money-gen] s > [really-safe-money-gen]  [really-safe-money-gen]  f>>|>fl> a Dla t ep p |r > ri>VtV eitssM tui u oi Ofod aea cdeeei Mrnii r Omnfnrmafl lDia ttnDievnnpepnRvreoRtriciemtcMMien eccu ueaeo-maeodrdcaeriimci$rrrr$r-trmtRt mi@iil @nnuim teee etitRoaicRt(tmLc(iimmuf aa f oo a-torayCyairCmmDamr(ss$r$-n(toin@t o lt@ouuilDoCee o oaCinoa(iCnCLe(nmmgLimoDDfmfnlooenlCoovoirCvDDiigIniirIre nn a onnentaoeiittinvggono (vacl(navrvelnrggsetteiimtmc0elo 0vleser vsii rserttIeIo r n( e rirameittwa gsssngnn%s(v0%r(soslSrossalwri trtv i0e s0ini sn n aao::eaee1o r%1i oRommiRwwtmnln::glgr)n%s )o%nanS oaaaeSt R r rs [really-safe-money-gen] R i1 [really-safe-money-gen] n RtR entnnd enaWWanai a1o) R1aeam RettDmd [really-safe-money-gen] tool [really-safe-money-gen] lo-t)n [really-safe-money-gen] -a)t t -a eei D err n-e [really-safe-money-gen]  -t [really-safe-money-gen] eree>trddgei [really-safe-money-gen]  ddn [really-safe-money-gen] n r- e ) e)DDi g (88 [really-safe-money-gen]  [really-safe-money-gen] rN-(a-N -w w-D iit-in1 n ao-1t or-h=h>er=ggs>tu -- [really-safe-money-gen] u [really-safe-money-gen] tt eNt) e [really-safe-money-gen] e c) [really-safe-money-gen] ii sm%>> m ehN% [really-safe-money-gen] oh Nr rDi ttdD S nSn [really-safe-money-gen] io ti=oe eem= ssledi2DDuiu nt2ohn [really-safe-money-gen] t [really-safe-money-gen]  [really-safe-money-gen] ca [really-safe-money-gen]  clg)eemgmogh)nig h il dd=i n)ccSnSn [really-safe-money-gen] i)en [really-safe-money-gen]  i mL ll [really-safe-money-gen] m= [really-safe-money-gen] iii ie n [really-safe-money-gen] Tg n m ai m a [really-safe-money-gen] : mmg:gTfg o [really-safe-money-gen] f gvcvlt c== l :-aan:nor [really-safe-money-gen] -O r [really-safe-money-gen] aoaLe o [really-safe-money-gen]  [really-safe-money-gen]  L -ll Oo -nfom lnlirmn li ( LL:(:nmf ermcficitacc etlOCii:O:eRrC oRordadeloa teerott r aoo:manoatar ntll rtdnee(d(:tmn:Rtcmt [really-safe-money-gen] ta(c [really-safe-money-gen] eeca vrrO O:iRv aiaRe elga ttulcaeaarar oaeCtota ot r u,rlld,dCntroin [really-safe-money-gen] tc c( [really-safe-money-gen]  ccr(r s oaisnoa ir rgm uuegrNi--aNanloivnl o@ @oS rrnoeuo>>,u,v noea n( ( ) rrt nmn m e:anrl: aC Cm eeDmt RDDN Nr:lRs : lo[oSm [nniSDaaeeuaus ai: n n) ttg)i)tccm)miR:to:R :vgv e gDDi g eii oa:en a[:eeem [really-safe-money-gen] [eiitmi= mma=ant RRt rnr nggs t>{aa)>)RiR{aaigRsese geii es ull aoauttoeairi [really-safe-money-gen]  ertt: [really-safe-money-gen]  anLL=a=tntneinntoio wniss: : Cii> >eaiC [really-safe-money-gen] oaeincn hec :-ott - [really-safe-money-gen] loo-nlroRVR erV::W >neea>a- nnoa inaaawria::owW vrr o-avnl-catlthecl rhoMeaa-M-n>lee >Vleiee [really-safe-money-gen] ViWWderarll>a>e rT- a d r adoo8rdys [really-safe-money-gen]  [really-safe-money-gen]  y TM-so>Ml-rare larr [really-safe-money-gen] e8bi MbMoa>iO ai>)t) [really-safe-money-gen]  itdd [really-safe-money-gen]  [really-safe-money-gen] eo aeaOy onMyd e de88 n y ynbMneabaM= = a [really-safe-money-gen]  [really-safe-money-gen]  BR bBbeeaR yeta [really-safe-money-gen] c [really-safe-money-gen]  gtc oa eoe ya=b ey r oer otii o =Cbt eC b , , lennBlB oeeC oce [really-safe-money-gen]  g=c [really-safe-money-gen]  g [really-safe-money-gen]  cco [really-safe-money-gen] oCn oCnr - o r- co -=rro-oovC=nov,C \, u cn eelnlneo vne [really-safe-money-gen] om m=c [really-safe-money-gen]  r=uu2aa [really-safe-money-gen] u [really-safe-money-gen] vrn2evr-nc c a- ccr rm ss-m-esv res vo o\s uue\rS%eenSnrie%sri en nce rrncei DDuiusor iso rc ca [really-safe-money-gen]  rrtang1iimgmins1oin sa as- eeDstn}ggSnSoRi}noR it te nnieD [really-safe-money-gen] iii inao [really-safe-money-gen] Rna o [really-safe-money-gen] d [really-safe-money-gen]  [really-safe-money-gen]  dttg [really-safe-money-gen] ia ttgagRtn aRt n-e-- eDDi-g issn naeRitae R c ciit i=n = t [really-safe-money-gen] anet [really-safe-money-gen] da l dlggs t v00a ae-tv e-et a eaii sie i fee1 [really-safe-money-gen] fce r Ncrtt= fr===f=1r [really-safe-money-gen] r [really-safe-money-gen] -rl [really-safe-money-gen]  e oless = t [really-safe-money-gen] o-t+foa- ta d a iiiai+mf ormrf["[Nhr"==iNd :ddf foRr:noRer T oieT goi>: [really-safe-money-gen]  [really-safe-money-gen]  > nao:ema oghgtn hdditg= a=aetm TRt"meeehg"eiithi C TiRCoaiTRn ni T ggsit0o >0>ooaoOtohaeren-hrii ns n = =Ontnninetrarg>eattdg tv t naiveoa iiti tssl dheii0h0eloe nlrocec-Jre [really-safe-money-gen] -lernn e nr=a anV V>ua dd-> [really-safe-money-gen] nscctnt=ras lrtaaia still - irrh h liC ellslJtes [really-safe-money-gen]  [really-safe-money-gen]  J NoeeeNeC= oor= i iu -- u onaanono rnn irdndsTin is tRss t ni Rv=is aoatrso ntihaeeNhNvf=ae f =tnt u n nitDDoioe tri n ezeTenziiiT neiitntrriesfroi e r [really-safe-money-gen] oennfrig gghghs f i nfcrcu+nr uf -iii ii< -orttneno r>n er,", [really-safe-money-gen]  e"ffa [really-safe-money-gen] wl ssglgn0 R<0r [really-safe-money-gen]  [really-safe-money-gen] + r n+asC s R or g= [really-safe-money-gen] e l [really-safe-money-gen] l ie n rir r r <ur= r>uui [really-safe-money-gen] u [really-safe-money-gen] Is ives V V s ccr rmn +m+neenele/ea0aJt/0uueJrSvDDnSnv lvrs =ll [really-safe-money-gen] lu = [really-safe-money-gen] rrnueieeeuiuefsetef si+isn +rrtsngrccmgmrrer r0ed dto0 eeDttntiiSnSto tafo [really-safe-money-gen]  a a t [really-safe-money-gen]  nni D mmi i mf rm+ft tF + ttgTia(aagagaRr('oR re ea( DDirg Clln n aoCCma o lT iitui=oLL = 'tmooRt mc csr ggset niia aCiRnnai Rr reu ii [really-safe-money-gen]  [really-safe-money-gen] sivtt i ooavvto a, , [really-safe-money-gen] e tt+ [really-safe-money-gen] feee=f=n teei t [really-safe-money-gen] d [really-safe-money-gen]  ) dss + rrr v(irro( i e [really-safe-money-gen]  e [really-safe-money-gen]  [really-safe-money-gen]  asaainieross r o c c++ illfofre ii(ed l dl i >o t sa(oorae( a ea n i=nmmF Tilrnnelcr r cr n RSSa(roTeRRaTle e leiiis 1a launoaaaloaa s a nnf i tmms eRFlttTFrl " r" -fte e> arTeeoreT T -seTiin> h ee =ttao 'Fa odhd> hffo wer t hecFr,rc"Feee -"e tsan)--h0e' r) a Trc cs>T TF [really-safe-money-gen] n >>e)n,ra tcrhalrl [really-safe-money-gen]  hrra(tN= n )c=o )ecaaaseaulweo ii tNt [really-safe-money-gen]  r [really-safe-money-gen]  rtr [really-safe-money-gen]  tesadtCnnNhoo+rCc)+rreeere [really-safe-money-gen] enDhoccoet f)oo [really-safe-money-gen] fa) a [really-safe-money-gen] tiinrrtnhcr [really-safe-money-gen] nn+rt [really-safe-money-gen] "i"ti egnveeh ioo+vvfoe+TsTes digeaaiNnnmfeerm fh h Dt rssnogvRrrroRirenein iseseegt eaostmaso o so g liDD hertmi Rt mrnr n i)00 m=mr)rsaf t D w( ))= >Ro oetr a a [really-safe-money-gen] aw M= >a am=m ao]n]t na ea (( )MtR Rf m [really-safe-money-gen] c [really-safe-money-gen] aitn lyCssM aiaCarCR e net sbouua=yototooa [really-safe-money-gen]  [really-safe-money-gen] Csde eenccy>b inimntNotDd vccb e(ovoRviFnaiDeiBe eM r e aeoDvngilnoree aBe(r(tr aecigscos))Byoarsris(tretierli))oboleieoiras st e o [really-safe-money-gen]  [really-safe-money-gen] oelTaoa oe iN sia-n++l olnl(naCoF- ns>R B-FTRTrRlonD -ce a -o>roaoeaTnRac rD(t >o aFtFatovatuceiae l(crerleFetaruag ( a a aT [really-safe-money-gen] rre rrsi-( a- rc(coas [really-safe-money-gen] Ceret>0DD >-) - FcioneDs ee- > [really-safe-money-gen] r1rr ontni a/cc>( ) )arnvDtg() ii aa [really-safe-money-gen]  [really-safe-money-gen] / [really-safe-money-gen] c)ReiDiw [really-safe-money-gen] rmma ) [really-safe-money-gen] argita )aa)- [really-safe-money-gen] - [really-safe-money-gen] r [really-safe-money-gen] r tsigsns [really-safe-money-gen] ll [really-safe-money-gen] > - ) ) [really-safe-money-gen] eiti ti LL s - [really-safe-money-gen] - [really-safe-money-gen]  [really-safe-money-gen] ost(eg [really-safe-money-gen] iisai|- - -n)swdn tti)g [really-safe-money-gen]  [really-safe-money-gen] -R )aDS-eeg [really-safe-money-gen] nT| | ad nii-rrn Su - -|tldtgg aaSsirT-T- e [really-safe-money-gen] lein|lliignu u T [really-safe-money-gen]  [really-safe-money-gen] dtu ggn r|r|u DsmCmmnnuan n r i oSSuSm C Tnw g-=m mi 'aoau hwi pmm g=C m raehtc\o =n o'p'n resucsee u\nCoC 'er rae \mcvosoaC [really-safe-money-gen] e-rs --c aenen o [really-safe-money-gen]  eet>>a=srv v'ncn [really-safe-money-gen] w s eseteCvutoiie\ [really-safe-money-gen] irwroerD nn [really-safe-money-gen] cososnrricccani ivsegorrsRocoeinineeeanonrottvaa [really-safe-money-gen] tRnRsnDsesseavaiRi)ree'tetoag sDD erentidiiib's'Retlogga i a's [really-safe-money-gen] niicbobt ) ttkanaeb rss c c'ad a ikrk clwt((n a bk [really-safe-money-gen] hepptitia esrronenci r [really-safe-money-gen] ee tstkn e ddao [really-safe-money-gen] o tw [really-safe-money-gen] - ioh-ww'a-an e [really-safe-money-gen] ))R - tar a' [really-safe-money-gen] 'o e((tRR ' [really-safe-money-gen] DDiaaaReeott accnii'tiiaooRimmlnnaoaa'aatnll [really-safe-money-gen] lliaLL ''olii- [really-safe-money-gen]  [really-safe-money-gen] n'tt- a [really-safe-money-gen] ee [really-safe-money-gen] --l rr--'-aa [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen] -ll [really-safe-money-gen]  -mm-SS [really-safe-money-gen]  ((mm ** 01)) ((ssuucccc ee)))) [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  ---- || EEnnssuurreess tthhaatt aa ppoossiittiivvee lliitteerraall hhaass nnoo ssiiggnn [really-safe-money-gen]  [really-safe-money-gen]  ---- [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:46-51: [really-safe-money-gen] @@ -334,7 +334,7 @@ [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just True [really-safe-money-gen]  [really-safe-money-gen]  signSignum :: (Num a) => Maybe Bool -> (a -> a) [really-safe-money-gen]  signSignum = \case [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:337:46-51: [really-safe-money-gen] @@ -334,7 +334,7 @@ [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen]  [really-safe-money-gen]  signSignum :: (Num a) => Maybe Bool -> (a -> a) [really-safe-money-gen]  signSignum = \case [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:337:46-51: [really-safe-money-gen] @@ -334,7 +334,7 @@ [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just not (False) [really-safe-money-gen]  [really-safe-money-gen]  signSignum :: (Num a) => Maybe Bool -> (a -> a) [really-safe-money-gen]  signSignum = \case [really-safe-money-gen] Testing mutation CondFlip at src/Numeric/DecimalLiteral.hs:337:13-51: [really-safe-money-gen] @@ -334,7 +334,7 @@ [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen] +numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen]  [really-safe-money-gen]  signSignum :: (Num a) => Maybe Bool -> (a -> a) [really-safe-money-gen]  signSignum = \case [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  toInt :: DecimalLiteral -> Maybe Int [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:332:11-46: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  toInt :: DecimalLiteral -> Maybe Int [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] + guard $ not (n <= fromIntegral (maxBound :: Int)) [really-safe-money-gen]  guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  toInt :: DecimalLiteral -> Maybe Int [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43: [really-safe-money-gen] @@ -301,7 +301,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Natural' [really-safe-money-gen]  fromNatural :: Natural -> DecimalLiteral [really-safe-money-gen] -fromNatural n = DecimalLiteral Nothing n 0 [really-safe-money-gen] +fromNatural n = DecimalLiteral Nothing n 1 [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Natural' [really-safe-money-gen]  toNatural :: DecimalLiteral -> Maybe Natural [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46: [really-safe-money-gen] @@ -330,7 +330,7 @@ [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen]  guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46: [really-safe-money-gen] @@ -330,7 +330,7 @@ [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen]  guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:315:67-68: [really-safe-money-gen] @@ -312,7 +312,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from an 'Integer' [really-safe-money-gen]  fromInteger :: InteTgeesrt i-n>g DmeuctiamtailoLni tNeergaalt [really-safe-money-gen] e- farto msIrnct/eNguemre rni c=/ DDeecciimmaallLLiitteerraall. h(sn:u3m3S3i:g1n1 -n4)6 :( [really-safe-money-gen] f@r@o m-I3n3t0e,g7r a+l3 3(0a,b7s @n@) [really-safe-money-gen] ) t0o [really-safe-money-gen] I+nftr odmlI n=t edgoe [really-safe-money-gen] r n n= i=t efrraolm'I nitnetgor aaln ('mIinntBeoguenrd' [really-safe-money-gen] : :t oIInntt)e [really-safe-money-gen] g+e r g:u:a rDde c$i mnaoltL i(tne r>a=l f-r>o mMIanytbeeg rIanlt e(gmeirn [really-safe-money-gen] Bound :: Int)) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47: [really-safe-money-gen] @@ -296,7 +296,7 @@ [really-safe-money-gen]  toWord :: DecimalLiteral -> Maybe Word [really-safe-money-gen]  toWord dl = do [really-safe-money-gen]  n <- toNatural dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Natural' [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47: [really-safe-money-gen] @@ -296,7 +296,7 @@ [really-safe-money-gen]  toWord :: DecimalLiteral -> Maybe Word [really-safe-money-gen]  toWord dl = do [really-safe-money-gen]  n <- toNatural dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  pure $ frToemsItniTtneegsg trmiaunltg a ntm [really-safe-money-gen] iu ot [really-safe-money-gen] na t-Ni-eo gn|a tICeno tnaLstit trs uracctt/ Nsaur mc'e/DrNeiuccmi/emDraeilccLi/imDtaeelcrLiaimlta'el rLfairlto.emhr saa:l 2.'9hN9sa::t12u18r-9a4:l73':3 [really-safe-money-gen]  [really-safe-money-gen] -@3@5 :- [really-safe-money-gen] 2@9@6 ,-72 8+62,976 ,+72 8@6@, [really-safe-money-gen] 7 t@o@W [really-safe-money-gen] o rtdo R:a:t iDoe c:i:m aDleLciitmearlaLli t-e>r aMla y-b>e MWaoyrbde [really-safe-money-gen]  (tRoaWtoirod Ndalt u=r adlo) [really-safe-money-gen]  [really-safe-money-gen]  t onR a [really-safe-money-gen]  +N o tghuianrgd [really-safe-money-gen]  -$ n_o t- >( nJ ue spJtuuirsnetg $$m ufftrraootmmiIIonnntt eeIggnrrtaaLlli tnm [really-safe-money-gen]  a /t [really-safe-money-gen]  (s-0r- c ^/| N euC)mo [really-safe-money-gen] en rs [really-safe-money-gen] it cr-/u-Dc et|c iaCm oa'nlDsLeticrtiuemcratal lLa.i ht'seD:re2ac8li9'm: a3fl3rL-oi3mt5 e:ar [really-safe-money-gen]  a@'l@N' a -tf2ur8ro6am,l 7'a [really-safe-money-gen]  +'2W8o6r,d7' [really-safe-money-gen] @ @f [really-safe-money-gen] r otmoWRoartdi o: :: :W oDredc i-m>a lDLeictiemraallL i-t>e rMaaly [really-safe-money-gen] be (Ratio Natural) [really-safe-money-gen]  toRatio (DecimalLiteral mSign m e) = case mSign of [really-safe-money-gen]  Just False -> Nothing [really-safe-money-gen] - _ -> Just $ fromIntegral m / (10 ^ e) [really-safe-money-gen] + _ -> Just $ fromIntegral m / (1 ^ e) [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Word' [really-safe-money-gen]  fromWord :: Word -> DecimalLiteral [really-safe-money-gen] Testing mutation IntLit at Tsersct/iNnugm emruitca/tDieocni mIanltLLiitte raatl .shrsc:/2N8u9m:e3r3i-c3/5D:e [really-safe-money-gen] c@i@m a-l2L8i6t,e7r a+l2.8h6s,:72 3@6@: [really-safe-money-gen] 4 1t-o4R4a:t [really-safe-money-gen] i@o@ :-:2 3D3e,c7i m+a2l3L3i,t7e r@a@l [really-safe-money-gen]  -->- M>a>y>b ef r(oRmaRtaitoi oN a(t1u r%a l3)) [really-safe-money-gen]  [really-safe-money-gen]  t-o-R aNtoitoh i(nDge [really-safe-money-gen] c ifmraolmLRiatteiroa l: :m SRiagtni om Nea)t u=r acla s-e> mMSaiygbne oDfe [really-safe-money-gen] c i m aJluLsitt eFraalls [really-safe-money-gen] e- f-r>o mNRoatthiion g= [really-safe-money-gen]  -f r o_m R-a>t iJounsatl R$e pfertoemnIdnLtiemgirtaeld m2 5/6 [really-safe-money-gen] (+1f0rT oe^ms Rteai)tn [really-safe-money-gen] ig+o m =u_ t fa-rt>oi moJRnua stItin ot$nL aifltrR oeamptIe ntsterencgd/rLNaiulmm iemtr ei/dc /(0D- [really-safe-money-gen] e1 c0 i m^wa hleeL)ri [really-safe-money-gen] et [really-safe-money-gen] e [really-safe-money-gen]  r a- l- . h|fs r:Co2om3nR6sa:tt4ri1uo-cn4ta4 l:aR [really-safe-money-gen]  e@'p@De et-ce2in3md3aL,li7Lm ii+tt2ee3rd3a ,l:7': [really-safe-money-gen] @f @r [really-safe-money-gen] o m - -a >'->W->o rlfdir'mo [really-safe-money-gen] im tRf [really-safe-money-gen] artoimoW o(r1d %: :3 )W [really-safe-money-gen] o r-d- -N>o tDheicnigm [really-safe-money-gen] a lfLriotmeRraatli [really-safe-money-gen] o :: Ratio Natural -> Maybe DecimalLiteral [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256 [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited 1 [really-safe-money-gen]  where [really-safe-money-gen]  fromRationalRepetendLimited :: [really-safe-money-gen]  -- limit [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:236:41-44: [really-safe-money-gen] @@ -233,7 +233,7 @@ [really-safe-money-gen]  -- >>> fromRatio (1 % 3) [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRatio :: Ratio Natural -> Maybe DecimalLiteral [really-safe-money-gen] -fromRatio = fromRationalRepetendLimited 256 [really-safe-money-gen] +fromRatio = fromRationalRepetendLimited -256 [really-safe-money-gen]  where [really-safe-money-gen]  fromRationalRepetendLimited :: [really-safe-money-gen]  -- limit [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:244:14-15: [really-safe-money-gen] @@ -241,7 +241,7 @@ [really-safe-money-gen]  Ratio Natural -> [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen] - | d == 0 = Nothing [really-safe-money-gen] + | d == 1 = Nothing [really-safe-money-gen]  | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15: [really-safe-money-gen] @@ -241,7 +241,7 @@ [really-safe-money-gen]  Ratio Natural -> [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen] - | d == 0 = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:244:9-15: [really-safe-money-gen] @@ -241,7 +241,7 @@ [really-safe-money-gen]  Ratio Natural -> [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen] - | d == 0 = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:244:9-15: [really-safe-money-gen] @@ -241,7 +241,7 @@ [really-safe-money-gen]  Ratio Natural -> [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen] - | d == 0 = Nothing [really-safe-money-gen] + | not (d == 0) = Nothing [really-safe-money-gen]  | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:245:9-18: [really-safe-money-gen] @@ -242,7 +242,7 @@ [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen]  | d == 0 = Nothing [really-safe-money-gen] - | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen] + | True = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen]  d = denominator rational [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:245:9-18: [really-safe-money-gen] @@ -242,7 +242,7 @@ [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen]  | d == 0 = Nothing [really-safe-money-gen] - | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen] + | False = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen]  d = denominator rational [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:245:9-18: [really-safe-money-gen] @@ -242,7 +242,7 @@ [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen]  | d == 0 = Nothing [really-safe-money-gen] - | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen] + | not (otherwise) = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen]  d = denominator rational [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:264:13TT-ee2ss6tt:ii [really-safe-money-gen] nn@gg@ mm-uu2tt6aa1tt,ii7oo nn+ 2CC6oo1nn,ss7tt BB@oo@oo [really-safe-money-gen] ll aa tt ss rr cc // NN uu mmJeeurrsiitcc //(DDcee,cc iiemm)aa [really-safe-money-gen] ll LL ii tt ee rr aa ll .. hhlsso::n22g66D46i::v11W33i--t21h69L::i [really-safe-money-gen]  [really-safe-money-gen] m@@i@@t --!22c66 13!,,e77 n++s22 66!13n,, [really-safe-money-gen] 77 @@ @@ [really-safe-money-gen]  [really-safe-money-gen]  T e s t i - n - g IT m feJu- sut-ttsa hittIen ifrg(o e cnt'm, hsu Ne teeraa)ge t [really-safe-money-gen] a'ri tseo e pn ae a tC treo enn spds re,t ct Bl/ewooNneonud lgm,c De aairwntvie' Wc tsi/c rtDatchenu/Lc'rNiitnumm miatietlutr Lr i!inicct n/ eitD!rtoeea c liain.n mshtda soel!: cLn2aii [really-safe-money-gen] 6 mt 4dae :elr 1c a 3ill -mi. 2ath 6les : r: [really-safe-money-gen] la2 @il6 @t [really-safe-money-gen] 6- e-:--r 1 2a 3I6l -f1 [really-safe-money-gen]  1 , 9t7 :h [really-safe-money-gen] e+ @r2 @e6 '1 |-s, 2 7 S6a .3 @ m,r@|e7e [really-safe-money-gen]  m p Sb+e .e2t mr6e e 3n mn,d b 7, en rs@w @e n= [really-safe-money-gen]  cJnN auso ns t 't=h t i (Nn tcog u,t [really-safe-money-gen]  r h+ nei )n -i [really-safe-money-gen] g -t [really-safe-money-gen]  Ii fn t to h ea |r edl T'eo rscn u ig-eamD- ai =rlvO e WvNplieoeitrttth heeLtinrihndameg,li [really-safe-money-gen]  [really-safe-money-gen] tl w- i e !m ci c t a !, n e ' s t nt so t p u ! -r|nt-n [really-safe-money-gen] r S yOi. ivtm ne e grim [really-safe-money-gen]  nb -tte hor e an l idn- mes- ic ti=I ,m f aN |slot t theolhe piir> tne=teg' rr [really-safe-money-gen] slya+ il a=n [really-safe-money-gen]  g rN [really-safe-money-gen]  eo pt eh ti en ng d [really-safe-money-gen]  |,+ Fw |ae l |Ssc .ea em n e=' >m t =bN eot|lrtu hrT=ninr n uNngieos [really-safe-money-gen] t t =h= i i nNnN togo ot [really-safe-money-gen] t h h ai i n n dg g e [really-safe-money-gen]  [really-safe-money-gen]  c -i -m a Ol v el | ri t n te hr < ea| - l d-l [really-safe-money-gen] n i- =Om < [really-safe-money-gen] vi et dr, =ts [really-safe-money-gen] ht eo p l it| mr iyS ti. ,nm ge s [really-safe-money-gen] m t b o e p r t nlr ey nti s n !g =n [really-safe-money-gen]  s-|N' o et= h >iS =n. gi l [really-safe-money-gen] n +s = e r|N t o et n h >i n=n s g [really-safe-money-gen] l [really-safe-money-gen]  | = n N o o t t h ( i S n . g m [really-safe-money-gen]  e +|m b ne r < i nn d nl =so [really-safe-money-gen] )n g|=D iFNvaoWltishteih nL=gi [really-safe-money-gen] mN io tt h (i cn g * [really-safe-money-gen]  1 0 ) - -( s Ou vc ec r e|t) h nen sn=s elr t= nN ontsh [really-safe-money-gen] i n g [really-safe-money-gen]  | inn DecimalLiteral (go mS) m e [really-safe-money-gen]  where [really-safe-money-gen]  go = \case [really-safe-money-gen] - Nothing -> Just True [really-safe-money-gen] + Nothing -> Just False [really-safe-money-gen]  s -> s [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  setSignRequired [really-safe-money-gen]  ✓ produces valid values  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:396:23-27: [really-safe-money-gen] @@ -393,5 +393,5 @@ [really-safe-money-gen]  DecimalLiteral mS m e -> DecimalLiteral (go mS) m e [really-safe-money-gen]  where [really-safe-money-gen]  go = \case [really-safe-money-gen] - Nothing -> Just True [really-safe-money-gen] + Nothing -> Just True [really-safe-money-gen]  s -> s [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  setSignRequired [really-safe-money-gen]  ✓ produces valid values  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:337:21-22: [really-safe-money-gen] @@ -334,7 +334,7 @@ [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] -numSign a = if a >= 0 then Nothing else Just False [really-safe-money-gen] +numSign a = if a >= 1 then Nothing else Just False [really-safe-money-gen]  [really-safe-money-gen]  signSignum :: (Num a) => Maybe Bool -> (a -> a) [really-safe-money-gen]  signSignum = \case [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Int [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ can parse any rendered literal  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:396:23-27: [really-safe-money-gen] @@ -393,5 +393,5 @@ [really-safe-money-gen]  DecimalLiteral mS m e -> DecimalLiteral (go mS) m e [really-safe-money-gen]  where [really-safe-money-gen]  go = \case [really-safe-money-gen] - Nothing -> Just True [really-safe-money-gen] + Nothing -> Just not (True) [really-safe-money-gen]  s -> s [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  setSignRequired [really-safe-money-gen]  ✓ produces valid values  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28: [really-safe-money-gen] @@ -106,7 +106,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | One-to-one conversion rate [really-safe-money-gen]  oneToOne :: ConversionRate [really-safe-money-gen] -oneToOne = ConversionRate 1 [really-safe-money-gen] +oneToOne = ConversionRate -1 [really-safe-money-gen]  [really-safe-money-gen]  -- | Invert a 'ConversionRate', to convert in the other direction. [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  convertAll [really-safe-money-gen]  ✓ produces valid results when converting two currencies to one  98.31 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 1000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.10 seconds [really-safe-money-gen]  Test suite took:  0.11 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/ConversionRate.hs:109:27-28: [really-safe-money-gen] @@ -106,7 +106,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | One-to-one conversion rate [really-safe-money-gen]  oneToOne :: ConversionRate [really-safe-money-gen] -oneToOne = ConversionRate 1 [really-safe-money-gen] +oneToOne = ConversionRate 0 [really-safe-money-gen]  [really-safe-money-gen]  -- | Invert a 'ConversionRate', to convert in the other direction. [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  convertAll [really-safe-money-gen]  ✓ produces valid results when converting two currencies to one  56.51 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 1000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.06 seconds [really-safe-money-gen]  Test suite took:  0.07 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46: [really-safe-money-gen] @@ -330,7 +330,7 @@ [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen]  guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Int [really-safe-money-gen]  toInt [really-safe-money-gen]  ✓ renders to valid words  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ can parse any rendered literal  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:332:11-46: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  toInt :: DecimalLiteral -> Maybe Int [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Int [really-safe-money-gen]  toInt [really-safe-money-gen]  ✓ renders to valid words  1.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ can parse any rendered literal  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:304:42-43: [really-safe-money-gen] @@ -301,7 +301,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Natural' [really-safe-money-gen]  fromNatural :: Natural -> DecimalLiteral [really-safe-money-gen] -fromNatural n = DecimalLiteral Nothing n 0 [really-safe-money-gen] +fromNatural n = DecimalLiteral Nothing n 1 [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Natural' [really-safe-money-gen]  toNatural :: DecimalLiteral -> Maybe Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Natural [really-safe-money-gen]  fromNatural [really-safe-money-gen]  ✓ renders to valid decimal literals  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:333:11-46: [really-safe-money-gen] @@ -330,7 +330,7 @@ [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen]  guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] - guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  numSign :: (Ord a, Num a) => a -> Maybe Bool [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Int [really-safe-money-gen]  toInt [really-safe-money-gen]  ✓ renders to valid words  5.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ can parse any rendered literal  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.01 seconds [really-safe-money-gen]  Test suite took:  0.02 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Nlimit, stop trying [really-safe-money-gen] - | e >= l = Nothing [really-safe-money-gen] + | not (e >= l) = Nothing [really-safe-money-gen]  | n < d = [really-safe-money-gen]  let !ns' = S.insert n ns [really-safe-money-gen]  in longDivWithLimit (c * 10) (succ e) ns' (n * 10) [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18: [really-safe-money-gen] @@ -264,7 +264,7 @@ [really-safe-money-gen]  | S.member n ns = Nothing [really-safe-money-gen]  -- Over the limit, stop trying [really-safe-money-gen]  | e >= l = Nothing [really-safe-money-gen] - | n < d = [really-safe-money-gen] + | True = [really-safe-money-gen]  let !ns' = S.insert n ns [really-safe-money-gen]  in longDivWithLimit (c * 10) (succ e) ns' (n * 10) [really-safe-money-gen]  | otherwise = [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:267:13-18: [really-safe-money-gen] @@ -264,7 +264,7 @@ [really-safe-money-gen]  | S.member n ns = Nothing [really-safe-money-gen]  -- Over the limit, stop trying [really-safe-money-gen]  | e >= l = Nothing [really-safe-money-gen] - | n < d = [really-safe-money-gen] + | False = [really-safe-money-gen]  let !ns' = S.insert n ns [really-safe-money-gen]  in longDivWithLimit (c * 10) (succ Tee)s tnisn'g (mnu t*a t1i0o)n [really-safe-money-gen]  I n t L i t a t s|r co/tNhuemrewriisce/ D=e [really-safe-money-gen] ciTmeasltLiintge rmault.ahtsi:o2n6 9N:e4g1a-t4e3 :a [really-safe-money-gen] t@ @s r-c2/6N6u,m7e r+i2c6/6D,e7c i@m@a [really-safe-money-gen] l L i t e r a l . h s :|2 6e7 :>1=3 -l1 8=: [really-safe-money-gen] N@o@t h-i2n6g4 [really-safe-money-gen] , 7 + 2 6 4 , 7 @ @| [really-safe-money-gen]  n < d = [really-safe-money-gen]  | S . m e m b e r n lnest =! nNso't h=i nSg. [really-safe-money-gen] i n s e r t n n s [really-safe-money-gen] --- O v e r t h e l i m i ti,n sltoonpg DtirvyWiintgh [really-safe-money-gen] L i m i t ( c * 1|0 )e (>s=u clc =e )N ontsh'i n(gn [really-safe-money-gen]  -* 1 0 ) [really-safe-money-gen]  + | n < d = [really-safe-money-gen]  + i n l o n g D i v|W intohtL i(mni t< T (edcs) t *i= n [really-safe-money-gen] 0g ) m (u st ua ct ci o en ) I nn st 'L il(ten t a *t! n1ss0r')c [really-safe-money-gen] /= N uS m. ei rn is ce /r Dt e cn|i mnoastl [really-safe-money-gen] hL ei rt we ir sa el . =h [really-safe-money-gen] s : 2 6 9 : 4 1i -n 4 3l :o [really-safe-money-gen] n @g @D il-ve2Wt6i 6t(,hq7L, i +mr2i'6t)6 ,(=7c n@* @ ` [really-safe-money-gen] 1q 0u )o t (R se um c` c d e [really-safe-money-gen]  ) | n es ' > =( n l * = 1 N0 o) t [really-safe-money-gen]  h i in ng [really-safe-money-gen]  l o n g D i v |W i ot th hL|ei rmnwi it+) =2 [really-safe-money-gen]  6+ l6 | , =7 n N@ D |=i v nlWl ie<=tt h dNL! oin=tms [really-safe-money-gen] hi' it n = g( [really-safe-money-gen] cS . *i nT 1seT )ese rts (tit s ni ungn c g cnm l| sume e [really-safe-money-gen] tutn) at ta!` /l, c q D.7 i Mu eh m ao cs+ a yt i:2|l bR m24 L ee a29oi m l3,tt (` L:7he|N li3 er adet9@raot [really-safe-money-gen] te-@wltu r4 [really-safe-money-gen] i.hr (a1 shea ql: esrl ,. [really-safe-money-gen]  :w, h@ =2i rs@ [really-safe-money-gen] 2sI ': +3en )2- : t 22 3=) =32 9 [really-safe-money-gen]  [really-safe-money-gen]  :0n -+- n3,u 4 97m 1 `- : q4+= [really-safe-money-gen]  u12 @ io:2n @ nt [really-safe-money-gen] 0u| R@,m - le@7en2 lom ro2 on`-@at0|ng 2@t , gDd2 [really-safe-money-gen] o(7FDi [really-safe-money-gen] 0 ro aiv ,- t+lvW 7-rh2s i ae2e=t +(tr0 h 2-iw,=lL 23oi7 [really-safe-money-gen] oi 0)ns nm , ae@ gi 7%l)@ Dt [really-safe-money-gen]  [really-safe-money-gen]  i @1 = v( @0 [really-safe-money-gen]  [really-safe-money-gen] - Wc [really-safe-money-gen]  [really-safe-money-gen]  - i t+ -t ( h -o - Lqi R 3 i)n(a ) m -t iel3i % t o)o nn nl 1l0sg%ao 0eT D ln [really-safe-money-gen] te0ri1 g s 'v0:D t(tS [really-safe-money-gen] W [really-safe-money-gen] :i oqi.i vlR,nettD ea gmhoe:ttr pLRc: i'mtiai (o)uymtmNqn t [really-safe-money-gen] iiaa,a=a+tolt l t nLur ni (air': o clta):`n el q +:r =DuI :a- eon q l>nctt )D iRLl e-M`meioec>aqamtn i yul` gnmRboL aDsaaetidti lt Rt [really-safe-money-gen]  vrLi(ee s 'ioNmr r= [really-safe-money-gen] tTna`a c eeat l /lrslud Noat [really-safe-money-gen] r [really-safe-money-gen] - unli a > mg ntl eD-go, R ri> R a iv maI t cWRutn i /iatit o Dttao) n ehitn [really-safe-money-gen]  a cLoia- l iinol [really-safe-money-gen] imman nail ( t lt [really-safe-money-gen] CD olL oe Roi1tnc ant osi itge0Rtm niDr aBal oiaStololnvl.ioLnoaW.eolignlihmn tDg tspaaeiD(h:tltrviDL2y a vei0 [really-safe-money-gen] (sl=Wcm8 Dr iii: [really-safe-money-gen] ecmltmt9 c/Soha - iNinLl(1 muggiLc0 amnDmi : le iit+ [really-safe-money-gen]  Lrmvte @ ii W rq@ tcei(a) e/)tcl -lrD h e2oae=L+m 0nlc [really-safe-money-gen] i Sn5g i-mqis,Dmm i)g 7iSa t nr vils e '+WgLi0 m [really-safe-money-gen] 2inig n 0t tn0se [really-safe-money-gen] 5hmeS ),L riSr 7ieag.'= m)lne [really-safe-money-gen]  [really-safe-money-gen] @i .um -@t=hmp [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen] s t :-:mys-: 2S [really-safe-money-gen] i- [really-safe-money-gen]  0i+g s8g nN i:n So g5 it n-( gh S1f ni i0r un g:o mg n [really-safe-money-gen] m [really-safe-money-gen]  u@Ilm m@noSf tnirNm-eggoaS2gDnmti0ri Rug5av(arn,l fta 7 =ril( m oo f+ lmn-r2/oIa>o0 nnl [really-safe-money-gen] m5(gt I,1De:n70ig:t vr e@^WaRg@ ilar [really-safe-money-gen] et ta )hmil-)L o - [really-safe-money-gen] i/nm +m a N i(l/o t1 ts 0-(hi0 >1ig ^ 0nn1 M gS ea^ [really-safe-money-gen] iS)y g.)befne [really-safe-money-gen] e)rum+ )omp D [really-safe-money-gen] m t e+Rmysc aS [really-safe-money-gen] ii ti gmsig [really-safe-money-gen] naion Slgn iLna( giSlf nti r ueg:o mrn:m au I mlmRn S [really-safe-money-gen]  atli mteogfSignnriorg ognaD(mnalifR l vra( mWotf- imir>/tIoo hnnmM(LtaIa0ielny mg tb^ir(ee tang e l rD): :ae):m%lc [really-safe-money-gen]  [really-safe-money-gen]  i /dmm [really-safe-money-gen]  ) a ( [really-safe-money-gen] /l- 1- L- (i ^ -t| |1e e 0rP )n aa ) ^lr [really-safe-money-gen] < [really-safe-money-gen] sN e ea [really-safe-money-gen] 0)f t )rau-= [really-safe-money-gen] o r- m'a ( [really-safe-money-gen] RDl|\ ae (-tc-PD-ii>ae om [really-safe-money-gen] rc|nasi alemPlL aa ialr(t Lsne'ie rDt :aeea%lcr 'ia'd mlD)fa e [really-safe-money-gen] rl_c-oL i mimm t a|aeel r)Ln'a i Rl-te t r0ifDa orel= oc' Nmi (a mf\taar(u loDr'LmeaRi clatai'te m [really-safe-money-gen] ir'a oaRl- laL-N ti [really-safe-money-gen] a(ittJoeuu rrsNaatall t 'Fu_ [really-safe-money-gen] ar lam-sl -e'e [really-safe-money-gen] ) [really-safe-money-gen] ) m-- ->e [really-safe-money-gen]  )D em aflrLoimtReartailo ((Jfursotm IFnatlesger)a lm (ea)b s< $n>) f%r ofmrRoamtIinot e(gfrraolm Idn)t [really-safe-money-gen] e+g r a|l n( as eD e=c i(m\a(lDLeictiemraallL i(tJeursatl F_a lms ee)) m- >e )D em aflrLoimtReartailo ((Jfursotm IFnatlesger)a lm (ea)b s< $n>) f%r ofmrRoamtIinot e(gfrraolm Idn)t [really-safe-money-gen] e g r a|l o(tahbesr wni)s e% =f rformoImnRtaetgiroa l( fdr)o [really-safe-money-gen] m I n t|e gortahle rnw i%s ef r=o mfIrnotmeRgartailo d()f [really-safe-money-gen] r o [really-safe-money-gen] m I-n-t e|g rTaulr nn a% 'fDreocmiImnatleLgirtaelr adl)' [really-safe-money-gen]  i [really-safe-money-gen] n t-o- a| 'TRuartni oan a'lD'e [really-safe-money-gen] cimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:5-10: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | True = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:62-67: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just True) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:208:5-10: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | not (n < 0) = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:208:62-67: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:208:62-67: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just not (False)) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:209:5-14: [really-safe-money-gen] @@ -206,7 +206,7 @@ [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen]  | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) s tfirnogm Rmauttiaot i(ofnr oCmoInnstteBgoroall a(ta bssr cn/)N u%m efrriocm/IDnetceigmraallL idt)e [really-safe-money-gen] r-a l .|h so:t2h0e9r:w5i-s1e4 := [really-safe-money-gen]  @f@r o-m2R0a6t,i7o +(2f0r6o,m7I n@t@e [really-safe-money-gen] g rfarlo mnR a%t ifornoamlI n:t:e gRraatli odn)a [really-safe-money-gen] l+ - >| MTaryubee =D efcriommaRlaLtiitoe r(aflr [really-safe-money-gen] o mfIrnotmeRgartailo nna l% (fnr o:m%I ndt)e [really-safe-money-gen] g r a l| dn) [really-safe-money-gen] < [really-safe-money-gen] 0 -=- (|\ (TDuercni maa l'LDietceirmaall L_i tme rea)l '- >i nDteoc iam a'lRLaittieornaall '( [really-safe-money-gen] J u-s-t [really-safe-money-gen]  False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] - | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen] + | False = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen]  -- [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:209:5-14: [really-safe-money-gen] @@ -206,7 +206,7 @@ [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen]  | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] - | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen] + | not (otherwise) = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen]  -- [really-safe-money-gen] Testing mutation ListLit at src/Numeric/DecimalLiteral.hs:186:15-25: [really-safe-money-gen] @@ -183,7 +183,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  goFrac m e = reverse (go e (reverse (show m))) [really-safe-money-gen]  go :: Word8 -> String -> String [really-safe-money-gen] - go 0 [] = ['.', '0'] [really-safe-money-gen] + go 0 [] = ['.', '0'] [really-safe-money-gen]  go 0 s = '.' : s [really-safe-money-gen]  go e [] = '0' : go (pred e) [] [really-safe-money-gen]  go e (c : cs) = c : go (pred e) cs [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30: [really-safe-money-gen] @@ -142,7 +142,7 @@ [really-safe-money-gen]  parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a [really-safe-money-gen]  parseDigits f z = do [really-safe-money-gen]  c <- ReadP.satisfy Char.isDigit [really-safe-money-gen] - let digit T=e sCthianrg. omrudt act i-o n4 8L [really-safe-money-gen] i+s t Lliett adti gsirtc /=N uCmhearri.co/rDde cci m-a l0L [really-safe-money-gen] i t e rcaals.eh sf: 1z8 6d:i1g5i-t2 5o:f [really-safe-money-gen]  [really-safe-money-gen] @ @ - 1 8N3o,t7h i+n1g8 3-,>7 f@a@i [really-safe-money-gen] l [really-safe-money-gen] " F a i l egdo Ftroa cs tme pe t=h er efvierrsste d(iggoi te" [really-safe-money-gen] ( r e v e rJsues t( sah o-w> mR)e)a)d [really-safe-money-gen] P . l o o kg o> >:=: gWoo rad [really-safe-money-gen] 8 -> String -> String [really-safe-money-gen] - go 0 [] = ['.', '0'] [really-safe-money-gen] + go 0 [] = ['.', '0'] [really-safe-money-gen]  go 0 s = '.' : s [really-safe-money-gen]  go e [] = '0' : go (pred e) [] [really-safe-money-gen]  go e (c : cs) = c : go (pred e) cs [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30: [really-safe-money-gen] @@ -142,7 +142,7 @@ [really-safe-money-gen]  parseDigits :: (a -> Int -> Maybe aT)e s-t>i nag -m>u tRaetaidoPn a [really-safe-money-gen] IT neptsaLtriistne gDa itmg uisttrasct /ifNo unzm eC=ro indcso/t [really-safe-money-gen] DB eo co ilcm aa l eIwtnh ted ri-eg> [really-safe-money-gen] i tM a =y b Cegh oaa r)!. ao- r>[d ] a c = - ->r e1Rt [really-safe-money-gen] eu ar dn P c aaa [really-safe-money-gen] s [really-safe-money-gen]  e p fa r zsg eodD ii!ggaii tt( sco ff: [really-safe-money-gen]  zc s =) [really-safe-money-gen]  d-No o [really-safe-money-gen]  t h i nc g | < --C> h Raferaa.idilPs .D"siFagatiiitls efcdy =tC ohd aosr [really-safe-money-gen] t.+ei ps D ti hg ei t|f [really-safe-money-gen]  i-Fr as ltls eedt i =gd iidtgo"i [really-safe-money-gen]  [really-safe-money-gen] t = C h Ja ur s. to r ad_ -c<> - - R Re4Tea8ead [really-safe-money-gen] sdP+tP. i.l ngolgeoe tktm [really-safe-money-gen]  u >dt >ia =gt ii gto o n = a C [really-safe-money-gen] Co hn aslrte.Btoo roddli gcai tt- s=-r 4cC8/h [really-safe-money-gen] Na ur m. eocrraidsc e/c D fe- c zi4 m8da [really-safe-money-gen] il gL ii tt e or fa [really-safe-money-gen] l . h s :c 1aN5so2et: h9fi- n2ag3 :d- [really-safe-money-gen] i>@g @if ta- i1ol4f 9 [really-safe-money-gen] ",F7a i+l1e4d9 ,t7o @s@t [really-safe-money-gen] e p twhhee rfei [really-safe-money-gen] r s t d iggoi t!"a [really-safe-money-gen]  [ ] = Jruesttu ran -a> [really-safe-money-gen]  R e a d Pg.ol o!oak (>c> =: gcos )a [really-safe-money-gen]  [really-safe-money-gen] -T e s t i n g| mCuhtaart.iiosnD iIgnittL ict =a td os [really-safe-money-gen] r+c / N u m e r|i cT/rDueec i=m adloL [really-safe-money-gen] i t e r a l . h s : 1 5_4 :<3-6 -R3e8a:d [really-safe-money-gen] P@.@g e-t1 [really-safe-money-gen] 5 1 , 7 + 1 5 1 , 7 l@e@t [really-safe-money-gen]  d iT ge is ttg io=n g!C ahm au(rtc.a otT:rie dosc ntsc i) Nn [really-safe-money-gen] -eg g 4am 8tu [really-safe-money-gen] et a at ti| o snC r h cIa /nr Nt. uLi misceTtDare isisagectti /i tfDns egrcac c im/=dmuN iatudglamoiLte [really-safe-money-gen] tiir toi oenc fr / [really-safe-money-gen] aID lne T.tc ehLi ssim t:ta i1 l n5aL_g2ti : ti etst t t rhf [really-safe-money-gen] =ciac - /ni) CNgl hu = am-" N re>Fdo .r aot oifi [really-safe-money-gen] h rcal i d/ie n Dld g ce l c"t -e-iFo >t ma 4ais fd8llt ai [really-safe-money-gen] Lee ig+idp li t _ t ett " roht 1 s d [really-safe-money-gen] @tg= i @ o g [really-safe-money-gen] a C i 'ah t 'a - rJ= >c.u sosC g [really-safe-money-gen] rth o-d a ar a c'.c ' oa --rscc >deas 4 s [really-safe-money-gen] |8gcfe [really-safe-money-gen] o o -aft a h '-dae 4i r c8gdw s [really-safe-money-gen] iii [really-safe-money-gen]  tgs - ie ot f = [really-safe-money-gen] o c fra [really-safe-money-gen] es te| u rfo n tc aha a es [really-safe-money-gen] dre +iw gif is teaN o o=dtN f iho| [really-safe-money-gen] rgit einhTttgiru nuro-genf> [really-safe-money-gen]  -=a f> [really-safe-money-gen]  a r+ ife lat iu "lr F n a" iFa| la [really-safe-money-gen]  ei F dl [really-safe-money-gen] a e lNtd-soo -et t hso|=it nesRrgptee ent-tpdu>h er etrnf h adeaaii [really-safe-money-gen] lgdd iie [really-safe-money-gen] "tgc F"ii-a [really-safe-money-gen] tm-i "a l [really-safe-money-gen] l|e d lR iet tno ed res art l e ap t odtJ ehu acesJ i tusmd staiatrlg' i i anlt-'gi"> [really-safe-money-gen] t [really-safe-money-gen]  - e g>-r o -a g [really-safe-money-gen] l ao ' tT aoe c' s s at [really-safe-money-gen] c i ssn [really-safe-money-gen] tg -r imJ nuu gts [really-safe-money-gen] at t -ia|-o' [really-safe-money-gen] n o -tI>hn etgrLowi itas 'ea tc= s s [really-safe-money-gen] rrectT/ueNrsuntm ieanr [really-safe-money-gen] gi+ c m/ uD te ac ti im|oa nln LoIitnt te(Lroiattlh .eahrtsw :is1sr3ec9)/: N2=u7 m-re2er9ti:uc [really-safe-money-gen] r/@nD@ e ac- [really-safe-money-gen] i1 m3 [really-safe-money-gen] a6 l,-L7-i t+|e1 r3Ra6el,n.7dh es@r:@ 1 [really-safe-money-gen] a3 9sd:te2ec7pi-Fm2ra9al:c [really-safe-money-gen] tl@ii@ot ne- r1(a3ml6, , t7eo ) + a1d 3is6gt,ir7ti n@=g@ [really-safe-money-gen]  [really-safe-money-gen] J u-ss-tt [really-safe-money-gen] e p(Fmr a*c t1i0o n+ (fmr,o meI)n tdeiggriatl =d iJguistt, (smu c*c 1e0) [really-safe-money-gen] + [really-safe-money-gen] f rsotmeIpn t:e:g rNaalt udriagli t-,> sIunctc -e>) [really-safe-money-gen] M a [really-safe-money-gen] y bset eNpa t:u:r aNla [really-safe-money-gen] t-usrtaelp -a> dIingti t- >= MJauysbte $N aat u*r a1l0 [really-safe-money-gen]  -+s tferpo maI ndtieggirta l= dJiugsitt [really-safe-money-gen] $+ sat e*p 1a0 d+i gfirto m=I nJtuesgtr a$l ad i*g i0t [really-safe-money-gen] ++ sftreopm Ian tdeiggriatl =d iJguistt [really-safe-money-gen]  ${ -a# *I N1L I+N Ef rsotmeIpn t#e-g}r [really-safe-money-gen] a l [really-safe-money-gen]  dpiagriste [really-safe-money-gen] D i{g-i#t sI N:L:I N(Ea s-t>e pI n#t- }- [really-safe-money-gen] > [really-safe-money-gen] M apyabres eaD)i g-i>t sa :-:> (Rae a-d>P Ian [really-safe-money-gen] t -> Maybe a) -> a -> ReadP a [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41: [really-safe-money-gen] @@ -133,7 +133,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8) [really-safe-money-gen]  stepFraction (_, 255) _ = Nothing [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e) [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 0 + fromIntegral digit, succ e) [really-safe-money-gen]  [really-safe-money-gen]  step :: Natural -> Int -> Maybe Natural [really-safe-money-gen]  step a digit = Just $ a * 10 + fromIntegral digit [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:136:39-41: [really-safe-money-gen] @@ -133,7 +133,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  stepFraction :: (Natural, Word8) -> Int -> Maybe (Natural, Word8) [really-safe-money-gen]  stepFraction (_, 255) _ = Nothing [really-safe-money-gen] -stepFraction (m, e) digit = Just (m * 10 + fromIntegral digit, succ e) [really-safe-money-gen] +stepFraction (m, e) digit = Just (m * 1 + fromIntegral digit, succ e) [really-safe-money-gen]  [really-safe-money-gen]  step :: Natural -> Int -> Maybe Natural [really-safe-money-gen]  step a digit = Just $ a * 10 + fromIntegral digit [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = True || c == '+' [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-30: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = False || c == '+' [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:22-30: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = not (c == '-') || c == '+' [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = c == '-' || True [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] umeric/DecimalLiteral.hs:332:11-46: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  toInt :: DecimalLiteral -> Maybe Int [really-safe-money-gen]  toInt dl = do [really-safe-money-gen]  n <- toInteger dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Int) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  guard $ n >= fromIntegral (minBound :: Int) [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Int [really-safe-money-gen]  toInt [really-safe-money-gen]  ✓ renders to valid words  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ can parse any rendered literal  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47: [really-safe-money-gen] @@ -296,7 +296,7 @@ [really-safe-money-gen]  toWord :: DecimalLiteral -> Maybe Word [really-safe-money-gen]  toWord dl = do [really-safe-money-gen]  n <- toNatural dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word) [really-safe-money-gen] + guard $ False [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Natural' [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Natural [really-safe-money-gen]  fromNatural [really-safe-money-gen]  ✓ can parse any rendered literal  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Word [really-safe-money-gen]  fromWord [really-safe-money-gen]  ✓ can parse any rendered literal  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:299:11-47: [really-safe-money-gen] @@ -296,7 +296,7 @@ [really-safe-money-gen]  toWord :: DecimalLiteral -> Maybe Word [really-safe-money-gen]  toWord dl = do [really-safe-money-gen]  n <- toNatural dl [really-safe-money-gen] - guard $ n <= fromIntegral (maxBound :: Word) [really-safe-money-gen] + guard $ True [really-safe-money-gen]  pure $ fromIntegral n [really-safe-money-gen]  [really-safe-money-gen]  -- | Construct a 'DecimalLiteral' from a 'Natural' [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Natural [really-safe-money-gen]  fromNatural [really-safe-money-gen]  ✓ can parse any rendered literal  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Word [really-safe-money-gen]  fromWord [really-safe-money-gen]  ✓ can parse any rendered literal  1.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 200 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:245:9-18: [really-safe-money-gen] @@ -242,7 +242,7 @@ [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen]  | d == 0 = Nothing [really-safe-money-gen] - | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen] + | True = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen]  d = denominator rational [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.07 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:245:9-18: [really-safe-money-gen] @@ -242,7 +242,7 @@ [really-safe-money-gen]  Maybe DecimalLiteral [really-safe-money-gen]  fromRationalRepetendLimited l rational [really-safe-money-gen]  | d == 0 = Nothing [really-safe-money-gen] - | otherwise = toLiteral Nothing <$> longDiv num [really-safe-money-gen] + | False = toLiteral Nothing <$> longDiv num [really-safe-money-gen]  where [really-safe-money-gen]  toLiteral mSign (m, e) = DecimalLiteral mSign m (fromIntegral e) [really-safe-money-gen]  d = denominator rational [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.09 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:270:13-22: [really-safe-money-gen] @@ -267,7 +267,7 @@ [really-safe-money-gen]  | n < d = [really-safe-money-gen]  let !ns' = S.insert n ns [really-safe-money-gen]  in longDivWithLimit (c * 10) (succ e) ns' (n * 10) [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  let (q, r') = n `quotRem` d [really-safe-money-gen]  in longDivWithLimit (c + q) e ns r' [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.08 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:270:13-22: [really-safe-money-gen] @@ -267,7 +267,7 @@ [really-safe-money-gen]  | n < d = [really-safe-money-gen]  let !ns' = S.insert n ns [really-safe-money-gen]  in longDivWithLimit (c * 10) (succ e) ns' (n * 10) [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  let (q, r') = n `quotRem` d [really-safe-money-gen]  in longDivWithLimit (c + q) e ns r' [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.07 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:209:5-14: [really-safe-money-gen] @@ -206,7 +206,7 @@ [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen]  | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] - | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen] + | True = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.10 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:208:9-10: [really-safe-money-gen] @@ -205,7 +205,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen] - | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] + | n < 1 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen]  | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.06 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.00 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:209:5-14: [really-safe-money-gen] @@ -206,7 +206,7 @@ [really-safe-money-gen]  fromRational :: Rational -> Maybe DecimalLiteral [really-safe-money-gen]  fromRational (n :% d) [really-safe-money-gen]  | n < 0 = (\(DecimalLiteral _ m e) -> DecimalLiteral (Just False) m e) <$> fromRatio (fromIntegral (abs n) % fromIntegral d) [really-safe-money-gen] - | otherwise = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen] + | False = fromRatio (fromIntegral n % fromIntegral d) [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'DecimalLiteral' into a 'Rational' [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteraTesting mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:34-42: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = c == '-' || False [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation Negate at src/Numeric/DecimalLiteral.hs:119:34-42: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = c == '-' || not (c == '+') [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = True [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:119:22-42: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  decimalLiteralP :: ReadP DecimalLiteral [really-safe-money-gen]  decimalLiteralP = do [really-safe-money-gen]  let isSignChar :: Char -> Bool [really-safe-money-gen] - isSignChar c = c == '-' || c == '+' [really-safe-money-gen] + isSignChar c = False [really-safe-money-gen]  [really-safe-money-gen]  mSign <- ReadP.option Nothing $ do [really-safe-money-gen]  signChTaers t1 2B0o,o7l [really-safe-money-gen] @-@ [really-safe-money-gen]  [really-safe-money-gen]  imsSSiiggnn C do [really-safe-money-gen]  r <- Account.subtract a account [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Account.zero [really-safe-money-gen] + if True [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:134:12-29: [really-safe-money-gen] @@ -131,7 +131,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Account.subtract a account [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Account.zero [really-safe-money-gen] + if False [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/MulTteisATtceicsnotgui nnmtgu. thmasut:ti1ao3tn4i :oN9ne- g3Ca7ot:ne [really-safe-money-gen] s @ta@Bt o -os1lr3 c1a/,tM7 o sn+re1cy3//1MM,ou7nl et@yi@/A [really-safe-money-gen] Mc uc lo tu in AtJc.uchsostu: n1at3 .4-h:>s1 :2d1-o22 [really-safe-money-gen] 09 :: 1 [really-safe-money-gen]  2@ -@ 2 9- :1r [really-safe-money-gen] 3 @1<@,- 7 - A1+c11c73o,1u7,n 7t+ .1@s1@u7 [really-safe-money-gen] b, t7 r a@ c@ t [really-safe-money-gen] J ua s ta c acJ ou-us>nt t d [really-safe-money-gen] ao [really-safe-money-gen]  - > d o [really-safe-money-gen]  J u rs t < -$ [really-safe-money-gen]  A-rc c do [really-safe-money-gen]  r <- Account.add a account [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Account.zero [really-safe-money-gen] + if False [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:120:12-29: [really-safe-money-gen] @@ -117,7 +117,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Account.add a account [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Account.zero [really-safe-money-gen] + T e sitfi nngo tm u(tra t=i=o nA cCcoonudnFtl.izpe raot) [really-safe-money-gen] s r c / M o n e y / M utlhteinA cMc.oduenlte.thes :c1u2r0r:e9n-c3y7 :m [really-safe-money-gen]  [really-safe-money-gen] @ @ - 1 1 7 , 7 + 1e1l7s,e7 M@.@i [really-safe-money-gen] n s e r t Jcuusrtr ean c-y> rd om [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  r <- Account.add a account [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Account.zero [really-safe-money-gen] + if r == Account.zero [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if True [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if False [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAccount.hs:78:3-52: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if amount == Account.zero [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30: [really-safe-money-gen] @@ -66,7 +66,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen] - a /= Account.zero [really-safe-money-gen] + True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  -- TODO no empty currencies [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:78:6-28: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if not (amount == Account.zero) [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30: [really-safe-money-gen] @@ -66,7 +66,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen] - a /= Account.zero [really-safe-money-gen] + False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  -- TODO no empty currencies [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAccount.hs:69:13-30: [really-safe-money-gen] @@ -66,7 +66,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen] - a /= Account.zero [really-safe-money-gen] + not (a /= Account.zero) [really-safe-money-gen]  T e]s [really-safe-money-gen] t i [really-safe-money-gen] n g- -m uTtOaDtOi onno LeimspttLyi tc uartr esnrcci/eMso [really-safe-money-gen] ney/MultiAccount.hs:66:7-8: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where [really-safe-money-gen]  validate ma@(MultiAccount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen]  a /= Account.zero [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where [really-safe-money-gen]  validate ma@(MultiAccount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen]  a /= Account.zero [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:451:14-23: [really-safe-money-gen] @@ -448,7 +448,7 @@ [really-safe-money-gen]  DistributedIntoZeroChunks -> DistributedIntoZeroChunks [really-safe-money-gen]  DistributedZeroT eT-se>ts itDniigns gtm rumitubatutatiteoidnoZ neI rnCoto [really-safe-money-gen] Ln is tt B ao to l s ra ctD/ iMssortncre/iyMb/ouAntceecydo/IuAnncttco.oEhuqsnu:ta4.l2hC1sh::u34n25k-1s3: 31n:4u [really-safe-money-gen] -m@2b@3e :r- [really-safe-money-gen] O4@f1@C8 h,-u74n 4k+8s4, 17c8 h,+u74n 4k@8 @,- [really-safe-money-gen] 7> [really-safe-money-gen] m@-@ [really-safe-money-gen]  u l t i p l iyDf i :sa:t r>Ii=nb tuz3te2er do-I [really-safe-money-gen] >n+ t Ao cZ ce or uo nC th u -n >ki sfM a-Ty>rb ueDe i [really-safe-money-gen] As ct cr oi ub nu ttT [really-safe-money-gen] ee ds mIt uni ltn tog iZ tpemhlrueyotn Ca fhtDauiicnostkntos rr [really-safe-money-gen] Ci oba nuc dtc Feo ldu iIn pnt t ao=DtE [really-safe-money-gen] i q ssu tra rclli/CebMhtuou tnnaeekfdys Z/ =eAn rcu(ocmf obr-ueo>nrm tOID.fnihCtsshet:ugr4nri5kab1slu: t1(:e1P:d-o Z7sIe6inr:tto [really-safe-money-gen] i3 [really-safe-money-gen] @v2 @e - -c> 4h 4uW 8no ,kr 7)d [really-safe-money-gen] 3D+ 2i4 )s4 t8 (r, (i7 Pb ru@ et@ le [really-safe-money-gen]  ud dI en .t eao lbE ssq e u :a D:lDi CisIhstnutrtnri3kib2sbu ut-nte>ued mdIIbInnenttrto3OoE2fZq)Ceu hrafuolanCCckhhtsuuo nnrckk)hss [really-safe-money-gen] u -n-n k>u m -Db >ie [really-safe-money-gen] sr -tOf rf iC= bh uuc tna eks dse I n(( tNcioeofZgm eaparta oir>Cve=he u fzncaekhcrsuto [really-safe-money-gen] no [really-safe-money-gen]  kr+ ) [really-safe-money-gen] 0 , c o m p D a i r s eitD fria iscFbtcauroltiusebnedut [really-safe-money-gen] Zt eez rde oIr no -t) >o Uo Dnf ie [really-safe-money-gen]  sq+ tu a r l itC bhh ueu tnnfe k dDs=Zi esncrtuaorms [really-safe-money-gen] ibe be ur( tOc efo dLm Iap nra tgr oeeDEr iqCfsuhataucrlntiCkobhsruu tnl1eka,dsr I gcnneoturmomCpEbhaqeururneaOk lf aCCnchhucuumonnbukkenssrt O n(fzuPSemomrbsaoeil)rtl OieofvrfCeC [really-safe-money-gen] h h ucu nhn kuk sns k c)s h [really-safe-money-gen] m u a n l(k lE eQ- r,> C [really-safe-money-gen]  h_- u) n k- > - >c e [really-safe-money-gen] o ln ss et iDzfie srato r [really-safe-money-gen] >i =b u zt ee rd oI [really-safe-money-gen] n +t o( E_ q, u aE lQ C) h u- n>ik fsc oann us>mt=b ezzreeOrrfooC [really-safe-money-gen]  [really-safe-money-gen] h u n k s ( N e g( aG tT i, v teGh Tec)nh u-Dn>ik s)Pt [really-safe-money-gen] or si ib tu it ve ed [really-safe-money-gen] I n tDoiEsqturailbCuhtuendkIsn tnouUmnbeeqruOaflCChhuunnkkss (nPuomsbietriOvfeL acrhguenrkC)h [really-safe-money-gen] u n k s l a r g e r C h uTenelkss teni unDmgib semtrurOtifabStumitaoelndl IeNnretCgohaEutqneuk asal tCs hmsuarnlckl/seM ronCnuhemuybn/ekAr cO-cf>oC [really-safe-money-gen] uhnutn.khss :(4N5e1g:a1t4i-v2e3 :c [really-safe-money-gen] h@u@n k-)4 [really-safe-money-gen] 4 8 , 7 + 4 4 8 ,D7i s@t@r [really-safe-money-gen] i b u t e d I n t oDUinsetqruiabluCtheudnIknst onZuemrboeCrhOufnLkasr g-e>r CDhiusntkrsi bluatregdeIrnCthouZnekr onCuhmubnekrsO [really-safe-money-gen] f S m a l l e r C hDuinsktsr isbmuatleldeZreCrhou n-k> -D>i [really-safe-money-gen] stributedZero [really-safe-money-gen]  DistributedIntoEqualChunks numberOfChunks chunk -> [really-safe-money-gen] - if a >= zero [really-safe-money-gen] + if not (a >= zero) [really-safe-money-gen]  then DistributedIntoEqualChunks numberOfChunks (Positive chunk) [really-safe-money-gen]  else DistributedIntoEqualChunks numberOfChunks (Negative chunk) [really-safe-money-gen]  DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk -> [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23: [really-safe-money-gen] @@ -452,7 +452,7 @@ [really-safe-money-gen]  then DistributedIntoEqualChunks numberOfChunks (Positive chunk) [really-safe-money-gen]  else DistributedIntoEqualChunks numberOfChunks (Negative chunk) [really-safe-money-gen]  DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk -> [really-safe-money-gen] - if a >= zero [really-safe-money-gen] + if True [really-safe-money-gen]  then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk) [really-safe-money-gen]  else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:455:14-23: [really-safe-money-gen] @@ -452,7 +452,7 @@ [really-safe-money-gen]  then DistributedIntoEqualChunks numberOfChunks (Positive chunk) [really-safe-money-gen]  else DistributedIntoEqualChunks numberOfChunks (Negative chunk) [really-safe-money-gen]  DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk -> [really-safe-money-gen] - if a >= zero [really-safe-money-gen] + if False [really-safe-money-gen]  then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk) [really-safe-money-gen]  else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:455:14-23: [really-safe-money-gen] @@ -452,7 +452,7 @@ [really-safe-money-gen]  then DistributedIntoEqualChunks numberOfChunks (Positive chunk) [really-safe-money-gen]  else DistributedIntoEqualChunks numberOfChunks (Negative chunk) [really-safe-money-gen]  DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk -> [really-safe-money-gen] - if a >= zero [really-safe-money-gen] + if not (a >= zero) [really-safe-money-gen]  then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk) [really-safe-money-gen]  T e s t i n g m u t aetlisoen DCiosntdrFilbiupt eadtI nstrocU/nMeoqnueayl/CAhcucnokusn tn.uhmsb:e4r5O5f:S1m1a-l1l3e6r:C [really-safe-money-gen] h@u@n k-s4 5(2N,e7g a+t4i5v2e, 7s m@a@l [really-safe-money-gen] l e r C h u n k ) n u m btehreOnf LDairsgterriCbhuutnekdsI n(tNoeEgqautailvCeh ulnakrsg enruCmhbuenrkO)f [really-safe-money-gen] C h [really-safe-money-gen] unks (Positive chunk) [really-safe-money-gen]  else DistributedIntoEqualChunks numberOfChunks (Negative chunk) [really-safe-money-gen]  DistributedIntoUnequalChunks numberOfLargerChunks largerChunk numberOfSmallerChunks smallerChunk -> [really-safe-money-gen] - if a >= zero [really-safe-money-gen] + if a >= zero [really-safe-money-gen]  then DistributedIntoUnequalChunks numberOfLargerChunks (Positive largerChunk) numberOfSmallerChunks (Positive smallerChunk) [really-safe-money-gen]  else DistributedIntoUnequalChunks numberOfSmallerChunks (Negative smallerChunk) numberOfLargerChunks (Negative largerChunk) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:495:17-18: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if f >= 1 [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if True [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:495:12-18: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if False [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:495:12-18: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if not (f >= 0) [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:495:9-41: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if f >= 0 [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:503:15-16: [really-safe-money-gen] @@ -500,7 +500,7 @@ [really-safe-money-gen]  RoundNearest -> RoundNearest [really-safe-money-gen]  (ma, ar) = fractionRatio ro account af [really-safe-money-gen]  r = (realToFrac :: Ratio Natural -> Rational) ar [really-safe-money-gen] - in if f >= 0 [really-safe-money-gen] + in if f >= 1 [really-safe-money-gen]  then (ma, r) [really-safe-money-gen]  else (negate <$> ma, -r) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16: [really-safe-money-gen] @@ -500,7 +500,7 @@ [really-safe-money-gen]  RoundNearest -> RoundNearest [really-safe-money-gen]  (ma, ar) = fractionRatio ro account af [really-safe-money-gen]  r = (realToFrac :: Ratio Natural -> Rational) ar [really-safe-money-gen] - in if f >= 0 [really-safe-money-gen] + in if False [really-safe-money-gen]  then (ma, r) [really-safe-money-gen]  else (negate <$> ma, -r) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:503:7-33: [really-safe-money-gen] @@ -500,7 +500,7 @@ [really-safe-money-gen]  RoundNearest -> RoundNearest [really-safe-money-gen]  (ma, ar) = fractionRatio ro account af [really-safe-money-gen]  r = (realToFrac :: Ratio Natural -> Rational) ar [really-safe-money-gen] - in if f >= 0 [really-safe-money-gen] + in if f >= 0 [really-safe-money-gen]  then (ma, r) [really-safe-money-gen]  else (negate <$> ma, -r) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:503:10-16: [really-safe-money-gen] @@ -500,7 +500,7 @@ [really-safe-money-gen]  RoundNearest -> RoundNearest [really-safe-money-gen]  (ma, ar) = fractionRatio ro account af [really-safe-money-gen]  r = (realToFrac :: Ratio Natural -> Rational) ar [really-safe-money-gen] - in if f >= 0 [really-safe-money-gen] + in if not (f >= 0) [really-safe-money-gen]  then (ma, r) [really-safe-money-gen]  else (negate <$> ma, -r) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:503:10-16: [really-safe-money-gen] @@ -500,7 +500,7 @@ [really-safe-money-gen]  RoundNearest -> RoundNearest [really-safe-money-gen]  (ma, ar) = fractionRatio ro account af [really-safe-money-gen]  r = (realToFrac :: Ratio Natural -> Rational) ar [really-safe-money-gen] - in if f >= 0 [really-safe-money-gen] + in if True [really-safe-money-gen]  then (ma, r) [really-safe-money-gen]  else (negate <$> ma, -r) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20: [really-safe-money-gen] @@ -230,7 +230,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Account [really-safe-money-gen]  fromRational quantisationFactor r = [really-safe-money-gen]  let r' = Prelude.abs r [really-safe-money-gen] - f = if r >= 0 then Positive else Negative [really-safe-money-gen] + f = if True then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromRational quantisationFactor r' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'Rational' into an amount of money. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:233:14-20: [really-safe-money-gen] @@ -230,7 +230,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Account [really-safe-money-gen]  fromRational quantisationFactor r = [really-safe-money-gen]  let r' = Prelude.abs r [really-safe-money-gen] - f = if r >= 0 then Positive else Negative [really-safe-money-gen] + f = if False then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromRational quantisationFactor r' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'Rational' into an amount of money. [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:233:19-20: [really-safe-money-gen] @@ -230,7 +230,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Account [really-safe-money-gen]  fromRational quantisationFactor r = [really-safe-money-gen]  let r' = Prelude.abs r [really-safe-money-gen] - f = if r >= 0 then Positive else Negative [really-safe-money-gen] + f = if r >= 1 then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromRational quantisationFactor r' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'Rational' into an amount of money. [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:197:19-20: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if d >= 1 then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:233:14-20: [really-safe-money-gen] @@ -230,7 +230,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Account [really-safe-money-gen]  fromRational quantisationFactor r = [really-safe-money-gen]  let r' = Prelude.abs r [really-safe-money-gen] - f = if r >= 0 then Positive else Negative [really-safe-money-gen] + f = if not (r >= 0) then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromRational quantisationFactor r' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'Rational' into an amount of money. [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:233:11-48: [really-safe-money-gen] @@ -230,7 +230,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Account [really-safe-money-gen]  fromRational quantisationFactor r = [really-safe-money-gen]  let r' = Prelude.abs r [really-safe-money-gen] - f = if r >= 0 then Positive else Negative [really-safe-money-gen] + f = if r >= 0 then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromRational quantisationFactor r' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn a 'Rational' into an amount of money. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if False then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:197:14-20: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if not (d >= 0) then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:197:14-20: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if True then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] lSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.08 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30: [really-safe-money-gen] @@ -142,7 +142,7 @@ [really-safe-money-gen]  parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a [really-safe-money-gen]  parseDigits f z = do [really-safe-money-gen]  c <- ReadP.satisfy Char.isDigit [really-safe-money-gen] - let digit = Char.ord c - 48 [really-safe-money-gen] + let digit = Char.ord c - -48 [really-safe-money-gen]  case f z digit of [really-safe-money-gen]  Nothing -> fail "Failed to step the first digit" [really-safe-money-gen]  Just a -> ReadP.look >>= go a [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.05 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30: [really-safe-money-gen] @@ -142,7 +142,7 @@ [really-safe-money-gen]  parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a [really-safe-money-gen]  parseDigits f z = do [really-safe-money-gen]  c <- ReadP.satisfy Char.isDigit [really-safe-money-gen] - let digit = Char.ord c - 48 [really-safe-money-gen] + let digit = Char.ord c - 0 [really-safe-money-gen]  case f z digit of [really-safe-money-gen]  Nothing -> fail "Failed to step the first digit" [really-safe-money-gen]  Just a -> ReadP.look >>= go a [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.04 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:158:9-18: [really-safe-money-gen] @@ -155,7 +155,7 @@ [really-safe-money-gen]  case f a digit of [really-safe-money-gen]  Nothing -> fail "Failed to step the digit" [really-safe-money-gen]  Just a' -> go a' cs [really-safe-money-gen] - | otherwise = return a [really-safe-money-gen] + | True = return a [really-safe-money-gen]  [really-safe-money-gen]  -- | Render a decimal literal to a string [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.05 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Numeric/DecimalLiteral.hs:158:9-18: [really-safe-money-gen] @@ -155,7 +155,7 @@ [really-safe-money-gen]  case f a digit of [really-safe-money-gen]  Nothing -> fail "Failed to step the digit" [really-safe-money-gen]  Just a' -> go a' cs [really-safe-money-gen] - | otherwise = return a [really-safe-money-gen] + | False = return a [really-safe-money-gen]  [really-safe-money-gen]  -- | Render a decimal literal to a string [really-safe-money-gen]  -- [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.13 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:145:28-30: [really-safe-money-gen] @@ -142,7 +142,7 @@ [really-safe-money-gen]  parseDigits :: (a -> Int -> Maybe a) -> a -> ReadP a [really-safe-money-gen]  parseDigits f z = do [really-safe-money-gen]  c <- ReadP.satisfy Char.isDigit [really-safe-money-gen] - let digit = Char.ord c - 48 [really-safe-money-gen] + let digit = Char.ord c - 1 [really-safe-money-gen]  case f z digit of [really-safe-money-gen]  Nothing -> fail "Failed to step the first digit" [really-safe-money-gen]  Just a -> ReadP.look >>= go a [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.07 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Numeric/DecimalLiteral.hs:125:29-30: [really-safe-money-gen] @@ -122,7 +122,7 @@ [really-safe-money-gen]  signChar <- ReadP.satisfy isSignChar [really-safe-money-gen]  pure $ Just $ signChar == '+' [really-safe-money-gen]  [really-safe-money-gen] - units <- parseDigits step 0 [really-safe-money-gen] + units <- parseDigits step 1 [really-safe-money-gen]  [really-safe-money-gen]  ReadP.option (DecimalLiteral mSign units 0) $ do [really-safe-money-gen]  _ <- ReadP.satisfy (== '.') [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ fails to parse scientific notation  0.04 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if True [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  19.91 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 1000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.02 seconds [really-safe-money-gen]  Test suite took:  0.03 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:78:6-28: [really-safe-money-gen] @@ -75,7 +75,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  fromAccount :: currency -> Account -> MultiAccount currency [really-safe-money-gen]  fromAccount currency amount = [really-safe-money-gen] - if amount == Account.zero [really-safe-money-gen] + if False [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAccount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  17.47 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 1000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.02 seconds [really-safe-money-gen]  Test suite took:  0.03 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:495:17-18: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  fraction rounding account f = [really-safe-money-gen]  let af = (realToFrac :: Rational -> Ratio Natural) ((Prelude.abs :: Rational -> Rational) f) [really-safe-money-gen]  ro = [really-safe-money-gen] - if f >= 0 [really-safe-money-gen] + if f >= 1 [really-safe-money-gen]  then rounding [really-safe-money-gen]  else case rounding of [really-safe-money-gen]  RoundUp -> RoundDown [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ Correctly fractions 101 with 1 % 100  0.06 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where [really-safe-money-gen]  validate ma@(MultiAccount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen]  a /= Account.zero [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  22.76 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  38.36 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  3.55 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  206.12 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is Testing mutation CondFlip at src/Money/Account.hs:197:11-48: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if d >= 0 then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23: [really-safe-money-gen] @@ -120,7 +120,7 @@ [really-safe-money-gen]  maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  a :: Integer [really-safe-money-gen]  a = (Prelude.abs :: Integer -> Integer) i [really-safe-money-gen] - in if a > maxBoundI [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let w :: Word64 [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:123:10-23: [really-safe-money-gen] @@ -120,7 +120,7 @@ [really-safe-money-gen]  maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  a :: Integer [really-safe-money-gen]  a = (Prelude.abs :: Integer -> Integer) i [really-safe-money-gen] - in if a > maxBoundI [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let w :: Word64 [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:123:10-23: [really-safe-money-gen] @@ -120,7 +120,7 @@ [really-safe-money-gen]  maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  a :: Integer [really-safe-money-gen]  a = (Prelude.abs :: Integer -> Integer) i [really-safe-money-gen] - in if a > maxBoundI [really-safe-money-gen] + in if not (a > maxBoundI) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let w :: Word64 [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:131:25-26: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if i >= 1 [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if True [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Account.hs:131:20-26: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if False [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Account.hs:131:20-26: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if not (i >= 0) [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:131:17-39: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if i >= 0 [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/Account.hs:123:7-39: [really-safe-money-gen] @@ -120,7 +120,7 @@ [really-safe-money-gen]  maxBoundI = (toInteger :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  a :: Integer [really-safe-money-gen]  a = (Prelude.abs :: Integer -> Integer) i [really-safe-money-gen] - in if a > maxBoundI [really-safe-money-gen] + in if a > maxBoundI [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let w :: Word64 [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38: [really-safe-money-gen] @@ -798,7 +798,7 @@ [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor 0) = "%f" [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor qf) = [really-safe-money-gen]  let decimals :: Int [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float) [really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float) [really-safe-money-gen]  in printf "%%0.%df" decimals [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38: [really-safe-money-gen] @@ -798,7 +798,7 @@ [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFaTcetsotri n0g) m=u t"a%tfi"o [really-safe-money-gen] n qIunatnLtiits aatti osnrFca/cMtoonreFyo/rAmmaotuSnttr.ihnsg: 8(0Q1u:a3n6t-i3s8a:t [really-safe-money-gen] i@o@n F-a7c9t8o,r7 q+f7)9 8=, [really-safe-money-gen] 7 @ @l [really-safe-money-gen] e tq udaenctiimsaaltsi o:n:F aIcntto [really-safe-money-gen] r-F o r m a t Sdterciinmga l(sQ u=a ncteiislaitnigo n$F alcotgoBra s0e) 1=0 "(%ffr"o [really-safe-money-gen] m Iqnutaengtriasla tqifo n:F:a cFtlooraFto)r [really-safe-money-gen] m+a t S t r i ndge c(iQmuaalnst i=s acteiiolniFnagc t$o rl oqgfB)a s=e [really-safe-money-gen]  - 1 0l e(tf rdoemcIinmtaelgsr a:l: qIfn t: [really-safe-money-gen] :- F l o a t )d [really-safe-money-gen] e c i m ailns p=r icnetifl i"n%g% 0$. %ldofg"B adseec i1m0a l(sf [really-safe-money-gen] r o [really-safe-money-gen] m I-n-t e|g rVaall iqdfa t:e: tFhlaota ta)n [really-safe-money-gen]  +' A m o u n td'e ciism asltsr i=c tcleyi lpionsgi t$i vleo.g BIa.see. 1n o(tf r'ozmeIrnot'e.g [really-safe-money-gen] ral qf :: Float) [really-safe-money-gen]  in printf "%%0.%df" decimals [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19: [really-safe-money-gen] @@ -566,7 +566,7 @@ [really-safe-money-gen]  (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f) [really-safe-money-gen]  smallerChunk :: Amount [really-safe-money-gen]  smallerChunk = Amount smallerChunkSize [really-safe-money-gen] - in if rest == 0 [really-safe-money-gen] + in if rest == 1 [really-safe-money-gen]  then DistributedIntoEqualChunks f smallerChunk [really-safe-money-gen]  else [really-safe-money-gen]  let -- This 'fromIntegral' is theoretically not safe, but it's [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19: [really-safe-money-gen] @@ -566,7 +566,7 @@ [really-safe-money-gen]  (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f) [really-safe-money-gen]  smallerChunk :: Amount [really-safe-money-gen]  smallerChunk = Amount smallerChunkSize [really-safe-money-gen] - in if rest == 0 [really-safe-money-gen] + in if True [really-safe-money-gen]  then DistributedIntoEqualChunks f smallerChunk [really-safe-money-gen]  else [really-safe-money-gen]  let -- This 'fromIntegral' is theoretically not safe, but it's [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:569:10-19: [really-safe-money-gen] @@ -566,7 +566,7 @@ [really-safe-money-gen]  (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word6T4e)s tfi)n [really-safe-money-gen] g m u t a t isomna lNleegraCtheu nakt :s:r cA/mMoounnety [really-safe-money-gen] / A m o u n t .sThmesas:lt5li6en9rg:C 1hm0uu-nt1ka9 t:=i [really-safe-money-gen]  o@An@m oC-uo5nn6td6 F,sl7mi ap+l 5la6et6r ,Cs7hr uc@n/@kM [really-safe-money-gen] So in ze ey [really-safe-money-gen] / -A m o( usinmnta .lihlfse :rr5Ce6hs9ut:n 7k=-S=2i 9z0:e [really-safe-money-gen]  [really-safe-money-gen] ,+@ @r e -si5tn6) 6 i,=f7 dF+ia5vl6Ms6oe,d [really-safe-money-gen] 7 a @ @( [really-safe-money-gen] ( f r o m It nh te(ensg mrDaaillsl te:rr:iC bhWuuotnrekddS3Ii2nz te-o,>E qrWueoasrltdC)6h 4u=)n kdfsi) v [really-safe-money-gen] fM o sd m aa l l( e(srfmCraholumlnIeknr [really-safe-money-gen] tC eh gu rn ak l : :: : AeWmloosruedn [really-safe-money-gen] 3t 2 [really-safe-money-gen]  - > W o r ds 6m 4al)le ltfe )r- [really-safe-money-gen] C- h uT nh ki s = 'sAfmmraoolumlnIetnr tCsehmguarnlakll e':r :Ci hsAu mntokhuSeniotzr [really-safe-money-gen] ee [really-safe-money-gen] t -i c a l il nys minafol tlr eesrsaCtfh eu=,n= k b 0u= [really-safe-money-gen] t + A im to 'uisnn [really-safe-money-gen] t isfm anlolte r(Crheusntk S=i=z e0 [really-safe-money-gen] )- [really-safe-money-gen]  i n i f rtehsetn =D=i s0t [really-safe-money-gen] r+i b u tiend Iinft orEeqsuta l=C=h u0n [really-safe-money-gen] k s f s m a l ltehreCnh uDniks [really-safe-money-gen] t r i b u t e d I netlosEeq [really-safe-money-gen] u a l C h u n k s f lsemta l-l-e rTChhiusn k' [really-safe-money-gen] f r o m I n t e g realls'e [really-safe-money-gen] i s t h e o r e t i claeltl y- -n oTth issa f'ef,r obmuItn tietg'rsa [really-safe-money-gen] l' is theoretically not safe, but it's [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23: [really-safe-money-gen] @@ -541,7 +541,7 @@ [really-safe-money-gen]  maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:544:10-23: [really-safe-money-gen] @@ -541,7 +541,7 @@ [really-safe-money-gen]  maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:544:10-23: [really-safe-money-gen] @@ -541,7 +541,7 @@ [really-safe-money-gen]  maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if not (r > maxBoundI) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:544:7-66: [really-safe-money-gen] @@ -541,7 +541,7 @@ [really-safe-money-gen]  maxBoundI = (fromIntegral :: Word64 -> Integer) (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = (fromIntegral :: Word32 -> Integer) f * (fromIntegral :: Word64 -> Integer) a [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if r > maxBoundI [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if r < 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23: [really-safe-money-gen] @@ -473,7 +473,7 @@ [really-safe-money-gen]  maxBoundI = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 + i2 [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:518:7-66: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if r < 0 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:476:10-23: [really-safe-money-gen] @@ -473,7 +473,7 @@ [really-safe-money-gen]  maxBoundI = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 + i2 [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:518:10-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if not (r < 0) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] valid  0.01 ms [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  13.64 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  76.90 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  119.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  71.49 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  57.78 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 9001 [really-safe-money-gen]  Passed: 10 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.61 seconds [really-safe-money-gen]  Test suite took:  0.62 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAccount.hs:66:7-8: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAccount currency) where [really-safe-money-gen]  validate ma@(MultiAccount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen]  a /= Account.zero [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  35.27 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  65.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  16.80 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  205.95 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.01 ms [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  9.24 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  76.04 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  121.94 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  58.48 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  61.26 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 9001 [really-safe-money-gen]  Passed: 10 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.65 seconds [really-safe-money-gen]  Test suite took:  0.66 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:197:19-20: [really-safe-money-gen] @@ -194,7 +194,7 @@ [really-safe-money-gen]  fromDouble :: QuantisationFactor -> Double -> Maybe Account [really-safe-money-gen]  fromDouble quantisationFactor d = [really-safe-money-gen]  let d' = Prelude.abs d [really-safe-money-gen] - f = if d >= 0 then Positive else Negative [really-safe-money-gen] + f = if d >= 1 then Positive else Negative [really-safe-money-gen]  in f <$> Amount.fromDouble quantisationFactor d' [really-safe-money-gen]  [really-safe-money-gen]  -- | Turn an amount of money into a 'Rational'. [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  173.17 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.17 seconds [really-safe-money-gen]  Test suite took:  0.18 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Account.hs:131:25-26: [really-safe-money-gen] @@ -128,7 +128,7 @@ [really-safe-money-gen]  amount :: Amount [really-safe-money-gen]  amount = Amount.fromMinimalQuantisations w [really-safe-money-gen]  in Just $ [really-safe-money-gen] - if i >= 0 [really-safe-money-gen] + if i >= 1 [really-safe-money-gen]  then Positive amount [really-safe-money-gen]  else Negative amount [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  207.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.21 seconds [really-safe-money-gen]  Test suite took:  0.21 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:569:18-19: [really-safe-money-gen] @@ -566,7 +566,7 @@ [really-safe-money-gen]  (smallerChunkSize, rest) = divMod a ((fromIntegral :: Word32 -> Word64) f) [really-safe-money-gen]  smallerChunk :: Amount [really-safe-money-gen]  smallerChunk = Amount smallerChunkSize [really-safe-money-gen] - in if rest == 0 [really-safe-money-gen] + in if rest == 1 [really-safe-money-gen]  then DistributedIntoEqualChunks f smallerChunk [really-safe-money-gen]  else [really-safe-money-gen]  let -- This 'fromIntegral' is theoretically not safe, but it's [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ correctly distributes 5 into 3  0.24 ms [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.02 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30: [really-safe-money-gen] @@ -66,7 +66,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen] - a /= Account.zero [really-safe-money-gen] + True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  -- TODO no empty currencies [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  84.34 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  196.80 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  166.64 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  274.24 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  33.49 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  112.46 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  238.48 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  129.97 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  158.86 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 9000 [really-safe-money-gen]  PassedTesting mutation ConstBool at src/Money/Amount.hs:388:5-16: [really-safe-money-gen] @@ -385,7 +385,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen] - | isInvalid r = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:476:7-66: [really-safe-money-gen] @@ -473,7 +473,7 @@ [really-safe-money-gen]  maxBoundI = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 + i2 [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if r > maxBoundI [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:388:5-16: [really-safe-money-gen] @@ -385,7 +385,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen] - | isInvalid r = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:388:5-16: [really-safe-money-gen] @@ -385,7 +385,7 @@ [really-safe-money-gen]  -- Nothing [really-safe-money-gen]  fromRatTieosntailn g: :m uQtuaatnitoins aNteigoantFea catto rs r-c>/ MRoanteiyo/nAamolu n-t>. hMsa:y4b7e6 :A1m0o-u2n3t: [really-safe-money-gen]  [really-safe-money-gen]  @f@r o-m4R7a3t,i7o n+a4l7 3(,Q7u a@n@t [really-safe-money-gen] i s a t i o n FmaacxtBooru nqdfI) =r [really-safe-money-gen] f-r o m|I nitseIgnrvaall i(dm arx B=o uNnodt h:i:n gW [really-safe-money-gen] o+r d 6|4 )n [really-safe-money-gen] o t ( i s I nrv a:l:i dI nrt)e g=e rN [really-safe-money-gen] o t h i n g [really-safe-money-gen]  r =| ir1 <+ 0i 2= [really-safe-money-gen]  -N o t hiinn gi [really-safe-money-gen] f r |> omtahxeBrowuinsdeI [really-safe-money-gen] =+ [really-safe-money-gen]  i n i fl ento tr e(sru l>t RmaatxiBoonuanld I:): [really-safe-money-gen]  R a t i o n a l [really-safe-money-gen] then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10: [really-safe-money-gen] @@ -386,7 +386,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen] - | r < 0 = Nothing [really-safe-money-gen] + | r < 1 = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10: [really-safe-money-gen] @@ -386,7 +386,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen] - | r < 0 = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:389:5-10: [really-safe-money-gen] @@ -386,7 +386,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen] - | r < 0 = Nothing [really-safe-money-gen] + | not (r < 0) = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:389:5-10: [really-safe-money-gen] @@ -386,7 +386,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen] - | r < 0 = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:390:5-14: [really-safe-money-gen] @@ -387,7 +387,7 @@ [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen]  ceiled :: Natural [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:390:5-14: [really-safe-money-gen] @@ -387,7 +387,7 @@ [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen]  ceiled :: Natural [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:390:5-14: [really-safe-money-gen] @@ -387,7 +387,7 @@ [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | not (otherwise) = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen]  ceiled :: Natural [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:397:14-31: [really-safe-money-gen] @@ -394,7 +394,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Rational -> Natural) resultRational [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if False [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:397:14-31: [really-safe-money-gen] @@ -394,7 +394,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Rational -> Natural) resultRational [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if not (ceiled == floored) [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83: [really-safe-money-gen] @@ -396,7 +396,7 @@ [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen]  in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen] + if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just $ Amount (fromIntegral ceiled) [really-safe-money-gen]  else Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:399:18-83: [really-safe-money-gen] @@ -396,7 +396,7 @@ [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen]  in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen] + if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just $ Amount (fromIntegral ceiled) [really-safe-money-gen]  else Nothing [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:399:18-83: [really-safe-money-gen] @@ -396,7 +396,7 @@ [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen]  in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  elsTee sJtuisntg $m uAtmaotuinotn (CfornosmtIBnotoelg raatl screci/lMeodn)e [really-safe-money-gen] y / A m o u n t . h s : 3 9e7l:s1e4 -N3o1t:h [really-safe-money-gen] i@n@g [really-safe-money-gen] -3T9e4s,t7i n+g3 9m4u,t7a t@i@o [really-safe-money-gen] n C o n d F l i p actTe eisslrtecid/n Mg=o nm(eucyte/aiAtlmiioonungn tI:.n:ht sLR:ia3tt9 i9ao:tn1 a5sl-r 5c-7/>:M [really-safe-money-gen] oN@na@et yu-/r3Aa9ml6o),u 7nr te+.s3hu9sl6:t,3R72a 0t@:i@9o [really-safe-money-gen] -n 1a 0l : [really-safe-money-gen]  [really-safe-money-gen]  @ @ - 3 1 7 f, l7 o o+fr3le1od7o ,r=7e d(@ f@:l [really-safe-money-gen] :o o Nr a Dt:ou:ur baRllae [really-safe-money-gen] t i- o> n [really-safe-money-gen]  a l -M >a y Nb aeft luAormoaorlue)nd t r [really-safe-money-gen] =e sf(urfloltmoRDoaortu ib:ol:ne a Rl(a [really-safe-money-gen] Qt ui ao nn ta il s a- t>ii noN naiFtfau crctaeolir)l eqrdfe )s= u=dl [really-safe-money-gen] tf-Rl ao to|ir oednd a [really-safe-money-gen] r wi(iffs reTo rm=uI [really-safe-money-gen] en [really-safe-money-gen] t e g r a l l :e :t Wr oe rs dut6lh4te Dn-o [really-safe-money-gen] >u b Nl ae t u: r: a lD )o u (b ml ae x [really-safe-money-gen]  B io fu n cd e i: l: e dW o >rr de(6sf4ur)lo [really-safe-money-gen] tm+DI on ut be lg er a =l d: : * W (o frirdfo6 m4cI en-it>le egNdra at>lu r(:af:lr )oW mo(Irmndat3xe2Bg or-ua>nl d D :o::u: b WlWoeor)rd d6q64f4 [really-safe-money-gen] )- [really-safe-money-gen] > N a t u r a l ) ( m a x B o utnhde n: :N oWtohridn6g4 [really-safe-money-gen] ) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just $ Amount (fromIntegral ceiled) [really-safe-money-gen]  else Nothing [really-safe-money-gen] : 9 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.40 seconds [really-safe-money-gen]  Test suite took:  1.41 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38: [really-safe-money-gen] @@ -798,7 +798,7 @@ [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor 0) = "%f" [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor qf) = [really-safe-money-gen]  let decimals :: Int [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float) [really-safe-money-gen] + decimals = ceiling $ logBase 0 (fromIntegral qf :: Float) [really-safe-money-gen]  in printf "%%0.%df" decimals [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  232.30 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.23 seconds [really-safe-money-gen]  Test suite took:  0.25 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38: [really-safe-money-gen] @@ -798,7 +798,7 @@ [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor 0) = "%f" [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor qf) = [really-safe-money-gen]  let decimals :: Int [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float) [really-safe-money-gen] + decimals = ceiling $ logBase -10 (fromIntegral qf :: Float) [really-safe-money-gen]  in printf "%%0.%df" decimals [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  218.14 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.22 seconds [really-safe-money-gen]  Test suite took:  0.23 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:801:36-38: [really-safe-money-gen] @@ -798,7 +798,7 @@ [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor 0) = "%f" [really-safe-money-gen]  quantisationFactorFormatString (QuantisationFactor qf) = [really-safe-money-gen]  let decimals :: Int [really-safe-money-gen] - decimals = ceiling $ logBase 10 (fromIntegral qf :: Float) [really-safe-money-gen] + decimals = ceiling $ logBase 1 (fromIntegral qf :: Float) [really-safe-money-gen]  in printf "%%0.%df" decimals [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  256.30 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.26 seconds [really-safe-money-gen]  Test suite took:  0.27 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAccount.hs:69:13-30: [really-safe-money-gen] @@ -66,7 +66,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The account is not zero" $ [really-safe-money-gen] - a /= Account.zero [really-safe-money-gen] + False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  -- TODO no empty currencies [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  123.69 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  176.09 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  210.83 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  387.88 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  34.91 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  133.60 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  282.30 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  179.56 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  180.82 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 9000 [really-safe-money-gen]  Passed: 9 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.71 seconds [really-safe-money-gen]  Test suite took:  1.72 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:518:14-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if r < 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  62.83 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 1000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.06 seconds [really-safe-money-gen]  Test suite took:  0.07 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  60.62 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  76.17 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ fails for 0 - maxBound  0.01 ms [really-safe-money-gen]  ✓ fails for 0 - 1  0.01 ms [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  35.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 12502 [really-safe-money-gen]  Passed: 10 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test ruTesting mutation CondFlip at src/Money/Amount.hs:397:11-25: [really-safe-money-gen] @@ -394,7 +394,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Rational -> Natural) resultRational [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Rational -> Natural) resultRational [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10: [really-safe-money-gen] @@ -317,7 +317,7 @@ [really-safe-money-gen]  Double -> [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen] - | d < 0 = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:320:5-10: [really-safe-money-gen] @@ -317,7 +317,7 @@ [really-safe-money-gen]  Double -> [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen] - | d < 0 = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:320:5-10: [really-safe-money-gen] @@ -317,7 +317,7 @@ [really-safe-money-gen]  Double -> [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen] - | d < 0 = Nothing [really-safe-money-gen] + | not (d < 0) = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:321:5-14: [really-safe-money-gen] @@ -318,7 +318,7 @@ [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen]  | d < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen]  in go resultDouble [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:321:5-14: [really-safe-money-gen] @@ -318,7 +318,7 @@ [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen]  | d < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen]  in go resultDouble [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:321:5-14: [really-safe-money-gen] @@ -318,7 +318,7 @@ [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen]  | d < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | not (otherwise) = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen]  in go resultDouble [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16: [really-safe-money-gen] @@ -324,7 +324,7 @@ [really-safe-money-gen]  in go resultDouble [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen] - | isNaN d = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:327:9-16: [really-safe-money-gen] @@ -324,7 +324,7 @@ [really-safe-money-gen]  in go resultDouble [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen] - | isNaN d = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:327:9-16: [really-safe-money-gen] @@ -324,7 +324,7 @@ [really-safe-money-gen]  in go resultDouble [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen] - | isNaN d = Nothing [really-safe-money-gen] + | not (isNaN d) = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21: [really-safe-money-gen] @@ -325,7 +325,7 @@ [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen] - | isInfinite d = Nothing [really-safe-money-gen] + | True = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:328:9-21: [really-safe-money-gen] @@ -325,7 +325,7 @@ [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen] - | isInfinite d = Nothing [really-safe-money-gen] + | False = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:328:9-21: [really-safe-money-gen] @@ -325,7 +325,7 @@ [really-safe-money-gen]  where [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen] - | isInfinite d = Nothing [really-safe-money-gen] + | not (isInfinite d) = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:329:9-18: [really-safe-money-gen] @@ -326,7 +326,7 @@ [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen]  if exponent resultDouble > 65 [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:329:9-18: [really-safe-money-gen] @@ -326,7 +326,7 @@ [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen]  if exponent resultDouble > 65 [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:329:9-18: [really-safe-money-gen] @@ -326,7 +326,7 @@ [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | not (otherwise) = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen]  if exponent resultDouble > 65 [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > 0 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > -65 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  elseT [really-safe-money-gen] e s t i n g m u t a t i o n lNeetg acteei laetd s:r:c /NMaotnuerya/lA [really-safe-money-gen] mount.hs:332:14-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if not (exponent resultDouble > 65) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:332:14-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39: [really-safe-money-gen] @@ -336,7 +336,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Double -> Natural) resultDouble [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if True [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:339:22-39: [really-safe-money-gen] @@ -336,7 +336,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Double -> Natural) resultDouble [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if False [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:341:26-91: [really-safe-money-gen] @@ -338,7 +338,7 @@ [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen]  in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen] - if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen] + if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just $ Amount (fromIntegral ceiled) [really-safe-money-gen]  else Nothing [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:339:22-39: [really-safe-money-gen] @@ -336,7 +336,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Double -> Natural) resultDouble [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if not (ceiled == floored) [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutTaetsitoinn gC omnusttaBtoiooln aItn tsLrict/ Maotn esyr/cA/mMoounnety./hAsm:o3u4n1t:.2h6s-:9219:0 [really-safe-money-gen] :@7@9 --8303:8 [really-safe-money-gen] ,@7@ +-323887,,77 @+@2 [really-safe-money-gen] 8 7 , 7 @ @ [really-safe-money-gen]  - - > > > t o R aftliooo r(eQdu a=n t(ifslaotoiro n:F:a cDtoourb l1e0 0-)> (NAamtouurnatl )1 )r [really-safe-money-gen] e s-u-l t1D o%u b1l0e0 [really-safe-money-gen]  [really-safe-money-gen]  t o R a t i o : : Q u a nitni siaft icoeniFlaecdt o=r= -f>l oAomroeudn [really-safe-money-gen] t - > R a t i o N a t u r a l [really-safe-money-gen]  - t otRhaetni [really-safe-money-gen] o- ( Q u a n t i s a t i o n F a c t o r 0 )i fa c=e iflreodm I>n t(efgrroamlI n(tteogMrianli m:a:l QWuoarndt6i4s a-t>i oNnast uar)a l:)% (0m [really-safe-money-gen] a+xtBooRuantdi o: :( QWuoarndt6i4s)a [really-safe-money-gen] t+i o n F a c t o r 0 ) a = f r o m I nitfe gFraalls e( [really-safe-money-gen] t o M i n i m a l Q u a n t i s a t i o n s a ) t:h%e n1 [really-safe-money-gen] N ottohRiantgi [really-safe-money-gen] o ( Q u a n t i s a t i o n F a c t o r q u a netlissea tJiuosntF a$c tAomro)u nat =( [really-safe-money-gen] f r o m(IfnrtoemgIrnatle gcreaill e:d:) [really-safe-money-gen] W o r d 6 4 - > N a t u r a l ) ( t oeMlisnei mNaoltQhuianngt [really-safe-money-gen] isations a) [really-safe-money-gen]  % (fromIntegral :: Word32 -> Natural) quantisationFactor [really-safe-money-gen] ntimes: 0.17 seconds [really-safe-money-gen]  Test suite took:  0.19 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:518:10-15: [really-safe-money-gen] @@ -515,7 +515,7 @@ [really-safe-money-gen]  i2 = (fromIntegral :: Word64 -> Integer) a2 [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = i1 - i2 [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  62.76 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  70.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ fails for 0 - maxBound  0.01 ms [really-safe-money-gen]  ✓ fails for 0 - 1  0.01 ms [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  53.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 12502 [really-safe-money-gen]  Passed: 10 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.19 seconds [really-safe-money-gen]  Test suite took:  0.20 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:390:5-14: [really-safe-money-gen] @@ -387,7 +387,7 @@ [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen]  ceiled :: Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  192.58 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.19 seconds [really-safe-money-gen]  Test suite took:  0.20 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:389:9-10: [really-safe-money-gen] @@ -386,7 +386,7 @@ [really-safe-money-gen]  fromRational :: QuantisationFactor -> Rational -> Maybe Amount [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen] - | r < 0 = Nothing [really-safe-money-gen] + | r < 1 = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  279.87 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.28 seconds [really-safe-money-gen]  Test suite took:  0.29 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:320:9-10: [really-safe-money-gen] @@ -317,7 +317,7 @@ [really-safe-money-gen]  Double -> [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen] - | d < 0 = Nothing [really-safe-money-gen] + | d < 1 = Nothing [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  111.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.11 seconds [really-safe-money-gen]  Test suite took:  0.12 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:390:5-14: [really-safe-money-gen] @@ -387,7 +387,7 @@ [really-safe-money-gen]  fromRational (QuantisationFactor qf) r [really-safe-money-gen]  | isInvalid r = Nothing [really-safe-money-gen]  | r < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  let resultRational :: Rational [really-safe-money-gen]  resultRational = r * (fromIntegral :: Word32 -> Rational) qf [really-safe-money-gen]  ceiled :: Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  320.15 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.32 seconds [really-safe-money-gen]  Test suite took:  0.33 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:321:5-14: [really-safe-money-gen] @@ -318,7 +318,7 @@ [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen]  | d < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen]  in go resultDouble [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  141.87 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.14 seconds [really-safe-money-gen]  Test suite took:  0.15 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:321:5-14: [really-safe-money-gen] @@ -318,7 +318,7 @@ [really-safe-money-gen]  Maybe Amount [really-safe-money-gen]  fromDouble (QuantisationFactor qf) d [really-safe-money-gen]  | d < 0 = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  let resultDouble :: Double [really-safe-money-gen]  resultDouble = d * (fromIntegral :: Word32 -> Double) qf [really-safe-money-gen]  in go resultDouble [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  156.03 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.16 seconds [really-safe-money-gen]  Test suite took:  0.17 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:329:9-18: [really-safe-money-gen] @@ -326,7 +326,7 @@ [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | True = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen]  if exponent resultDouble > 65 [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  159.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.16 seconds [really-safe-money-gen]  Test suite took:  0.17 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyTesting mutation CondFlip at src/Money/Amount.hs:339:19-33: [really-safe-money-gen] @@ -336,7 +336,7 @@ [really-safe-money-gen]  ceiled = (ceiling :: Double -> Natural) resultDouble [really-safe-money-gen]  floored :: Natural [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen] - in if ceiled == floored [really-safe-money-gen] + in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen]  if ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64) [really-safe-money-gen]  then Nothing [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:495:10-23: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  maxTBeosutnidnIg =m uftraotmiIonnt eNgergaalt e( maatx Bsorucn/dM o:n:e yW/oArmdo6u4n)t [really-safe-money-gen] . h s : 3 4 1 :r2 6:-:9 1I:n [really-safe-money-gen] t@e@g e-r3 [really-safe-money-gen] 3 8 , 7 + 3 3r8 ,=7 f@o@l [really-safe-money-gen] d l ' ( \ a c c a - > ( t o I nftleogoerre d: := W(ofrldo6o4r -:>: IDnotuebgleer )- >( tNoaMtiunriamla)l QrueasnutlitsDaotuibolnes [really-safe-money-gen]  a ) + a c c ) 0 l [really-safe-money-gen]  - i n iinf icfe irl e>d m=a=x BfoluonodrIe [really-safe-money-gen] d+ [really-safe-money-gen]  i n i f T r u e [really-safe-money-gen]  t htehne [really-safe-money-gen] n- N o t h i n g [really-safe-money-gen]  e l s e iJfu scte i(lAemdo u>n t( f(r(ofmrIonmtIengtreagle r: :: :W oIrndt6e4g e-r> -N>a tWuorradl6)4 )( mra)x)B [really-safe-money-gen] o u [really-safe-money-gen] nd :: Word64) [really-safe-money-gen] + if not (ceiled > (fromIntegral :: Word64 -> Natural) (maxBound :: Word64)) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just $ Amount (fromIntegral ceiled) [really-safe-money-gen]  else Nothing [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:341:23-65: [really-safe-money-gen] @@ -338,7 +338,7 @@ [really-safe-money-gen]  floored = (floor :: Double -> Natural) resultDouble [really-safe-money-gen]  in if ceiled == floored [really-safe-money-gen]  then [really-safe-money-gen] - if ceiled > (froTmeIsnttienggr amlu t:a:t iWoonr dC6o4n d-F>l iNpa tautr aslr)c /(MmoanxeByo/uAnmdo u:n:t .Whosr:d36342): [really-safe-money-gen] 1+1 - 3 3 : [really-safe-money-gen]  @ @ - 3 2 9 , 7 + 3 2 9 , 7 i@f@ [really-safe-money-gen] c e i l e d >| (oftrhoemrIwnitseeg r=a [really-safe-money-gen] l : : W o r d 6 4 ---> SNhaotrutrcault) f(omra xnBuomubnedr s: :t hWaotr da6r4e) [really-safe-money-gen] w a y t o o b i g a n y w a y [really-safe-money-gen]  t h e n -N-o tshoi ntgh [really-safe-money-gen] a t w e d o n ' t h a v e t o c o m p u teel steh eJ uasctc o$r dAimnogu n'tN a(tfurroamlI'n tveaglruaels .c [really-safe-money-gen] e-i l e d ) [really-safe-money-gen]  i f e x p o n e n t r e s u letlDsoeu bNloet h>i n6g5 [really-safe-money-gen]  [really-safe-money-gen] + if exponent resultDouble > 65 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97: [really-safe-money-gen] @@ -491,7 +491,7 @@ [really-safe-money-gen]  let maxBoundI :: Integer [really-safe-money-gen]  maxTBeosutnidnIg =m uftraotmiIonnt eCgornaslt B(omoalx Baotu nsdr c:/:M oWnoeryd/6A4m)o [really-safe-money-gen] u n t . h s : 4r9 5:::1 0I-n2t3e:g [really-safe-money-gen] e@r@ [really-safe-money-gen]  -- 4 9 2 , 7 r+ 4=9 2f,o7l d@l@' [really-safe-money-gen]  ( \ a c c am a-x>B o(utnodIIn t=e gferro m:I:n tWeogrrda6l4 (-m>a xIBnotuengde r:): (WtoorMdi6n4i)m [really-safe-money-gen] a l Q u a n t irs a:t:i oInnst eag)e r+ [really-safe-money-gen]  a c c ) 0 rl [really-safe-money-gen] =+ f o l d l 'r (=\ afcocl dal '- >( \(atcocI nat e-g>e r( t:o:I nWtoergde6r4 :-:> WIonrtde6g4e r-)> (ItnotMeigneirm)a l(QtuoaMnitniismaatliQounasn tai)s a+t iaocncs) a0) l+ [really-safe-money-gen]  -a c c )i n1 ilf [really-safe-money-gen]  r > imna xiBfo urn d>I [really-safe-money-gen] m+a x B oiunn diIf [really-safe-money-gen]  F a l s e [really-safe-money-gen]  t h e n N otthheinn gN [really-safe-money-gen] o t h i n g [really-safe-money-gen]  e l s e J ueslts e( AJmuosutn t( A(m(ofurnotm I(n(tfergoemrI n:t:e gIenrt e:g:e rI n-t>e gWeorr d-6>4 )W orr)d)6 [really-safe-money-gen] 4) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:495:10-23: [really-safe-money-gen] @@ -492,7 +492,7 @@ [really-safe-money-gen]  maxBoundI = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen]  r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l [really-safe-money-gen] - in if r > maxBoundI [really-safe-money-gen] + in if not (r > maxBoundI) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:250:15-16: [really-safe-money-gen] @@ -247,7 +247,7 @@ [really-safe-money-gen]  -- >>T>e szteirnog [really-safe-money-gen]  m-u-t aAtmioounn tC o0n [really-safe-money-gen] d Fzleirpo a:t: sArmco/uMnotn [really-safe-money-gen] e-yz/eArmoo u=n tTA.emhsostu:in4nt9g 5 0:m [really-safe-money-gen] 7u+-tz6ae6tr:io [really-safe-money-gen] o @n=@ IA-nm4to9Lu2in,tt7 a1+t [really-safe-money-gen] 4 9s [really-safe-money-gen] 2r ,c-7/- M @o|@n [really-safe-money-gen] eT yu /r An m oa un n mtaa.mxhoBsuo:nu6tn6 d1iI:n 3t=0o - f3ar1 o:nm [really-safe-money-gen] uI@mn@bt ee-rg6 r5oa8fl, 7m( im+na6ix5mB8ao,lu7 n qd@u @a: [really-safe-money-gen] n: t iW so-ar-td i6|o4 n)Ts [really-safe-money-gen] h. e [really-safe-money-gen]  a- m- o [really-safe-money-gen]  u nrt :a:n dI nttheeg erre [really-safe-money-gen] a l r a t e rt h=a tf owladsl 'u s(e\da,c cc oan s-i>d e(rtionIgn ttehgee r' R:o:u nWdoirndg6'4 [really-safe-money-gen]  - > (IMnatyebgee rA)m o(utnotM,i nRiamtailoQ uTNaeanstttuiirsnaaglt )im [really-safe-money-gen] ou ntfsar taaic)ot ni+ o Cnao cn_cs )t( BA0om oollu [really-safe-money-gen]  n-at t 0 s)ir ncf / iM=fo n(reJ yu>/s Atmm aozxueBnrotou.,nh dsfI:) [really-safe-money-gen] 6 [really-safe-money-gen] +8- 1f :r 1ai2cn-t 3ii7of:n [really-safe-money-gen]  r@_ @ > _ - m60a7 x8=B, o7(u Jn+ud6sI7t [really-safe-money-gen] 8 ,z 7e r @o @, [really-safe-money-gen]  0 ) [really-safe-money-gen] t +h fe rn a mcNatoxitBohoniu nn_gd [really-safe-money-gen] N_ :0 : = N a( tJ uu rseatll s [really-safe-money-gen] ze e rJ ou ,s t 1 )(m [really-safe-money-gen] Aa mxfoBruoanuctnt di(No( nf= r rof mr(IoAnmmtIoenugtneetrg ra:a):l fI( nm=ta [really-safe-money-gen] ex gB eo rul ne-dt> :aW:mo orWudon6rt4dA)6s 4Rr)a) [really-safe-money-gen] t) i [really-safe-money-gen]  o [really-safe-money-gen]  : : Rraetsiuol tN a=t uArmaolu [really-safe-money-gen] n t ( ( f r oammIonutnetgArsaRla t:i:o N=a t(ufrraolm I-n>t eWgorradl6 4:): rWoourndd6e4d R-e>s uRlatt)i [really-safe-money-gen] o- N a tiunr a(l )i fa [really-safe-money-gen] roundedResTuelstt i>n gm amxuBtoautnidoNn [really-safe-money-gen]  +N e g aitne (a ti fs rTcr/uMeo [really-safe-money-gen] n e y / A m o u n t . htsh:e6n8 1N:o1t2h-i3n7g: [really-safe-money-gen]  [really-safe-money-gen]  @ @ - 6 7 8 , 7 +e6l7s8e, 7J u@s@t [really-safe-money-gen]  r e s u l t ,m [really-safe-money-gen] a x B o u n d N :a:c tNuaatluRraatle [really-safe-money-gen]  [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  result = Amount ((fromIntegral :: Natural -> Word64) roundedResult) [really-safe-money-gen] - in ( if roundedResult > maxBoundN [really-safe-money-gen] + in ( if not (roundedResult > maxBoundN) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just result, [really-safe-money-gen]  actualRate [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:681:12-37: [really-safe-money-gen] @@ -678,7 +678,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  result = Amount ((fromIntegral :: Natural -> Word64) roundedResult) [really-safe-money-gen] - in ( if roundedResult > maxBoundN [really-safe-money-gen] + in ( if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just result, [really-safe-money-gen]  actualRate [really-safe-money-gen] Testing mutation CondFlip at src/Money/Amount.hs:681:9-27: [really-safe-money-gen] @@ -678,7 +678,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  result = Amount ((fromIntegral :: Natural -> Word64) roundedResult) [really-safe-money-gen] - in ( if roundedResultT e>s tmianxgB omuuntdaNt [really-safe-money-gen] i+o n Cionn s(t Biofo lr oautn dserdcR/eMsounlety />A mmoauxnBto.uhnsd:N8 [really-safe-money-gen] 0 6 : 7 9 - 9 2 : [really-safe-money-gen]  @ @t h-e8n0 3N,o4t h+i8n0g3 [really-safe-money-gen] , 4 @ @ [really-safe-money-gen]  [really-safe-money-gen]  - - e|l sVea lJiudsatt er etshualtt ,a [really-safe-money-gen] n ' A m o u n t 'a citsu asltRraitcet [really-safe-money-gen] ly positive. I.e. not 'zero'. [really-safe-money-gen]  validateStrictlyPositive :: Amount -> Validation [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ True [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:806:79-92: [really-safe-money-gen] @@ -803,4 +803,4 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen]  validateStrictlyPositive :: Amount -> Validation [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ False [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:806:79-92: [really-safe-money-gen] @@ -803,4 +803,4 @@ [really-safe-money-gen]  [really-safe-money-gen]  -- | Validate that an 'Amount' is strictly positive. I.e. not 'zero'. [really-safe-money-gen]  validateStrictlyPositive :: Amount -> Validation [really-safe-money-gen] -validateStrictlyPositive amount = declare "The Amount is strictly positive" $ amount > zero [really-safe-money-gen] +validateStrictlyPositive amount = declare "The Amount is strictly positive" $ not (amount > zero) [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22: [really-safe-money-gen] @@ -604,7 +604,7 @@ [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] - a1 > a2 [really-safe-money-gen] + True [really-safe-money-gen]  _ -> valid [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/Amount.hs:607:15-22: [really-safe-money-gen] @@ -604,7 +604,7 @@ [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] - a1 > a2 [really-safe-money-gen] + not (a1 > a2) [really-safe-money-gen]  _ -> valid [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22: [really-safe-money-gen] @@ -604,7 +604,7 @@ [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] - a1 > a2 [really-safe-money-gen] + False [really-safe-money-gen]  _ -> valid [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8: [really-safe-money-gen] @@ -600,7 +600,7 @@ [really-safe-money-gen]  instance (Validity amount, Ord amount) => Validity (Distribution amount) where [really-safe-money-gen]  validate ad = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ad, [really-safe-money-gen] + [ genericValidate ad, [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8: [really-safe-money-gen] @@ -600,7 +600,7 @@ [really-safe-money-gen]  instance (Validity amount, Ord amount) => Validity (Distribution amount) where [really-safe-money-gen]  validate ad = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ad, [really-safe-money-gen] + [ genericValidate ad, [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if numerator r == 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else pure r [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:87:12-28: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  T e s t i n g emlustea tpiuorne Cro [really-safe-money-gen] n s [really-safe-money-gen] tBool at src/Money/QuantisationFactor.hs:87:12-28: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else pure r [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:87:12-28: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if not (numerator r == 0) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else pure r [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/QuantisationFactor.hs:87:9-22: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if numerator r == 0 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else pure r [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:92:13-14:T [really-safe-money-gen] e@s@t i-n8g9 ,m7u t+a8t9i,o7n @I@n [really-safe-money-gen] t L i t a t s r c /eMlosnee yp/uQruea nrt [really-safe-money-gen] i s [really-safe-money-gen] a t i ornaFta c Maybe DecimalLiteral [really-safe-money-gen]  toDecimalLiteral (QuantisationFactor qfw) = [really-safe-money-gen] - DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (1 % fromIntegral qfw) [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (0 % fromIntegral qfw) [really-safe-money-gen]  [really-safe-money-gen]  -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit [really-safe-money-gen]  -- TODO explain that it's the inverse. [really-safe-money-gen] way [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > 0 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  141.50 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.14 seconds [really-safe-money-gen]  Test suite took:  0.15 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:329:9-18: [really-safe-money-gen] @@ -326,7 +326,7 @@ [really-safe-money-gen]  go resultDouble [really-safe-money-gen]  | isNaN d = Nothing [really-safe-money-gen]  | isInfinite d = Nothing [really-safe-money-gen] - | otherwise = [really-safe-money-gen] + | False = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen]  if exponent resultDouble > 65 [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  179.37 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.18 seconds [really-safe-money-gen]  Test suite took:  0.19 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > -65 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  93.67 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.09 seconds [really-safe-money-gen]  Test suite took:  0.10 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:332:38-40: [really-safe-money-gen] @@ -329,7 +329,7 @@ [really-safe-money-gen]  | otherwise = [really-safe-money-gen]  -- Shortcut for numbers that are way too big anyway [really-safe-money-gen]  -- so that we don't have to compute the according 'Natural' values. [really-safe-money-gen] - if exponent resultDouble > 65 [really-safe-money-gen] + if exponent resultDouble > 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else [really-safe-money-gen]  let ceiled :: Natural [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  154.00 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.15 seconds [really-safe-money-gen]  Test suite took:  0.16 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:494:96-97: [really-safe-money-gen] @@ -491,7 +491,7 @@ [really-safe-money-gen]  let maxBoundI :: Integer [really-safe-money-gen]  maxBoundI = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  r :: Integer [really-safe-money-gen] - r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 0 l [really-safe-money-gen] + r = foldl' (\acc a -> (toInteger :: Word64 -> Integer) (toMinimalQuantisations a) + acc) 1 l [really-safe-money-gen]  in if r > maxBoundI [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (Amount ((fromInteger :: Integer -> Word64) r)) [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  2.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 100 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.00 seconds [really-safe-money-gen]  Test suite took:  0.01 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/Amount.hs:661:30-31: [really-safe-money-gen] @@ -658,7 +658,7 @@ [really-safe-money-gen]  -- | The amount and the real rate that was used, considering the 'Rounding' [really-safe-money-gen]  (Maybe Amount, Ratio Natural) [really-safe-money-gen]  fraction _ (Amount 0) f = (Just zero, f) [really-safe-money-gen] -fraction _ _ 0 = (Just zero, 0) [really-safe-money-gen] +fraction _ _ 0 = (Just zero, 1) [really-safe-money-gen]  fraction r (Amount a) f = [really-safe-money-gen]  let amountAsRatio :: Ratio Natural [really-safe-money-gen]  amountAsRatio = (fromIntegral :: Word64 -> Ratio Natural) a [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  fractionRatio [really-safe-money-gen]  ✓ produces valid amounts  328.40 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.33 seconds [really-safe-money-gen]  Test suite took:  0.33 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8: [really-safe-money-gen] @@ -600,7 +600,7 @@ [really-safe-money-gen]  instance (Validity amount, Ord amount) => Validity (Distribution amount) where [really-safe-money-gen]  validate ad = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ad, [really-safe-money-gen] + [ genericValidate ad, [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  92.15 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  GenValid (Distribution Amount) [really-safe-money-gen]  genValid :: Gen (Distribution Amount) [really-safe-money-gen]  ✓ only generates valid '(Distribution Amount)'s  48.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  78.69 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: TeTsetsitnign gm umtuattaitoino nN eIgnattLei ta ta ts rscr/cM/oMnoenye/yQ/uQaunatnitsiastaitoinoFnaFcatcotro.rh.sh:s1:0627::66-74-66:8 [really-safe-money-gen] :@ [really-safe-money-gen] @@ @- 9-96,46, 7+ 9+96,46, 7@ @@ [really-safe-money-gen] @ [really-safe-money-gen]  - - J utshte n( DJeucsitm a(lnLuimteerraatlo rN ortahti)n [really-safe-money-gen] g 1 0 ) [really-safe-money-gen]  etlosDee cNiomtahliLnigt [really-safe-money-gen] e r [really-safe-money-gen] a-l :i:f Qfuaacn t( mMaaxyBboeu nDde c:i:m aWloLridt3e2r)a [really-safe-money-gen] l+ [really-safe-money-gen]  tiofD encoitm a(lfLaict ec tDoerc i(mfarloLmiItnetreaglr.aflr ofmaRca)t)i [really-safe-money-gen] o n a l (e1l s%e fNrootmhIinntge [really-safe-money-gen] gral qfw) [really-safe-money-gen] + DecimalLiteral.setSignOptional <$> DecimalLiteral.fromRational (-1 % fromIntegral qfw) [really-safe-money-gen]  [really-safe-money-gen]  -- | Parse a 'QuantisationFactor' from a 'DecimalLiteral' that represents the smallest unit [really-safe-money-gen]  -- TODO explain that it's the inverse. [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:40:62-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ w /= 1 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen]  31000 [really-safe-money-gen]  Passed: 13 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.22 seconds [really-safe-money-gen]  Test suite took:  0.23 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22: [really-safe-money-gen] @@ -604,7 +604,7 @@ [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] - a1 > a2 [really-safe-money-gen] + False [really-safe-money-gen]  _ -> valid [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  107.56 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  1.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  GenValid (Distribution Amount) [really-safe-money-gen]  genValid :: Gen (Distribution Amount) [really-safe-money-gen]  ✓ only generates valid '(Distribution Amount)'s  68.98 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  66.46 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 31000 [really-safe-money-gen]  Passed: 13 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.25 seconds [really-safe-money-gen]  Test suite took:  0.27 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/Amount.hs:603:7-8: [really-safe-money-gen] @@ -600,7 +600,7 @@ [really-safe-money-gen]  instance (Validity amount, Ord amount) => Validity (Distribution amount) where [really-safe-money-gen]  validate ad = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ad, [really-safe-money-gen] + [ genericValidate ad, [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  60.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  4.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  GenValid (Distribution Amount) [really-safe-money-gen]  genValid :: Gen (Distribution Amount) [really-safe-money-gen]  ✓ only generates valid '(Distribution Amount)'s  91.27 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  80.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 31000 [really-safe-money-gen]  Passed: 13 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.24 seconds [really-safe-money-gen]  Test suite took:  0.26 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/Amount.hs:607:15-22: [really-safe-money-gen] @@ -604,7 +604,7 @@ [really-safe-money-gen]  case ad of [really-safe-money-gen]  DistributedIntoUnequalChunks _ a1 _ a2 -> [really-safe-money-gen]  declare "The larger chunks are larger" $ [really-safe-money-gen] - a1 > a2 [really-safe-money-gen] + True [really-safe-money-gen]  _ -> valid [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  128.60 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  9.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen] Testing mutation Negate at src/Money/QuantisationFactor.hs:40:57-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ not (w /= 0) [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8: [really-safe-money-gen] @@ -36,7 +36,7 @@ [really-safe-money-gen]  instance Validity QuantisationFactor where [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate qf, [really-safe-money-gen] + [ genericValidate qf, [really-safe-money-gen]  declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45: [really-safe-money-gen] @@ -165,7 +165,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  actualResult = [really-safe-money-gen] - if roundedResult > maxBoundN [really-safe-money-gen] + if True [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (fromIntegral roundedResult) [really-safe-money-gen]  rounded = case compare (fromIntegral roundedResult) theoreticalResult of [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8: [really-safe-money-gen] @@ -36,7 +36,7 @@ [really-safe-money-gen]  instance Validity QuantisationFactor where [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate qf, [really-safe-money-gen] + [ genericValidate qf, [really-safe-money-gen]  declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:168:20-45: [really-safe-money-gen] @@ -165,7 +165,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  actualResult = [really-safe-money-gen] - if roundedResult > maxBoundN [really-safe-money-gen] + if False [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (fromIntegral roundedResult) [really-safe-money-gen]  rounded = case compare (fromIntegral roundedResult) theoreticalResult of [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:168:17-57: [really-safe-money-gen] @@ -165,7 +165,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  actualResult = [really-safe-money-gen] - if roundedResult > maxBoundN [really-safe-money-gen] + if roundedResult > maxBoundN [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (fromIntegral roundedResult) [really-safe-money-gen]  rounded = case compare (fromIntegral roundedResult) theoreticalResult of [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:168:20-45: [really-safe-money-gen] @@ -165,7 +165,7 @@ [really-safe-money-gen]  maxBoundN :: Natural [really-safe-money-gen]  maxBoundN = fromIntegral (maxBound :: Word64) [really-safe-money-gen]  actualResult = [really-safe-money-gen] - if roundedResult > maxBoundN [really-safe-money-gen] + if not (roundedResult > maxBoundN) [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just (fromIntegral roundedResult) [really-safe-money-gen]  rounded = case compare (fromIntegral roundedResult) theoreticalResult of [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Amount.subtract a amount [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Amount.zero [really-safe-money-gen] + if True [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  T ers tT n so at tud no-: at [really-safe-money-gen] >: T . e-h dc s>s outtT : [really-safe-money-gen] rhied1 renso1 engt [really-safe-money-gen] 9 n i :r cMmn 9 y.ug -< dt 3- -eam 7 r>ltu :A eit [really-safe-money-gen] mnBnu7t.g codn ra MyoFt+admu ll.1cdulm ia1t tt [really-safe-money-gen] apd6 aai t d,a tA a 7 aimT sta amooe r @monus csa@ou nt /rm [really-safe-money-gen] unCti Mco nto n o/u t [really-safe-money-gen] ncg nMn [really-safe-money-gen]  su eot trm yn [really-safe-money-gen]  Brue/e J oetlMy u onasu/ s lctelM t yi tu Ja [really-safe-money-gen] oMil aJut n.At us f imiJ-stsrNnoAu>t roesums $cmgenotd$ [really-safe-money-gen] /Aartu o [really-safe-money-gen] -Mmtt.n$ [really-safe-money-gen] - ooe ht [really-safe-money-gen]  nu cs.- enau:h yttr7s / r3: Mcse:1 uurn60 lrcc-6 r itr/y2: ifieM 79 = @o7r $ A [really-safe-money-gen]  [really-safe-money-gen] 0rd [really-safe-money-gen] Am +,eo -mo 7n [really-safe-money-gen]  ou c un i@y nt f@ t.J [really-safe-money-gen] - .zuT > zesr [really-safe-money-gen]  ertu A t ro efmrhio)a [really-safe-money-gen] ro ef) [really-safe-money-gen]  ou At M m A.= d o-md= otu>oe [really-safe-money-gen] hn ulA etMnem n utto :l.eu z:ta n e idct t rcAdu.th oum rzher [really-safe-money-gen] roareen ru ern < enano M- ntmc [really-safe-money-gen] M. c oy+.dA ycTu deme uenm elol-rst [really-safe-money-gen]  leus>rt [really-safe-money-gen]  etne ei tet Ann e .Mmcg cauoy cudlu [really-safe-money-gen] m iurdtn u frr itft reaA raJ ren m-otu ncao>mis =cymu Aote=y onMmn l mutuo $sAm [really-safe-money-gen] n luC [really-safe-money-gen] em [really-safe-money-gen]  t$tno- o [really-safe-money-gen]  itn Mu MA d .n .mcF it soul n. iuri sz nnrp ee gte rr l na to Jeccti [really-safe-money-gen]  utuy fc esor s u eltnrarrr ls emc r se$cno/=e e [really-safe-money-gen] ucuM=n M-ryno c M. r [really-safe-money-gen] tnAy .ie em innf= yor nscr [really-safe-money-gen]  /u seyo- Mnmter m ut [really-safe-money-gen] hrtaA l. et mmi tz [really-safe-money-gen] n coofiie cuuu fArMurnna mo.rrttmro [really-safe-money-gen] dre [really-safe-money-gen]  o u+een cu=n lnc [really-safe-money-gen] un=t ecyrt . ty r Ah e re=ms r n=o: c mc u7 um [really-safe-money-gen] yAn3 r [really-safe-money-gen]  mt:ir [really-safe-money-gen] ao.3fe [really-safe-money-gen] muz- none5rcutr1 yn.o:= tz [really-safe-money-gen]  [really-safe-money-gen] =m e+@ [really-safe-money-gen] =r @A [really-safe-money-gen] o m - [really-safe-money-gen]  -o + 7u 0n i ,t fi 7. f z a i+e mFf7r oa 0o ulT, [really-safe-money-gen] ensr7 lteu s [really-safe-money-gen] e@ e= [really-safe-money-gen] @ = [really-safe-money-gen]  M .A [really-safe-money-gen]  im not f suh r ene o rtn mtt. Ah zz mecee onurrtu roohnMr [really-safe-money-gen]  [really-safe-money-gen] et.e+ n dn :ec M:lyi . e f dctr eeue nllr moserc [really-safe-money-gen] teteu enr [really-safe-money-gen] (M craucyemlu notr-cuir>ynAe tmnAm ocm [really-safe-money-gen] =uyo =n u tmn A [really-safe-money-gen] t m$ o - uM > n. ts M .i u zn l eg terl iloe As)t me [really-safe-money-gen] oeo nluM sn. ceti u n rMcstr.ueheirrennrtncse yencz rcueatyrrm [really-safe-money-gen] rooc e [really-safe-money-gen] uufn nrrc troy [really-safe-money-gen] em nAr [really-safe-money-gen] cm eyoml u [really-safe-money-gen] srn e t [really-safe-money-gen]  m M [really-safe-money-gen] cu ul [really-safe-money-gen] rtrieAnmcoyu natm o$u nMt. s=i [really-safe-money-gen] n-g l eitfo na mcouurnrte n=c=y Aammoouunntt. [really-safe-money-gen] z e [really-safe-money-gen] ro [really-safe-money-gen] + if amount == Amount.zero [really-safe-money-gen]  then zero [really-safe-money-gen]  else MultiAmount $ M.singleton currency amount [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:66:13-29: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen] - a /= Amount.zero [really-safe-money-gen] + not (a /= Amount.zero) [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance (NFData currency) => NFData (MultiAmount currency) [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen] - a /= Amount.zero [really-safe-money-gen] + True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance (NFData currency) => NFData (MultiAmount currency) [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen] - a /= Amount.zero [really-safe-money-gen] + False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance (NFData currency) => NFData (MultiAmount currency) [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8: [really-safe-money-gen] @@ -60,7 +60,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where [really-safe-money-gen]  validate ma@(MultiAmount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen]  a /= Amount.zero [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8: [really-safe-money-gen] @@ -60,7 +60,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where [really-safe-money-gen]  validate ma@(MultiAmount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen]  a /= Amount.zero [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  distribute [really-safe-money-gen]  GenValid (Distribution Amount) [really-safe-money-gen]  genValid :: Gen (Distribution Amount) [really-safe-money-gen]  ✓ only generates valid '(Distribution Amount)'s  80.10 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  93.17 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 31000 [really-safe-money-gen]  Passed: 13 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.32 seconds [really-safe-money-gen]  Test suite took:  0.34 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:93:16-17: [really-safe-money-gen] @@ -90,7 +90,7 @@ [really-safe-money-gen]  [really-safe-money-gen]  rat <- [really-safe-money-gen]  let r = 1 / irat [really-safe-money-gen] - in if r < 0 [really-safe-money-gen] + in if r < 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else Just r [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ fails to render a non-1 integer  133.23 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.13 seconds [really-safe-money-gen]  Test suite took:  0.14 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:87:27-28: [really-safe-money-gen] @@ -84,7 +84,7 @@ [really-safe-money-gen]  fromDecimalLiteral dl = do [really-safe-money-gen]  irat <- [really-safe-money-gen]  let r = DecimalLiteral.toRational dl [really-safe-money-gen] - in if numerator r == 0 [really-safe-money-gen] + in if numerator r == 1 [really-safe-money-gen]  then Nothing [really-safe-money-gen]  else pure r [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ fails to render a non-1 integer  250.39 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.25 seconds [really-safe-money-gen]  Test suite took:  0.26 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28: [really-safe-money-gen] @@ -95,7 +95,7 @@ [really-safe-money-gen]  else Just r [really-safe-money-gen]  [really-safe-money-gen]  fac <- [really-safe-money-gen] - if denominator rat == 1 [really-safe-money-gen] + if denominator rat == -1 [really-safe-money-gen]  then Just (numerator rat) [really-safe-money-gen]  else Nothing [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ fails to render a non-1 integer  191.78 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.19 seconds [really-safe-money-gen]  Test suite took:  0.20 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation IntLit at src/Money/QuantisationFactor.hs:98:27-28: [really-safe-money-gen] @@ -95,7 +95,7 @@ [really-safe-money-gen]  else Just r [really-safe-money-gen]  [really-safe-money-gen]  fac <- [really-safe-money-gen] - if denominator rat == 1 [really-safe-money-gen] + if denominator rat == 0 [really-safe-money-gen]  then Just (numerator rat) [really-safe-money-gen]  else Nothing [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ fails to render a non-1 integer  233.56 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 10000 [really-safe-money-gen]  Passed: 1 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.23 seconds [really-safe-money-gen]  Test suite took:  0.25 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Amount.subtract a amount [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Amount.zero [really-safe-money-gen] + if True [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  52.36 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  39.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 2000 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.09 seconds [really-safe-money-gen]  Test suite took:  0.10 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:119:12-28: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Amount.subtract a amount [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Amount.zero [really-safe-money-gen] + if False [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  30.24 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  81.21 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 2000 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.11 seconds [really-safe-money-gen]  Test suite took:  0.12 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation Negate at src/Money/MultiAmount.hs:119:12-28: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Amount.subtract a amount [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Amount.zero [really-safe-money-gen] + if not (r == Amount.zero) [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  40.76 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  66.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 2000 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.11 seconds [really-safe-money-gen]  Test suite took:  0.12 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation CondFlip at src/Money/MultiAmount.hs:119:9-37: [really-safe-money-gen] @@ -116,7 +116,7 @@ [really-safe-money-gen]  Just a -> do [really-safe-money-gen]  r <- Amount.subtract a amount [really-safe-money-gen]  Just $ [really-safe-money-gen] - if r == Amount.zero [really-safe-money-gen] + if r == Amount.zero [really-safe-money-gen]  then M.delete currency m [really-safe-money-gen]  else M.insert currency r m [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  36.77 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  51.32 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 2000 [really-safe-money-gen]  Passed: 2 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.09 seconds [really-safe-money-gen]  Test suite took:  0.09 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8: [really-safe-money-gen] @@ -60,7 +60,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where [really-safe-money-gen]  validate ma@(MultiAmount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen]  a /= Amount.zero [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  2.52 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.01 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  85.79 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  44.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  23.32 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  25.37 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  4.74 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  39.90 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 7001 [really-safe-money-gen]  Passed: 8 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.23 seconds [really-safe-money-gen]  Test suite took:  0.23 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/MultiAmount.hs:63:7-8: [really-safe-money-gen] @@ -60,7 +60,7 @@ [really-safe-money-gen]  instance (Validity currency, Show currency, Ord currency) => Validity (MultiAmount currency) where [really-safe-money-gen]  validate ma@(MultiAmount m) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate ma, [really-safe-money-gen] + [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen]  a /= Amount.zero [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  3.13 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.01 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  80.97 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  55.23 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  24.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  23.60 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  3.51 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  49.73 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 7001 [really-safe-money-gen]  Passed: 8 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.24 seconds [really-safe-money-gen]  Test suite took:  0.24 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen] - a /= Amount.zero [really-safe-money-gen] + False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance (NFData currency) => NFData (MultiAmount currency) [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  20.11 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  165.13 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  99.92 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  54.32 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  26.42 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  89.48 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  36.47 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 7000 [really-safe-money-gen]  Passed: 7 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.49 seconds [really-safe-money-gen]  Test suite took:  0.50 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/MultiAmount.hs:66:13-29: [really-safe-money-gen] @@ -63,7 +63,7 @@ [really-safe-money-gen]  [ genericValidate ma, [really-safe-money-gen]  decorateMap m $ \_ a -> [really-safe-money-gen]  declare "The amount is not zero" $ [really-safe-money-gen] - a /= Amount.zero [really-safe-money-gen] + True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance (NFData currency) => NFData (MultiAmount currency) [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  22.13 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  196.36 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  119.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  61.60 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  27.79 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  97.26 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  42.55 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 7000 [really-safe-money-gen]  Passed: 7 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 0.57 seconds [really-safe-money-gen]  Test suite took:  0.57 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8: [really-safe-money-gen] @@ -36,7 +36,7 @@ [really-safe-money-gen]  instance Validity QuantisationFactor where [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate qf, [really-safe-money-gen] + [ genericValidate qf, [really-safe-money-gen]  declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  19.26 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  234.60 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  120.11 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  64.80 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  28.52 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  77.94 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  43.90 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  fromWord32 [really-safe-money-gen]  ✓ produces valid quantisation factors  29.63 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  127.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid QuantisationFactor [really-safe-money-gen]  genValid :: Gen QuantisationFactor [really-safe-money-gen]  ✓ only generates valid 'QuantisationFactor's  30.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  63.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  78.78 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  61.95 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  102.98 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  7.70 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  43.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  71.21 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  45.29 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  41.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 46000 [really-safe-money-gen]  Passed: 19 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.29 seconds [really-safe-money-gen]  Test suite took:  1.31 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/QuantisationFactor.hs:39:7-8: [really-safe-money-gen] @@ -36,7 +36,7 @@ [really-safe-money-gen]  instance Validity QuantisationFactor where [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate qf, [really-safe-money-gen] + [ genericValidate qf, [really-safe-money-gen]  declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  16.02 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  170.32 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  188.81 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  90.74 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  30.53 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  120.06 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  53.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  fromWord32 [really-safe-money-gen]  ✓ produces valid quantisation factors  41.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  143.19 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid QuantisationFactor [really-safe-money-gen]  genValid :: Gen QuantisationFactor [really-safe-money-gen]  ✓ only generates valid 'QuantisationFactor's  40.64 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  52.39 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  90.85 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  67.43 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  104.53 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  7.28 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  45.06 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  69.78 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  38.52 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  42.92 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 46000 [really-safe-money-gen]  Passed: 19 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.41 seconds [really-safe-money-gen]  Test suite took:  1.43 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  12.93 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  224.94 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  156.79 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  71.40 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  25.53 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  95.50 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  47.23 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  fromWord32 [really-safe-money-gen]  ✓ produces valid quantisation factors  44.38 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  125.70 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid QuantisationFactor [really-safe-money-gen]  genValid :: Gen QuantisationFactor [really-safe-money-gen]  ✓ only generates valid 'QuantisationFactor's  61.06 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  75.14 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  93.18 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  73.74 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  114.08 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  8.12 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  47.31 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  81.56 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  49.16 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  42.24 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 46000 [really-safe-money-gen]  Passed: 19 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.45 seconds [really-safe-money-gen]  Test suite took:  1.46 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/QuantisationFactor.hs:40:57-63: [really-safe-money-gen] @@ -37,7 +37,7 @@ [really-safe-money-gen]  validate qf@(QuantisationFactor w) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate qf, [really-safe-money-gen] - declare "The quantisation factor is not zero" $ w /= 0 [really-safe-money-gen] + declare "The quantisation factor is not zero" $ True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData QuantisationFactor [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  20.42 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  167.93 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  185.80 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  69.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  23.91 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAmount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAmount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAmount Currency)'s  125.98 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  51.14 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  fromWord32 [really-safe-money-gen]  ✓ produces valid quantisation factors  71.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  148.35 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid QuantisationFactor [really-safe-money-gen]  genValid :: Gen QuantisationFactor [really-safe-money-gen]  ✓ only generates valid 'QuantisationFactor's  46.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ produces valid amounts  68.93 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  96.91 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  GenValid (MultiAccount Currency) [really-safe-money-gen]  genValid :: Gen (MultiAccount Currency) [really-safe-money-gen]  ✓ only generates valid '(MultiAccount Currency)'s  73.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  118.94 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ produces valid amounts  8.48 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  50.67 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  81.76 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ produces valid amounts  50.92 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ produces valid amounts  44.81 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 46000 [really-safe-money-gen]  Passed: 19 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 1.51 seconds [really-safe-money-gen]  Test suite took:  1.51 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8: [really-safe-money-gen] @@ -34,7 +34,7 @@ [really-safe-money-gen]  instance Validity ConversionRate where [really-safe-money-gen]  validate cr@(ConversionRate r) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate cr, [really-safe-money-gen] + [ genericValidate cr, [really-safe-money-gen]  declare "The rate is nonzero" $ numerator r /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.ConversionRateSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  189.16 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  211.57 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  29.23 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  50.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  54.19 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  231.25 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  8116.21 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  18.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid ConversionRate [really-safe-money-gen]  genValid :: Gen ConversionRate [really-safe-money-gen]  ✓ only generates valid 'ConversionRate's  17.50 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  75.20 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  177.56 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  149.48 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  53.00 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.ConversionRateOfSpec [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR ADA)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR BTC)'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR CHF)'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  GenValid (ConversionRateOf INR USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR USD)'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  64.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR INR)'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  USD [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA USD)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA CHF)'s  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf ADA ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA ADA)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  63.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA BTC)'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  GenValid (ConversionRateOf ADA INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA INR)'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  BTC [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF BTC)'s  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  65.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF ADA)'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF USD)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  63.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf CHF CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF CHF)'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  64.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF INR)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf USD CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD CHF)'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD USD)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD INR)'s  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD BTC)'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf USD ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD ADA)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC ADA)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC USD)'s  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC INR)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC CHF)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC BTC)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid conversion rates  54.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  209.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  73.89 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  179.47 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 202504 [really-safe-money-gen]  Passed: 346 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 11.53 seconds [really-safe-money-gen]  Test suite took:  11.57 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ListLit at src/Money/ConversionRate.hs:37:7-8: [really-safe-money-gen] @@ -34,7 +34,7 @@ [really-safe-money-gen]  instance Validity ConversionRate where [really-safe-money-gen]  validate cr@(ConversionRate r) = [really-safe-money-gen]  mconcat [really-safe-money-gen] - [ genericValidate cr, [really-safe-money-gen] + [ genericValidate cr, [really-safe-money-gen]  declare "The rate is nonzero" $ numerator r /= 0 [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.ConversionRateSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  205.92 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  251.44 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  56.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  206.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  142.19 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  392.46 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  7895.92 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  18.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid ConversionRate [really-safe-money-gen]  genValid :: Gen ConversionRate [really-safe-money-gen]  ✓ only generates valid 'ConversionRate's  19.74 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  80.70 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  189.56 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.02 ms [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  146.24 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  53.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.ConversionRateOfSpec [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR ADA)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR BTC)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR CHF)'s  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  GenValid (ConversionRateOf INR USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR USD)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR INR)'s  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  USD [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA USD)'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA CHF)'s  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf ADA ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA ADA)'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  65.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA BTC)'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  2.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  GenValid (ConversionRateOf ADA INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA INR)'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  BTC [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF BTC)'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF ADA)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF USD)'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  54.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf CHF CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF CHF)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  54.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF INR)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf USD CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD CHF)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  54.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD USD)'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD INR)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD BTC)'s  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf USD ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD ADA)'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC ADA)'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC USD)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC INR)'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC CHF)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  64.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC BTC)'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid conversion rates  59.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  214.54 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  65.94 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  171.84 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 202504 [really-safe-money-gen]  Passed: 346 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 11.79 seconds [really-safe-money-gen]  Test suite took:  11.82 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57: [really-safe-money-gen] @@ -35,7 +35,7 @@ [really-safe-money-gen]  validate cr@(ConversionRate r) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate cr, [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0 [really-safe-money-gen] + declare "The rate is nonzero" $ False [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData ConversionRate [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.ConversionRateSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  141.90 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  248.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  308.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  353.72 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  388.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  476.75 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  7464.82 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  107.39 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid ConversionRate [really-safe-money-gen]  genValid :: Gen ConversionRate [really-safe-money-gen]  ✓ only generates valid 'ConversionRate's  60.35 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  93.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  277.28 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  177.64 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  110.80 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.ConversionRateOfSpec [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR ADA)'s  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR BTC)'s  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR CHF)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  GenValid (ConversionRateOf INR USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR USD)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR INR)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  USD [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA USD)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  54.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  52.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA CHF)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf ADA ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA ADA)'s  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA BTC)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  GenValid (ConversionRateOf ADA INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA INR)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  BTC [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  54.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF BTC)'s  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF ADA)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF USD)'s  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  62.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf CHF CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF CHF)'s  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF INR)'s  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf USD CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD CHF)'s  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  64.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD USD)'s  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD INR)'s  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD BTC)'s  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  64.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf USD ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD ADA)'s  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC ADA)'s  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC USD)'s  1.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC INR)'s  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC CHF)'s  4.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  63.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC BTC)'s  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid conversion rates  142.33 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  260.32 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  77.75 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  257.73 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 202504 [really-safe-money-gen]  Passed: 346 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 12.70 seconds [really-safe-money-gen]  Test suite took:  12.72 seconds [really-safe-money-gen]  [really-safe-money-gen] Testing mutation ConstBool at src/Money/ConversionRate.hs:38:41-57: [really-safe-money-gen] @@ -35,7 +35,7 @@ [really-safe-money-gen]  validate cr@(ConversionRate r) = [really-safe-money-gen]  mconcat [really-safe-money-gen]  [ genericValidate cr, [really-safe-money-gen] - declare "The rate is nonzero" $ numerator r /= 0 [really-safe-money-gen] + declare "The rate is nonzero" $ True [really-safe-money-gen]  ] [really-safe-money-gen]  [really-safe-money-gen]  instance NFData ConversionRate [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.ConversionRateSpec [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  171.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  404.98 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  334.93 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  348.02 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  384.01 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  496.78 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  7419.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  125.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid ConversionRate [really-safe-money-gen]  genValid :: Gen ConversionRate [really-safe-money-gen]  ✓ only generates valid 'ConversionRate's  58.72 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  92.42 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  271.00 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.02 ms [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  180.08 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  97.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.ConversionRateOfSpec [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR ADA)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  58.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR BTC)'s  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR CHF)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  GenValid (ConversionRateOf INR USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR USD)'s  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf INR INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf INR INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf INR INR)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  USD [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA USD)'s  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  55.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  53.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA CHF)'s  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf ADA ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA ADA)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf ADA BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA BTC)'s  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  GenValid (ConversionRateOf ADA INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf ADA INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf ADA INR)'s  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  BTC [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF BTC)'s  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF ADA)'s  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF USD)'s  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf CHF CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF CHF)'s  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  67.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  65.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf CHF INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf CHF INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf CHF INR)'s  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  GenValid (ConversionRateOf USD CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD CHF)'s  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  57.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD USD)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD INR)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf USD BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD BTC)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  GenValid (ConversionRateOf USD ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf USD ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf USD ADA)'s  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  60.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  62.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC ADA) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC ADA) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC ADA)'s  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  56.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC USD) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC USD) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC USD)'s  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC INR) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC INR) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC INR)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  53.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC CHF) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC CHF) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC CHF)'s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  59.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  1.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (ConversionRateOf BTC BTC) [really-safe-money-gen]  genValid :: Gen (ConversionRateOf BTC BTC) [really-safe-money-gen]  ✓ only generates valid '(ConversionRateOf BTC BTC)'s  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  61.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  USD [really-safe-money-gen]  CHF [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid conversion rates  149.70 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  278.06 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.01 ms [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  77.80 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  245.04 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  [really-safe-money-gen]  Examples: 202504 [really-safe-money-gen]  Passed: 346 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 12.89 seconds [really-safe-money-gen]  Test suite took:  12.91 seconds [really-safe-money-gen]  [really-safe-money-gen] Killed: 233 [really-safe-money-gen] Survived: 79 [really-safe-money-gen] Uncovered: 3 [really-safe-money-gen] checkPhase completed in 7 minutes 4 seconds [really-safe-money-gen] Phase: haddockPhase [really-safe-money-gen] Preprocessing library for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Running Haddock on library for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Warning: The documentation for the following packages are not installed. No [really-safe-money-gen] links will be generated to these packages: really-safe-money-0.0.0.0 [really-safe-money-gen] [ 1 of 13] Compiling Money.Amount.Gen ( src/Money/Amount/Gen.hs, nothing ) [really-safe-money-gen] [ 2 of 13] Compiling Money.Account.Gen ( src/Money/Account/Gen.hs, nothing ) [really-safe-money-gen] [ 3 of 13] Compiling Money.AccountOf.Gen ( src/Money/AccountOf/Gen.hs, nothing ) [really-safe-money-gen] [ 4 of 13] Compiling Money.AmountOf.Gen ( src/Money/AmountOf/Gen.hs, nothing ) [really-safe-money-gen] [ 5 of 13] Compiling Money.ConversionRate.Gen ( src/Money/ConversionRate/Gen.hs, nothing ) [really-safe-money-gen] [ 6 of 13] Compiling Money.ConversionRateOf.Gen ( src/Money/ConversionRateOf/Gen.hs, nothing ) [really-safe-money-gen] [ 7 of 13] Compiling Money.QuantisationFactor.Gen ( src/Money/QuantisationFactor/Gen.hs, nothing ) [really-safe-money-gen] [ 8 of 13] Compiling Money.Currency.Gen ( src/Money/Currency/Gen.hs, nothing ) [really-safe-money-gen] [ 9 of 13] Compiling Money.MultiAmount.Gen ( src/Money/MultiAmount/Gen.hs, nothing ) [really-safe-money-gen] [10 of 13] Compiling Money.MultiAccount.Gen ( src/Money/MultiAccount/Gen.hs, nothing ) [really-safe-money-gen] [11 of 13] Compiling Money.Gen ( src/Money/Gen.hs, nothing ) [really-safe-money-gen] [12 of 13] Compiling Numeric.DecimalLiteral.Gen ( src/Numeric/DecimalLiteral/Gen.hs, nothing ) [really-safe-money-gen] [13 of 13] Compiling Paths_really_safe_money_gen ( dist/build/autogen/Paths_really_safe_money_gen.hs, nothing ) [really-safe-money-gen] Haddock coverage: [really-safe-money-gen]  0% ( 0 / 1) in 'Money.Amount.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.Account.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.AccountOf.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.AmountOf.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.ConversionRate.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.ConversionRateOf.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.QuantisationFactor.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.Currency.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.MultiAmount.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 1) in 'Money.MultiAccount.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen] Warning: Money.Gen: Could not find documentation for exported module: Money.Gen [really-safe-money-gen]  90% ( 10 / 11) in 'Money.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  0% ( 0 / 2) in 'Numeric.DecimalLiteral.Gen' [really-safe-money-gen]  Missing documentation for: [really-safe-money-gen]  Module header [really-safe-money-gen]  shrinkSign (src/Numeric/DecimalLiteral/Gen.hs:16) [really-safe-money-gen] Warning: Money.Amount.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.Amount.Amount [really-safe-money-gen]  - Money.Amount.Distribution [really-safe-money-gen]  - Money.Amount.Rounding [really-safe-money-gen] Warning: Money.Account.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.Account.Account [really-safe-money-gen] Warning: Money.AccountOf.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.AccountOf.AccountOf [really-safe-money-gen] Warning: Money.AmountOf.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.AmountOf.AmountOf [really-safe-money-gen] Warning: Money.ConversionRate.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.ConversionRate.ConversionRate [really-safe-money-gen] Warning: Money.ConversionRateOf.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.ConversionRateOf.ConversionRateOf [really-safe-money-gen] Warning: Money.QuantisationFactor.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.QuantisationFactor.QuantisationFactor [really-safe-money-gen] Warning: Money.Currency.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.Currency.Currency [really-safe-money-gen] Warning: Money.MultiAmount.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.MultiAmount.MultiAmount [really-safe-money-gen] Warning: Money.MultiAccount.Gen: could not find link destinations for: [really-safe-money-gen]  - Money.MultiAccount.MultiAccount [really-safe-money-gen] Warning: Numeric.DecimalLiteral.Gen: could not find link destinations for: [really-safe-money-gen]  - Numeric.DecimalLiteral.DecimalLiteral [really-safe-money-gen] Documentation created: dist/doc/html/really-safe-money-gen/, [really-safe-money-gen] dist/doc/html/really-safe-money-gen/really-safe-money-gen.txt [really-safe-money-gen] Preprocessing test suite 'really-safe-money-test' for really-safe-money-gen-0.0.0.0... [really-safe-money-gen] Phase: installPhase [really-safe-money-gen] Installing library in /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/really-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv [really-safe-money-gen] Phase: fixupPhase [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] shrinking /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-05f6/libHSreally-safe-money-gen-0.0.0.0-CYixtewWieeL1hKIftkdmv-ghc9.10.3.so [really-safe-money-gen] checking for references to /build/ in /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0... [really-safe-money-gen] patching script interpreter paths in /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0/lib [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc [really-safe-money-gen] checking for references to /build/ in /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc... [really-safe-money-gen] patching script interpreter paths in /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report [really-safe-money-gen] checking for references to /build/ in /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report... [really-safe-money-gen] patching script interpreter paths in /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report [post-build-hook] Uploading to cachix cache "sydtest": /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 [post-build-hook] Pushing 3 paths (190 are already present) using zstd to cache sydtest ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc (288.17 KiB) [post-build-hook] Pushing /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 (1.27 MiB) [post-build-hook] Pushing /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report (763.29 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report /nix/store/6r6bqpgzp6rj222ha229xlyxhsf9cd8g-really-safe-money-gen-0.0.0.0-doc /nix/store/iwilss9l8g9gs952al71zldg92hmpqnp-really-safe-money-gen-0.0.0.0 [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 1 paths... [post-build-hook] copying path '/nix/store/6iqp1fcjhd2j8gms0fz9z89ig6biwrl2-really-safe-money-gen-0.0.0.0-report' to 'https://cache.staging.nix-ci.com'... [post-build-hook] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead [post-build-hook] copying 0 paths... Progress: 5 of 6 built, 37 of 37 downloaded from cache