$ /nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/timeout --kill-after=15s 7200s /nix/store/23zk8sgzamrbmj1fday15szf7f2279s8-nix-2.34.7/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes --log-format internal-json build --no-link --print-out-paths git+https://github.com/NorfairKing/really-safe-money?ref=master&rev=910e318982febf8a22ca1e0698a15c773766e6ce#checks.x86_64-linux.coverage-report --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-0.0.0.0-coverables from https://cache.staging.nix-ci.com Downloading cached really-safe-money-0.0.0.0-coverage from https://cache.staging.nix-ci.com Downloading cached really-safe-money-autodocodec-0.0.0.0-coverables from https://cache.staging.nix-ci.com Downloading cached really-safe-money-autodocodec-0.0.0.0-coverage from https://cache.staging.nix-ci.com Downloading cached really-safe-money from https://cache.staging.nix-ci.com Progress: 0 of 13 built, 1 of 6 downloaded from cache (4 downloading) Progress: 0 of 12 built, 2 of 6 downloaded from cache (3 downloading) Progress: 0 of 11 built, 3 of 6 downloaded from cache (2 downloading) Progress: 0 of 10 built, 4 of 6 downloaded from cache (1 downloading) Progress: 0 of 9 built, 5 of 6 downloaded from cache Downloading cached really-safe-money-autodocodec from https://cache.staging.nix-ci.com Building /nix/store/2q0l7dgwxr0cfwqzlcv71qrhw7xq0qi4-really-safe-money-gen-source-0.0.0.0.drv Progress: 0 of 8 built (1 building), 6 of 6 downloaded from cache [really-safe-money-gen-source] Phase: setupCompilerEnvironmentPhase [really-safe-money-gen-source] Build with /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3. [really-safe-money-gen-source] Phase: unpackPhase [really-safe-money-gen-source] unpacking source archive /nix/store/y0kywrm4sph3xkgad9cnk67hvlrsjwgs-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.jhIyxAlIPg/setup-package.conf.d -threaded [really-safe-money-gen-source] [1 of 2] Compiling Main ( /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs, /build/tmp.jhIyxAlIPg/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/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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.jhIyxAlIPg/package.conf.d --ghc-option=-j14 --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/wl2nw5l4x4dg6kclbgpq7v9212i1s6cy-ncurses-6.6/lib --extra-lib-dirs=/nix/store/2zs4bbi72plfm8j6zxf1js4f3yc4yzwy-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/qhmqdg27kcrlkl8ida6d5hiacw0y8d21-elfutils-0.194/lib --extra-lib-dirs=/nix/store/y56aqb1m3y5davn6hsv4jfbml78qw4mv-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/wjfhh11sfcdf97mvg7hbxickybxzk850-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/k493jzz83044mqayvlb6247l35780kxy-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-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  include base-4.20.2.0-4d66 [really-safe-money-gen-source]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  include genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  component really-safe-money-gen-0.0.0.0-FMYH4k5GpwYEDUwLgaUI3b-really-safe-money-bench [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  include base-4.20.2.0-4d66 [really-safe-money-gen-source]  include criterion-1.6.4.0-Hy3fs4KDlhhKFhL5al2kGw [really-safe-money-gen-source]  include deepseq-1.5.0.0-04fd [really-safe-money-gen-source]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  include genvalidity-criterion-1.1.0.0-EB97yfYeniXIPIMwkMZOvv [really-safe-money-gen-source]  include genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  include really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  include vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [really-safe-money-gen-source] Linked component graph: [really-safe-money-gen-source]  unit really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  include base-4.20.2.0-4d66 [really-safe-money-gen-source]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  include genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  Money.Account.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW:Numeric.DecimalLiteral.Gen [really-safe-money-gen-source]  unit really-safe-money-gen-0.0.0.0-FMYH4k5GpwYEDUwLgaUI3b-really-safe-money-bench [really-safe-money-gen-source]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  include base-4.20.2.0-4d66 [really-safe-money-gen-source]  include criterion-1.6.4.0-Hy3fs4KDlhhKFhL5al2kGw [really-safe-money-gen-source]  include deepseq-1.5.0.0-04fd [really-safe-money-gen-source]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  include genvalidity-criterion-1.1.0.0-EB97yfYeniXIPIMwkMZOvv [really-safe-money-gen-source]  include genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen-source]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  include really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  include vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [really-safe-money-gen-source] Ready component graph: [really-safe-money-gen-source]  definite really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  depends QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  depends base-4.20.2.0-4d66 [really-safe-money-gen-source]  depends genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  depends genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen-source]  depends really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  definite really-safe-money-gen-0.0.0.0-FMYH4k5GpwYEDUwLgaUI3b-really-safe-money-bench [really-safe-money-gen-source]  depends QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen-source]  depends base-4.20.2.0-4d66 [really-safe-money-gen-source]  depends criterion-1.6.4.0-Hy3fs4KDlhhKFhL5al2kGw [really-safe-money-gen-source]  depends deepseq-1.5.0.0-04fd [really-safe-money-gen-source]  depends genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen-source]  depends genvalidity-criterion-1.1.0.0-EB97yfYeniXIPIMwkMZOvv [really-safe-money-gen-source]  depends genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen-source]  depends really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen-source]  depends really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source]  depends vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [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/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0 [really-safe-money-gen-source] Executables installed in: [really-safe-money-gen-source] /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0-GzyvgvAvyGlD1pU1VjrZlW [really-safe-money-gen-source] Dynamic Libraries installed in: [really-safe-money-gen-source] /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af [really-safe-money-gen-source] Private executables installed in: [really-safe-money-gen-source] /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0 [really-safe-money-gen-source] Data files installed in: [really-safe-money-gen-source] /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0/share/x86_64-linux-ghc-9.10.3-21af/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/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/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 15.2.0 given by user at: [really-safe-money-gen-source] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/hvlf3xzdw0p5s3kybdkch6iqyz0740rc-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/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.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/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money-gen-source] Using strip version 2.46 found on system at: [really-safe-money-gen-source] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/strip [really-safe-money-gen-source] Using tar found on system at: [really-safe-money-gen-source] /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-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 "really-safe-money": /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0 [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-really-safe-money-gen-source-0.0.0.0 (18.06 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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/2q0l7dgwxr0cfwqzlcv71qrhw7xq0qi4-really-safe-money-gen-source-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 1 of 8 built, 6 of 6 downloaded from cache Building /nix/store/rdfcnadzfdypy969y3q3s2q7fx5p42lm-really-safe-money-gen-0.0.0.0.drv [really-safe-money-gen] Phase: setupCompilerEnvironmentPhase [really-safe-money-gen] Build with /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3. [really-safe-money-gen] Phase: unpackPhase [really-safe-money-gen] unpacking source archive /nix/store/ll5ljxhrg6hafybm4j3pq13yzp0akga9-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 1780953962 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.lS3sbh3n6V/setup-package.conf.d -threaded [really-safe-money-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.lS3sbh3n6V/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/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.lS3sbh3n6V/package.conf.d --ghc-option=-j14 --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-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/wl2nw5l4x4dg6kclbgpq7v9212i1s6cy-ncurses-6.6/lib --extra-lib-dirs=/nix/store/2zs4bbi72plfm8j6zxf1js4f3yc4yzwy-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/qhmqdg27kcrlkl8ida6d5hiacw0y8d21-elfutils-0.194/lib --extra-lib-dirs=/nix/store/y56aqb1m3y5davn6hsv4jfbml78qw4mv-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/wjfhh11sfcdf97mvg7hbxickybxzk850-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/k493jzz83044mqayvlb6247l35780kxy-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.25.0.1 [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-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen]  include base-4.20.2.0-4d66 [really-safe-money-gen]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen]  include genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  component really-safe-money-gen-0.0.0.0-As0At1icbM72qfpOzhBds-really-safe-money-test [really-safe-money-gen]  include base-4.20.2.0-4d66 [really-safe-money-gen]  include containers-0.7-e888 [really-safe-money-gen]  include genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-gen]  include genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  include really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-gen]  include vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [really-safe-money-gen] Linked component graph: [really-safe-money-gen]  unit really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  include QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen]  include base-4.20.2.0-4d66 [really-safe-money-gen]  include genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen]  include genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  Money.Account.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.Account.Gen,Money.AccountOf.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.AccountOf.Gen,Money.Amount.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.Amount.Gen,Money.AmountOf.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.AmountOf.Gen,Money.ConversionRate.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.ConversionRate.Gen,Money.ConversionRateOf.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.ConversionRateOf.Gen,Money.Currency.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.Currency.Gen,Money.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.Gen,Money.MultiAccount.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.MultiAccount.Gen,Money.MultiAmount.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.MultiAmount.Gen,Money.QuantisationFactor.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Money.QuantisationFactor.Gen,Numeric.DecimalLiteral.Gen=really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2:Numeric.DecimalLiteral.Gen [really-safe-money-gen]  unit really-safe-money-gen-0.0.0.0-As0At1icbM72qfpOzhBds-really-safe-money-test [really-safe-money-gen]  include base-4.20.2.0-4d66 [really-safe-money-gen]  include containers-0.7-e888 [really-safe-money-gen]  include genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-gen]  include genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  include really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-gen]  include vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [really-safe-money-gen] Ready component graph: [really-safe-money-gen]  definite really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  depends QuickCheck-2.15.0.1-83rop1AjnpeLHaSYoq2xRi [really-safe-money-gen]  depends base-4.20.2.0-4d66 [really-safe-money-gen]  depends genvalidity-1.1.1.0-4THiTNY6rc2EFFi2ZLkmu3 [really-safe-money-gen]  depends genvalidity-containers-1.0.0.2-8GXue2Y1x4FH4nzKPrJR5U [really-safe-money-gen]  depends really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  definite really-safe-money-gen-0.0.0.0-As0At1icbM72qfpOzhBds-really-safe-money-test [really-safe-money-gen]  depends base-4.20.2.0-4d66 [really-safe-money-gen]  depends containers-0.7-e888 [really-safe-money-gen]  depends genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-gen]  depends genvalidity-vector-1.0.0.0-7hZ5FXOTuHBDAaImQ2cPWZ [really-safe-money-gen]  depends really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-gen]  depends really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen]  depends sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-gen]  depends vector-0.13.2.0-4sNODSde54Y5T3xVFmV0fE [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/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Executables installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/bin [really-safe-money-gen] Libraries installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen] Dynamic Libraries installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af [really-safe-money-gen] Private executables installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Data files installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/share/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Documentation installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0 [really-safe-money-gen] Configuration files installed in: [really-safe-money-gen] /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-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/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/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 15.2.0 given by user at: [really-safe-money-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/gcc [really-safe-money-gen] Using ghc version 9.10.3 found on system at: [really-safe-money-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-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/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [really-safe-money-gen] No hscolour found [really-safe-money-gen] No jhc found [really-safe-money-gen] Using ld found on system at: [really-safe-money-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.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/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money-gen] Using strip version 2.46 found on system at: [really-safe-money-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/strip [really-safe-money-gen] Using tar found on system at: [really-safe-money-gen] /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-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] Running 1 test suites... [really-safe-money-gen] Test suite really-safe-money-test: RUNNING... [really-safe-money-gen] Tests: [really-safe-money-gen]  [really-safe-money-gen] Money.MultiAccountSpec [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ computes this example correctly  22.87 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ adds a non zero amount  13.33 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  43.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ removes a zero amount  27.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  96.95 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  50.12 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  addAccount [really-safe-money-gen]  ✓ produces valid amounts  37.65 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is a no-op when adding a positive zero account  53.27 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is a no-op when adding a negative zero account  45.69 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  Ord (MultiAccount Currency) [really-safe-money-gen]  "max :: (MultiAccount Currency -> MultiAccount Currency -> MultiAccount Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (MultiAccount Currency)"'s  63.65 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  "min :: (MultiAccount Currency -> MultiAccount Currency -> MultiAccount Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (MultiAccount Currency)"'s  77.98 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (<=) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (MultiAccount Currency)"'s  41.41 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (MultiAccount Currency)"'s  35.31 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAccount Currency)"'s  45.04 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (MultiAccount Currency)"'s  29.14 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (<) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (MultiAccount Currency)"'s  61.39 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (MultiAccount Currency)"'s  35.77 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAccount Currency)"'s  42.08 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (>=) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAccount Currency)"'s  29.28 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (MultiAccount Currency)"'s  26.75 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAccount Currency)"'s  31.57 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (MultiAccount Currency)"'s  38.99 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (>) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (MultiAccount Currency)"'s  27.19 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAccount Currency)"'s  40.65 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAccount Currency)"'s  47.26 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  98.87 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is invalid when it contains a currency with a zero quantisation factor  4.46 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is invalid when it contains a zero account  9.12 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  convertAll [really-safe-money-gen]  ✓ produces the right result in this example  5.17 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid results when converting two currencies to one  28.02 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAccount [really-safe-money-gen]  ✓ is a no-op when subtracting a negative zero account  44.50 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is a no-op when subtracting a positive zero account  45.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  22.20 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  lookupAccount [really-safe-money-gen]  ✓ can find an added amount  6.85 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  10.59 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ removes a zero amount  6.96 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ adds a non zero amount  7.50 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  29.00 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ computes this example correctly  6.41 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]  Show (MultiAccount Currency) and Read (MultiAccount Currency) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  300.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAccount [really-safe-money-gen]  ✓ returns a singleton when given a positive non-zero account  5.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ returns a singleton when given a negative account  5.44 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ returns zero when given a zero account  2.86 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  4.71 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  47.72 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  Eq (MultiAccount Currency) [really-safe-money-gen]  (==) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAccount Currency)"s  35.41 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (MultiAccount Currency)"s  28.62 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (MultiAccount Currency)"s  30.75 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAccount Currency)"s  26.95 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (/=) :: (MultiAccount Currency) -> (MultiAccount Currency) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (MultiAccount Currency)"s  31.39 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAccount Currency)"s  31.89 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  61.94 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  39.08 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  352.03 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  270.08 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is commutative  330.57 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen] Money.AccountOfSpec [really-safe-money-gen]  CHF [really-safe-money-gen]  INR [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  12.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  15.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ roundtrips with toDouble  9.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid rational  5.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  6.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  5.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ has a left-identity: zero  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  abs [really-safe-money-gen]  ✓ produces valid amounts  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  Show (Distribution (AccountOf * CHF)) and Read (Distribution (AccountOf * CHF)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  3.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ distributes 4 into 2 equal chunks of 2  1.24 ms [really-safe-money-gen]  ✓ produces valid amounts  3.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AccountOf * CHF)) [really-safe-money-gen]  (/=) :: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AccountOf * CHF))"s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AccountOf * CHF))"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AccountOf * CHF)) -> (Distribution (AccountOf * CHF)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AccountOf * CHF))"s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AccountOf * CHF))"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AccountOf * CHF))"s  0.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AccountOf * CHF))"s  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  8.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AccountOf * CHF) and Read (AccountOf * CHF) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  7.85 ms [really-safe-money-gen]  ✓ produces valid accounts  7.92 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.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid AccountOfs  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AccountOf * CHF) [really-safe-money-gen]  (>) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AccountOf * CHF)"'s  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * CHF)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * CHF)"'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * CHF)"'s  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AccountOf * CHF)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * CHF)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * CHF)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AccountOf * CHF -> AccountOf * CHF -> AccountOf * CHF)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AccountOf * CHF)"'s  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AccountOf * CHF)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * CHF)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * CHF)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AccountOf * CHF -> AccountOf * CHF -> AccountOf * CHF)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AccountOf * CHF)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * CHF)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AccountOf * CHF)"'s  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * CHF)"'s  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * CHF)"'s  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  2.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  4.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  4.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AccountOf * CHF) [really-safe-money-gen]  genValid :: Gen (AccountOf * CHF) [really-safe-money-gen]  ✓ only generates valid '(AccountOf * CHF)'s  0.11 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.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.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  5.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmountOf [really-safe-money-gen]  ✓ produces valid AccountOfs  1.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  11.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AccountOf * CHF) [really-safe-money-gen]  (/=) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * CHF)"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AccountOf * CHF)"s  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (AccountOf * CHF) -> (AccountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * CHF)"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AccountOf * CHF)"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * CHF)"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AccountOf * CHF)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  10.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an account through its decimal literal  12.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ has an identity: 1  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  8.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid rational  8.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  7.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid accounts  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  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.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.11 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.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ has an identity: 1  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  1.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  1.63 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.56 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.35 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]  add [really-safe-money-gen]  ✓ produces valid amounts  0.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.28 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  2.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid AccountOfs  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid rational  1.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AccountOf * BTC) [really-safe-money-gen]  genValid :: Gen (AccountOf * BTC) [really-safe-money-gen]  ✓ only generates valid '(AccountOf * BTC)'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips an account through its decimal literal  1.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  2.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AccountOf * BTC) [really-safe-money-gen]  (==) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * BTC)"s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * BTC)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AccountOf * BTC)"s  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AccountOf * BTC)"s  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * BTC)"s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AccountOf * BTC)"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  0.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AccountOf * BTC) [really-safe-money-gen]  "max :: (AccountOf * BTC -> AccountOf * BTC -> AccountOf * BTC)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AccountOf * BTC)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * BTC)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AccountOf * BTC)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * BTC)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * BTC)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * BTC)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AccountOf * BTC)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * BTC)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * BTC)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * BTC)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AccountOf * BTC)"'s  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AccountOf * BTC) -> (AccountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * BTC)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * BTC)"'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * BTC)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AccountOf * BTC)"'s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AccountOf * BTC -> AccountOf * BTC -> AccountOf * BTC)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AccountOf * BTC)"'s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  abs [really-safe-money-gen]  ✓ produces valid amounts  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  0.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.05 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.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AccountOf * BTC) and Read (AccountOf * BTC) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  2.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmountOf [really-safe-money-gen]  ✓ produces valid AccountOfs  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ distributes 4 into 2 equal chunks of 2  0.01 ms [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AccountOf * BTC)) [really-safe-money-gen]  (==) :: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AccountOf * BTC))"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AccountOf * BTC))"s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AccountOf * BTC))"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AccountOf * BTC))"s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (Distribution (AccountOf * BTC)) -> (Distribution (AccountOf * BTC)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AccountOf * BTC))"s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AccountOf * BTC))"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AccountOf * BTC)) and Read (Distribution (AccountOf * BTC)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  2.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  ✓ produces valid accounts  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ roundtrips with toDouble  0.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid rational  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  2.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.54 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  ADA [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AccountOf * USD) and Read (AccountOf * USD) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid accounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an account through its decimal literal  1.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AccountOf * USD) [really-safe-money-gen]  (>) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AccountOf * USD)"'s  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * USD)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * USD)"'s  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * USD)"'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * USD)"'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AccountOf * USD)"'s  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AccountOf * USD)"'s  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * USD)"'s  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * USD)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * USD)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AccountOf * USD -> AccountOf * USD -> AccountOf * USD)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AccountOf * USD)"'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AccountOf * USD)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * USD)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * USD)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * USD)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AccountOf * USD -> AccountOf * USD -> AccountOf * USD)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AccountOf * USD)"'s  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ produces valid amounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AccountOf * USD) [really-safe-money-gen]  genValid :: Gen (AccountOf * USD) [really-safe-money-gen]  ✓ only generates valid '(AccountOf * USD)'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmountOf [really-safe-money-gen]  ✓ produces valid AccountOfs  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  221.85 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  2.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  INR [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.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.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid AccountOfs  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  222.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  222.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid accounts  221.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid rational  1.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDouble  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  220.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.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AccountOf * USD) [really-safe-money-gen]  (/=) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AccountOf * USD)"s  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * USD)"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (AccountOf * USD) -> (AccountOf * USD) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * USD)"s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AccountOf * USD)"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * USD)"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AccountOf * USD)"s  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ distributes 4 into 2 equal chunks of 2  0.01 ms [really-safe-money-gen]  Show (Distribution (AccountOf * USD)) and Read (Distribution (AccountOf * USD)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  221.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  219.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AccountOf * USD)) [really-safe-money-gen]  (/=) :: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AccountOf * USD))"s  218.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AccountOf * USD))"s  218.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AccountOf * USD)) -> (Distribution (AccountOf * USD)) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AccountOf * USD))"s  0.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AccountOf * USD))"s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AccountOf * USD))"s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AccountOf * USD))"s  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ is associative when both succeed  1.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  abs [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]  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]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid rational  1.60 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]  format [really-safe-money-gen]  ✓ produces valid strings  1.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AccountOf * INR) [really-safe-money-gen]  (==) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is symmetric for "valid (AccountOf * INR)"s  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AccountOf * INR)"s  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * INR)"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * INR)"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AccountOf * INR)"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * INR)"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ is associative when both succeed  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.47 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.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.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AccountOf * INR) and Read (AccountOf * INR) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AccountOf * INR) [really-safe-money-gen]  (>) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AccountOf * INR)"'s  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * INR)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * INR)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AccountOf * INR -> AccountOf * INR -> AccountOf * INR)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AccountOf * INR)"'s  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * INR)"'s  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * INR)"'s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * INR)"'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AccountOf * INR)"'s  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * INR)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * INR)"'s  0.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * INR)"'s  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AccountOf * INR)"'s  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AccountOf * INR) -> (AccountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AccountOf * INR)"'s  0.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * INR)"'s  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * INR)"'s  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AccountOf * INR -> AccountOf * INR -> AccountOf * INR)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AccountOf * INR)"'s  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmountOf [really-safe-money-gen]  ✓ produces valid AccountOfs  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ has an identity: 1  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.32 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.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  1.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  abs [really-safe-money-gen]  ✓ produces valid amounts  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.02 ms [really-safe-money-gen]  ✓ produces valid accounts  0.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid accounts  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid AccountOfs  0.13 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.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.56 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  2.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.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AccountOf * INR) [really-safe-money-gen]  genValid :: Gen (AccountOf * INR) [really-safe-money-gen]  ✓ only generates valid '(AccountOf * INR)'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  1.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  1.39 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.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.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ roundtrips with toDouble  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid rational  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  2.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AccountOf * INR)) and Read (Distribution (AccountOf * INR)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  2.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AccountOf * INR)) [really-safe-money-gen]  (==) :: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AccountOf * INR))"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AccountOf * INR))"s  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AccountOf * INR))"s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AccountOf * INR))"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (Distribution (AccountOf * INR)) -> (Distribution (AccountOf * INR)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AccountOf * INR))"s  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AccountOf * INR))"s  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ distributes 4 into 2 equal chunks of 2  0.00 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  1.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an account through its decimal literal  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  1.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  2.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  0.12 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.78 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]  sum [really-safe-money-gen]  ✓ produces valid amounts  1.05 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid AccountOfs  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [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 rational  1.03 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ produces valid rational  0.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDouble  0.52 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.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.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  abs [really-safe-money-gen]  ✓ produces valid amounts  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AccountOf * ADA) [really-safe-money-gen]  (>) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * ADA)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AccountOf * ADA)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * ADA)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AccountOf * ADA)"'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * ADA)"'s  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * ADA)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AccountOf * ADA -> AccountOf * ADA -> AccountOf * ADA)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AccountOf * ADA)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AccountOf * ADA -> AccountOf * ADA -> AccountOf * ADA)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AccountOf * ADA)"'s  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * ADA)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * ADA)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * ADA)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AccountOf * ADA)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AccountOf * ADA)"'s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * ADA)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AccountOf * ADA)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AccountOf * ADA) [really-safe-money-gen]  (==) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is symmetric for "valid (AccountOf * ADA)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AccountOf * ADA)"s  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AccountOf * ADA)"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AccountOf * ADA)"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AccountOf * ADA) -> (AccountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AccountOf * ADA)"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AccountOf * ADA)"s  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AccountOf * ADA) [really-safe-money-gen]  genValid :: Gen (AccountOf * ADA) [really-safe-money-gen]  ✓ only generates valid '(AccountOf * ADA)'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid accounts  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  ADA [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]  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]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ produces valid amounts  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AccountOf * ADA)) and Read (Distribution (AccountOf * ADA)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  3.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ distributes 4 into 2 equal chunks of 2  0.19 ms [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AccountOf * ADA)) [really-safe-money-gen]  (/=) :: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AccountOf * ADA))"s  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AccountOf * ADA))"s  0.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AccountOf * ADA)) -> (Distribution (AccountOf * ADA)) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AccountOf * ADA))"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AccountOf * ADA))"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AccountOf * ADA))"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AccountOf * ADA))"s  0.32 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.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.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AccountOf * ADA) and Read (AccountOf * ADA) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ has an identity: 1  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips an account through its decimal literal  2.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  1.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromAmountOf [really-safe-money-gen]  ✓ produces valid AccountOfs  0.11 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.65 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] Money.ConversionRateOfSpec [really-safe-money-gen]  ADA [really-safe-money-gen]  ADA [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [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]  ✓ roundtrips with toRatio  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  15.68 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  16.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.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  1.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  3.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.50 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  10.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  10.91 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  2.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.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.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [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]  ✓ roundtrips with toDecimalLiteral  17.84 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  10.64 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]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.47 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]  invert [really-safe-money-gen]  ✓ produces valid rates  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [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  1.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  Ratio [really-safe-money-gen]  fromRatio [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 toRatio  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  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.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.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  9.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  17.22 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.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.93 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]  compose [really-safe-money-gen]  ✓ produces valid rates  1.42 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.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  2.78 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.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.72 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  9.00 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  14.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.86 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.18 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]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  12.83 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  13.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.90 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.92 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]  compose [really-safe-money-gen]  ✓ produces valid rates  1.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [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 toRational  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  13.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  10.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.58 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.90 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.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  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  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.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [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.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  0.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.78 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  14.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  15.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.43 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [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 toRatio  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.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [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.86 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.63 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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  11.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [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 toDecimalLiteral  12.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.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.92 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  14.35 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  12.24 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]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.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]  ✓ roundtrips with toRatio  0.73 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]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.35 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.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.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [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]  invert [really-safe-money-gen]  ✓ produces valid rates  0.92 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  14.81 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  9.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [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 toRational  0.50 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.60 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.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  compose [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]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.73 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]  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]  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.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.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  10.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  13.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [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]  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.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.66 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  14.79 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  10.41 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.57 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.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [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.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  12.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid conversion rates  1.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  9.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.71 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.70 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [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 toRatio  0.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.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  INR [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.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.43 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]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  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  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.90 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  12.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  11.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [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 toRational  0.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [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.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  3.03 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  11.93 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  14.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  2.02 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.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  11.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  10.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.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [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 toRatio  0.73 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.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  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.67 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.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ADA [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.26 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.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  13.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [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]  ✓ roundtrips with toDecimalLiteral  16.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.91 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.96 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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  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]  ✓ produces valid conversion rates  0.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  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  1.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  1.01 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  14.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  14.16 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]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [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  0.55 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.38 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]  BTC [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.85 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.82 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  9.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  13.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  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]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  1.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]  ✓ produces valid conversion rates  0.95 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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  USD [really-safe-money-gen]  INR [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [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 toRational  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  13.65 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]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  9.92 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.38 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.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.34 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 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]  ADA [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  0.45 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.20 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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  9.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  12.01 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]  compose [really-safe-money-gen]  ✓ produces valid rates  1.06 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.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.62 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.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.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.81 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [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  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.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  9.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  11.97 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.56 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.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  11.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  13.72 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]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.38 ms [really-safe-money-gen]  passed for all of 100 inputs. [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  1.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.97 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Rational [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  0.93 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]  toRational [really-safe-money-gen]  ✓ produces valid rationals  0.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [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  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  9.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [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 toDecimalLiteral  15.83 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  1.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.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  0.66 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  0.65 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]  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.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.ConversionRateSpec [really-safe-money-gen]  oneToOne [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  ✓ converts without changing the amount  0.00 ms [really-safe-money-gen]  Rational [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid conversion rates  105.20 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  77.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid rationals  60.90 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is invalid when the rate is infinite (denominator zero)  0.01 ms [really-safe-money-gen]  invert [really-safe-money-gen]  ✓ produces valid rates  81.09 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  76.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  compose [really-safe-money-gen]  ✓ produces valid rates  141.72 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ multiplies the rates  0.00 ms [really-safe-money-gen]  ✓ results in the product of the two rates as ratios  166.61 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ratio [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid ratios  65.00 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid conversion rates  89.50 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRatio  66.56 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  132.01 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDecimalLiteral  2657.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid literals  2692.01 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is invalid when the rate is zero  0.01 ms [really-safe-money-gen] Money.CurrencySpec [really-safe-money-gen]  Show Currency and Read Currency [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  16.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq Currency [really-safe-money-gen]  (==) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid Currency"s  58.94 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Currency"s  48.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Currency"s  57.83 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid Currency"s  51.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (/=) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid Currency"s  52.01 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Currency"s  49.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ord Currency [really-safe-money-gen]  (>=) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid Currency"'s  50.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Currency"'s  44.60 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Currency"'s  50.78 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid Currency"'s  44.19 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (<) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is transitive for "valid Currency"'s  52.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Currency"'s  988.02 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid Currency"'s  56.67 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (<=) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is transitive for "valid Currency"'s  57.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid Currency"'s  509.21 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid Currency"'s  990.04 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Currency"'s  49.24 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "min :: (Currency -> Currency -> Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid Currency"'s  1126.35 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (>) :: Currency -> Currency -> Bool [really-safe-money-gen]  ✓ is transitive for "valid Currency"'s  1113.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid Currency"'s  967.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Currency"'s  1107.07 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "max :: (Currency -> Currency -> Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid Currency"'s  1110.53 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.QuantisationFactorSpec [really-safe-money-gen]  digits [really-safe-money-gen]  ✓ produces valid numbers of digits  13.66 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ works on 20  0.01 ms [really-safe-money-gen]  ✓ works on 10  0.00 ms [really-safe-money-gen]  ✓ works on 1  0.00 ms [really-safe-money-gen]  ✓ works on 100  0.00 ms [really-safe-money-gen]  ✓ is invalid when the quantisation factor is zero  0.01 ms [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  ✓ can turn quantisation factor 20 into DecimalLiteral Nothing 5 2  0.06 ms [really-safe-money-gen]  ✓ can turn quantisation factor 10 into DecimalLiteral Nothing 1 1  0.06 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 2 2 into quantisation factor 50  0.11 ms [really-safe-money-gen]  ✓ can turn quantisation factor 50 into DecimalLiteral Nothing 2 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 5 2 into quantisation factor 20  455.39 ms [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with fromDecimalLiteral  2921.21 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid literals  2892.42 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  1120.08 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on a negative literal whose reciprocal would be representable (e.g. -0.05)  0.02 ms [really-safe-money-gen]  ✓ fails on the negative literal -1  0.00 ms [really-safe-money-gen]  ✓ fails to render negative fractionals  687.10 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails to render a 0  650.87 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails to render a non-1 integer  164.34 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on a valid quantisation factor decimal literal (e.g. 0.05 -> QuantisationFactor 20)  0.01 ms [really-safe-money-gen]  ✓ can turn quantisation factor 1 into DecimalLiteral Nothing 1 0  0.01 ms [really-safe-money-gen]  ✓ can turn quantisation factor 100 into DecimalLiteral Nothing 1 2  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1 0 into quantisation factor 1  0.00 ms [really-safe-money-gen]  ✓ can turn quantisation factor 1000 into DecimalLiteral Nothing 1 3  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1 3 into quantisation factor 1000  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1 2 into quantisation factor 100  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1 1 into quantisation factor 10  0.00 ms [really-safe-money-gen]  GenValid QuantisationFactor [really-safe-money-gen]  genValid :: Gen QuantisationFactor [really-safe-money-gen]  ✓ only generates valid 'QuantisationFactor's  18.04 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromWord32 [really-safe-money-gen]  ✓ produces valid quantisation factors  139.24 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.AccountSpec [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  261.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  164.61 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails to sum above maxBound  0.01 ms [really-safe-money-gen]  ✓ correctly sums [1,2,3] to 6  0.00 ms [really-safe-money-gen]  ✓ fails to sum above maxBound even if the result is back below maxBound  0.00 ms [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid accounts  14.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ roundtrips with toRational  113.14 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid rational  137.05 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ represents 0 with a Positive sign  39.14 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid Account [really-safe-money-gen]  genValid :: Gen Account [really-safe-money-gen]  ✓ only generates valid 'Account's  24.27 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Ratios when the quantisation factor is nonzero  40.51 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ represents 0 with a Positive sign  24.49 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toDouble back to double  87.87 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid rational  50.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ fails for values below minBound Word64 negated  0.01 ms [really-safe-money-gen]  ✓ fails for values exceeding maxBound Word64  0.00 ms [really-safe-money-gen]  ✓ returns a Positive result for positive values  0.00 ms [really-safe-money-gen]  ✓ produces valid accounts  35.82 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ returns a Negative result for negative values  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toMinimalQuantisations  37.01 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ returns a Positive result for 0  0.01 ms [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  77.77 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces an invalid Rational with quantisation factor 0  39.50 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes this USD to CHF rate correctly  0.02 ms [really-safe-money-gen]  ✓ produces valid conversion rates  154.54 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  264.16 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces an infinite or NaN Double with quantisation factor 0  22.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid Doubles when the quantisation factor is nonzero  39.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ Produces a result that has been rounded in the right direction when using RoundDown  222.96 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  211.28 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Produces a result that has been rounded in the right direction when using RoundUp  228.64 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  279.65 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ preserves the Positive sign when fractioning a positive account by zero  0.01 ms [really-safe-money-gen]  ✓ Correctly fractions 101 with 1 % 100  0.01 ms [really-safe-money-gen]  ✓ Correctly fractions 100 with 1 % 100  0.01 ms [really-safe-money-gen]  add [really-safe-money-gen]  ✓ fails for maxBound + maxBound  0.00 ms [really-safe-money-gen]  ✓ produces valid amounts  44.27 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  51.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for minBound + minBound  0.00 ms [really-safe-money-gen]  ✓ fails for minBound + (-1)  0.00 ms [really-safe-money-gen]  ✓ has a left-identity: zero  45.91 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for maxBound + 1  0.01 ms [really-safe-money-gen]  ✓ is commutative  71.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  33.03 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  79.31 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Show Account and Read Account [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  103.77 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  ✓ correctly distributes 5 into 3  0.02 ms [really-safe-money-gen]  Show (Distribution Account) and Read (Distribution Account) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  254.91 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  50.16 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Eq (Distribution Account) [really-safe-money-gen]  (==) :: (Distribution Account) -> (Distribution Account) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution Account)"s  30.00 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution Account)"s  40.33 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution Account)"s  30.53 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution Account)"s  38.71 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (/=) :: (Distribution Account) -> (Distribution Account) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution Account)"s  38.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution Account)"s  47.74 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ correctly distributes 10 into 4  0.01 ms [really-safe-money-gen]  ✓ correctly distributes 3 into 3  0.00 ms [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  73.73 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  abs [really-safe-money-gen]  ✓ produces valid amounts  15.15 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Eq [really-safe-money-gen]  Eq Account [really-safe-money-gen]  (==) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is transitive for "valid Account"s  28.26 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid Account"s  20.18 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Account"s  12.31 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid Account"s  26.05 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (/=) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid Account"s  34.91 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Account"s  23.42 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ says negative 0 equals positive 0  0.01 ms [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  159.91 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fractionRatio [really-safe-money-gen]  ✓ produces valid amounts  151.30 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ returns zero when the account is zero  97.23 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 600 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.02 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 1 0  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} into DecimalLiteral (Just True) 500 8  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 200 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 3 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just False) 200 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 4 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 100 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 100 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 10 2  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just False) 600 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 500 8 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000}  0.01 ms [really-safe-money-gen]  Account.toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with Account.fromDecimalLiteral  1746.41 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  1733.23 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just False) 4 2  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just False) 2 0  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just False) 20 2  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 20 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 2 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 3 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 10 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 1 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 500 2  0.00 ms [really-safe-money-gen]  Account.fromDecimalLiteral [really-safe-money-gen]  ✓ fails on this amount that is too precise  0.00 ms [really-safe-money-gen]  ✓ fails on this amount that is too precise  0.00 ms [really-safe-money-gen]  ✓ produces valid factors  132.19 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 500 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.01 ms [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid accounts  21.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  124.38 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]  ✓ produces valid amounts  390.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  negate [really-safe-money-gen]  ✓ produces valid amounts  17.54 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  41.69 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid rational  116.93 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ord [really-safe-money-gen]  ✓ says -3 is smaller than 2  0.01 ms [really-safe-money-gen]  ✓ says 4 is smaller than 5  0.00 ms [really-safe-money-gen]  Ord Account [really-safe-money-gen]  (<) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid Account"'s  38.60 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Account"'s  28.33 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Account"'s  13.79 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (>) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid Account"'s  15.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Account"'s  19.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid Account"'s  33.79 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "max :: (Account -> Account -> Account)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid Account"'s  44.47 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (<=) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid Account"'s  26.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Account"'s  28.41 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid Account"'s  32.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid Account"'s  23.38 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (>=) :: Account -> Account -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid Account"'s  22.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid Account"'s  44.11 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid Account"'s  27.57 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Account"'s  29.74 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "min :: (Account -> Account -> Account)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid Account"'s  39.95 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ says -6 is greater than -7  0.00 ms [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ succeeds for 3 * 6  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  36.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  23.46 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  46.60 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  70.24 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for 2 * maxbound  0.01 ms [really-safe-money-gen]  ✓ fails for 3 * minBound  0.00 ms [really-safe-money-gen]  ✓ has an identity: 1  33.92 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ fails for maxBound - minBound  0.01 ms [really-safe-money-gen]  ✓ fails for minBound - 1  0.00 ms [really-safe-money-gen]  ✓ fails for minBound - maxBound  0.00 ms [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  49.72 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Numeric.DecimalLiteralSpec [really-safe-money-gen]  DecimalLiteral.fromString [really-safe-money-gen]  ✓ parses a decimal number with a fractional part  0.23 ms [really-safe-money-gen]  ✓ can parse any rendered decimal literal  9.46 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses an integer followed by non-digit characters (stops at the non-digit)  0.05 ms [really-safe-money-gen]  ✓ fails to parse scientific notation  0.00 ms [really-safe-money-gen]  IsString [really-safe-money-gen]  ✓ parses a valid literal via OverloadedStrings  0.02 ms [really-safe-money-gen]  ✓ throws an informative error for an invalid string literal  0.02 ms [really-safe-money-gen]  toString [really-safe-money-gen]  ✓ can render any decimal literal  1.51 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]  ✓ renders to valid decimal literals  20.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails at the 256-digit limit (1 / 2^256 needs 256 fractional digits)  0.16 ms [really-safe-money-gen]  ✓ can parse any rendered rational  8.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ renders to valid rationals  0.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ gives 1 % 10 for DecimalLiteral Nothing 1 1  0.00 ms [really-safe-money-gen]  ✓ gives Nothing for a negative literal  0.00 ms [really-safe-money-gen]  Rational [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 1 3 into rational (-1) % 1000  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 300 5 into rational (-3) % 1000  0.00 ms [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ renders -3 with a negative sign  0.00 ms [really-safe-money-gen]  ✓ can parse any rendered rational  9.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ renders to valid decimal literals  27.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ renders -1 with a negative sign  0.01 ms [really-safe-money-gen]  ✓ renders 0 as a non-negative literal  0.00 ms [really-safe-money-gen]  ✓ can turn rational (-1) % 1000 into DecimalLiteral (Just False) 1 3  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 8 1 into rational (-4) % 5  0.00 ms [really-safe-money-gen]  ✓ can turn rational (-6) % 1 into DecimalLiteral (Just False) 6 0  0.00 ms [really-safe-money-gen]  ✓ can turn rational 240009 % 20000 into DecimalLiteral Nothing 1200045 5  0.00 ms [really-safe-money-gen]  ✓ can turn rational 2 % 1 into DecimalLiteral Nothing 2 0  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 10 0 into rational 10 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn rational (-3) % 1 into DecimalLiteral (Just False) 3 0  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 9 2 into rational 9 % 100  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 2 0 into rational 2 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 20 4 into rational 1 % 500  0.00 ms [really-safe-money-gen]  ✓ can turn rational 1 % 500 into DecimalLiteral Nothing 2 3  0.00 ms [really-safe-money-gen]  ✓ can turn rational 7 % 1 into DecimalLiteral Nothing 7 0  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 50 1 into rational 5 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1 0 into rational 1 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn rational 5 % 1 into DecimalLiteral Nothing 5 0  0.00 ms [really-safe-money-gen]  ✓ can turn rational 1 % 1 into DecimalLiteral Nothing 1 0  0.00 ms [really-safe-money-gen]  ✓ can turn rational 9 % 100 into DecimalLiteral Nothing 9 2  0.00 ms [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ renders to valid rationals  2.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ can turn rational 10 % 1 into DecimalLiteral Nothing 10 0  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 400 0 into rational 400 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 1200045 5 into rational 240009 % 20000  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral Nothing 7000 3 into rational 7 % 1  0.00 ms [really-safe-money-gen]  ✓ can turn rational 400 % 1 into DecimalLiteral Nothing 400 0  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 600 2 into rational (-6) % 1  0.00 ms [really-safe-money-gen]  ✓ can turn rational (-3) % 1000 into DecimalLiteral (Just False) 3 3  0.00 ms [really-safe-money-gen]  ✓ can turn rational (-4) % 5 into DecimalLiteral (Just False) 8 1  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just False) 3 0 into rational (-3) % 1  0.01 ms [really-safe-money-gen]  DecimalLiteral.fromStringM [really-safe-money-gen]  ✓ fails when fromString fails  0.04 ms [really-safe-money-gen]  ✓ succeeds when fromString succeeds  0.01 ms [really-safe-money-gen]  ✓ does the same as DecimalLiteral.fromString  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid DecimalLiteral [really-safe-money-gen]  genValid :: Gen DecimalLiteral [really-safe-money-gen]  ✓ only generates valid 'DecimalLiteral's  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  setSignRequired [really-safe-money-gen]  ✓ does not change an existing positive sign  0.00 ms [really-safe-money-gen]  ✓ turns a Nothing sign into Just True (positive)  0.00 ms [really-safe-money-gen]  ✓ produces valid values  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ does not change an existing negative sign  0.00 ms [really-safe-money-gen]  examples [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 1200045 5  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 9 2  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 300 5  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 8 1  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 20 4  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 1 0  0.00 ms [really-safe-money-gen]  ✓ can parse "5.0"  0.00 ms [really-safe-money-gen]  ✓ can parse "6.00"  0.00 ms [really-safe-money-gen]  ✓ can parse "12.00045"  0.00 ms [really-safe-money-gen]  ✓ can parse "0.00300"  0.00 ms [really-safe-money-gen]  ✓ can parse "1"  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 400 0  0.00 ms [really-safe-money-gen]  ✓ can parse "7.000"  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral (Just False) 3 0  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 600 2  0.00 ms [really-safe-money-gen]  ✓ can parse "-3"  0.00 ms [really-safe-money-gen]  ✓ can parse "0.001"  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral (Just True) 2 0  0.00 ms [really-safe-money-gen]  ✓ can parse "0.09"  0.00 ms [really-safe-money-gen]  ✓ can parse "0.0020"  0.14 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 7000 3  0.01 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 1 3  0.00 ms [really-safe-money-gen]  ✓ can parse "400"  0.01 ms [really-safe-money-gen]  ✓ can parse "0.8"  0.00 ms [really-safe-money-gen]  ✓ can parse "+2"  0.00 ms [really-safe-money-gen]  ✓ can render DecimalLiteral Nothing 50 1  0.00 ms [really-safe-money-gen]  setSignOptional [really-safe-money-gen]  ✓ produces valid values  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Natural [really-safe-money-gen]  toNatural [really-safe-money-gen]  ✓ renders to valid naturals  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromNatural [really-safe-money-gen]  ✓ renders to valid decimal literals  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ can parse any rendered literal  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  digits [really-safe-money-gen]  ✓ produces valid numbers of digits  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Int [really-safe-money-gen]  toInt [really-safe-money-gen]  ✓ fails on a value exceeding maxBound Int  0.05 ms [really-safe-money-gen]  ✓ renders to valid words  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on minBound Int  0.03 ms [really-safe-money-gen]  ✓ fails on a value below minBound Int  0.00 ms [really-safe-money-gen]  ✓ succeeds on maxBound Int  0.00 ms [really-safe-money-gen]  fromInt [really-safe-money-gen]  ✓ renders to valid decimal literals  7.07 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ can parse any rendered literal  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Integer [really-safe-money-gen]  fromInteger [really-safe-money-gen]  ✓ represents positive integers with no sign  0.00 ms [really-safe-money-gen]  ✓ represents negative integers with Just False sign  0.00 ms [really-safe-money-gen]  ✓ renders to valid decimal literals  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ represents 0 without a negative sign  0.00 ms [really-safe-money-gen]  ✓ can parse any rendered literal  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toInteger [really-safe-money-gen]  ✓ renders to valid words  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Word [really-safe-money-gen]  toWord [really-safe-money-gen]  ✓ fails on a value exceeding maxBound Word  0.00 ms [really-safe-money-gen]  ✓ renders to valid words  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on maxBound Word  0.00 ms [really-safe-money-gen]  fromWord [really-safe-money-gen]  ✓ can parse any rendered literal  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ renders to valid decimal literals  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  setMinimumDigits [really-safe-money-gen]  ✓ produces valid literals  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces values with more than the given number of digits  0.98 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ does not change the value of the literal  5.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountOfSpec [really-safe-money-gen]  INR [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid amounts  5.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.02 ms [really-safe-money-gen]  GenValid (AmountOf * INR) [really-safe-money-gen]  genValid :: Gen (AmountOf * INR) [really-safe-money-gen]  ✓ only generates valid '(AmountOf * INR)'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  0.10 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  6.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  add [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  3.67 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  format [really-safe-money-gen]  ✓ produces valid strings  1.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  2.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  3.89 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  2.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.43 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  3.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.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ fails on NaN  0.04 ms [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  0.01 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  Ord (AmountOf * INR) [really-safe-money-gen]  "min :: (AmountOf * INR -> AmountOf * INR -> AmountOf * INR)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AmountOf * INR)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * INR)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AmountOf * INR)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * INR)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * INR)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AmountOf * INR)"'s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * INR)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * INR)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * INR)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * INR)"'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * INR)"'s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AmountOf * INR)"'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AmountOf * INR -> AmountOf * INR -> AmountOf * INR)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AmountOf * INR)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AmountOf * INR)"'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * INR)"'s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * INR)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ succeeds on 1  5.07 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.63 ms [really-safe-money-gen]  ✓ succeeds on 0  5.00 ms [really-safe-money-gen]  ✓ produces valid Amounts  5.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  0.53 ms [really-safe-money-gen]  ✓ roundtrips with toRational  5.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  5.64 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid Int64s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  9.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  5.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  3.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an amount through its decimal literal  3.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AmountOf * INR) and Read (AmountOf * INR) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.37 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.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.04 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AmountOf * INR) [really-safe-money-gen]  (==) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AmountOf * INR)"s  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AmountOf * INR)"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * INR)"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * INR)"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AmountOf * INR) -> (AmountOf * INR) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * INR)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AmountOf * INR)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid AmountOfs  2.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 77  0.59 ms [really-safe-money-gen]  ✓ fails on 7.123  0.19 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.08 ms [really-safe-money-gen]  ✓ roundtrips with toRatio  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [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]  Show (Distribution (AmountOf * INR)) and Read (Distribution (AmountOf * INR)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AmountOf * INR)) [really-safe-money-gen]  (==) :: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AmountOf * INR))"s  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AmountOf * INR))"s  1.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AmountOf * INR))"s  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AmountOf * INR))"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (Distribution (AmountOf * INR)) -> (Distribution (AmountOf * INR)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AmountOf * INR))"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AmountOf * INR))"s  0.11 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.52 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]  ADA [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.24 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.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.77 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals  0.58 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.52 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ produces valid amounts  0.47 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  1.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  0.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an amount through its decimal literal  1.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.45 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  0.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  INR [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  1.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid Int64s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AmountOf * ADA) [really-safe-money-gen]  (/=) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AmountOf * ADA)"s  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * ADA)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AmountOf * ADA)"s  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AmountOf * ADA)"s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * ADA)"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * ADA)"s  0.21 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.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.75 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRational  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid Amounts  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 0  0.01 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  1.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  1.39 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.65 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  BTC [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.88 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.01 ms [really-safe-money-gen]  ✓ fails on 7.123  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 77  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRatio  0.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid AmountOfs  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AmountOf * ADA) [really-safe-money-gen]  "min :: (AmountOf * ADA -> AmountOf * ADA -> AmountOf * ADA)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AmountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AmountOf * ADA -> AmountOf * ADA -> AmountOf * ADA)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AmountOf * ADA)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * ADA)"'s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * ADA)"'s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AmountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AmountOf * ADA)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * ADA)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * ADA)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * ADA)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * ADA)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * ADA)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AmountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AmountOf * ADA) -> (AmountOf * ADA) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * ADA)"'s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AmountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * ADA)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * ADA)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid amounts  4.06 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  Show (Distribution (AmountOf * ADA)) and Read (Distribution (AmountOf * ADA)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  3.00 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AmountOf * ADA)) [really-safe-money-gen]  (==) :: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AmountOf * ADA))"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AmountOf * ADA))"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AmountOf * ADA))"s  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AmountOf * ADA))"s  0.31 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (Distribution (AmountOf * ADA)) -> (Distribution (AmountOf * ADA)) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AmountOf * ADA))"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AmountOf * ADA))"s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  1.34 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AmountOf * ADA) [really-safe-money-gen]  genValid :: Gen (AmountOf * ADA) [really-safe-money-gen]  ✓ only generates valid '(AmountOf * ADA)'s  0.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AmountOf * ADA) and Read (AmountOf * ADA) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  1.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  CHF [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.87 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips an amount through its decimal literal  0.62 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  1.02 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.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.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.51 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.55 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  ✓ has a left-identity: zero  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AmountOf * CHF) [really-safe-money-gen]  genValid :: Gen (AmountOf * CHF) [really-safe-money-gen]  ✓ only generates valid '(AmountOf * CHF)'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AmountOf * CHF) and Read (AmountOf * CHF) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  0.93 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ fails on -1  0.01 ms [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRational  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ produces valid Amounts  0.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid amounts  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.00 ms [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  Eq (Distribution (AmountOf * CHF)) [really-safe-money-gen]  (/=) :: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AmountOf * CHF))"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AmountOf * CHF))"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AmountOf * CHF)) -> (Distribution (AmountOf * CHF)) -> Bool [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AmountOf * CHF))"s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AmountOf * CHF))"s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AmountOf * CHF))"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AmountOf * CHF))"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AmountOf * CHF)) and Read (Distribution (AmountOf * CHF)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  2.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.28 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.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.61 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.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.53 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRatio  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on 7.123  0.01 ms [really-safe-money-gen]  ✓ succeeds on 77  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ produces valid AmountOfs  0.79 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AmountOf * CHF) [really-safe-money-gen]  "max :: (AmountOf * CHF -> AmountOf * CHF -> AmountOf * CHF)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AmountOf * CHF)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * CHF)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * CHF)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AmountOf * CHF)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AmountOf * CHF -> AmountOf * CHF -> AmountOf * CHF)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AmountOf * CHF)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * CHF)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * CHF)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * CHF)"'s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AmountOf * CHF)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * CHF)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * CHF)"'s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AmountOf * CHF)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * CHF)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * CHF)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AmountOf * CHF)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * CHF)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AmountOf * CHF) [really-safe-money-gen]  (==) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AmountOf * CHF)"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * CHF)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * CHF)"s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AmountOf * CHF)"s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AmountOf * CHF) -> (AmountOf * CHF) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * CHF)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AmountOf * CHF)"s  0.11 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.56 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ produces valid amounts  2.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  0.95 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid Int64s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ is absorbed by 0  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.25 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [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.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  USD [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AmountOf * USD) and Read (AmountOf * USD) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  0.90 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.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  distribute [really-safe-money-gen]  Eq (Distribution (AmountOf * USD)) [really-safe-money-gen]  (/=) :: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AmountOf * USD))"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AmountOf * USD))"s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AmountOf * USD)) -> (Distribution (AmountOf * USD)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AmountOf * USD))"s  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AmountOf * USD))"s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AmountOf * USD))"s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AmountOf * USD))"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AmountOf * USD)) and Read (Distribution (AmountOf * USD)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  1.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (AmountOf * USD) [really-safe-money-gen]  (==) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AmountOf * USD)"s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * USD)"s  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * USD)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AmountOf * USD)"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AmountOf * USD)"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * USD)"s  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ fails on 7.123  0.01 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ produces valid AmountOfs  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 77  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRatio  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ produces valid Amounts  0.72 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ roundtrips with toRational  0.29 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  BTC [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  0.84 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]  format [really-safe-money-gen]  ✓ produces valid strings  0.76 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  0.24 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.61 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  2.61 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]  toRational [really-safe-money-gen]  ✓ produces valid Rationals  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips an amount through its decimal literal  1.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  0.73 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AmountOf * USD) [really-safe-money-gen]  genValid :: Gen (AmountOf * USD) [really-safe-money-gen]  ✓ only generates valid '(AmountOf * USD)'s  0.11 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.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.32 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid Int64s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ produces valid amounts  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  0.69 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ has a left-identity: zero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  ✓ is associative when both succeed  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  1.07 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.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.80 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AmountOf * USD) [really-safe-money-gen]  "min :: (AmountOf * USD -> AmountOf * USD -> AmountOf * USD)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AmountOf * USD)"'s  2.36 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * USD)"'s  0.37 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AmountOf * USD)"'s  0.39 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * USD)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * USD)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AmountOf * USD)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * USD)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * USD)"'s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * USD)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AmountOf * USD)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * USD)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AmountOf * USD -> AmountOf * USD -> AmountOf * USD)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AmountOf * USD)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AmountOf * USD) -> (AmountOf * USD) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AmountOf * USD)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * USD)"'s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * USD)"'s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * USD)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.21 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is absorbed by 0  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  0.18 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  BTC [really-safe-money-gen]  fromDecimalLiteral [really-safe-money-gen]  ✓ parses the integer literal 1 as one whole unit  0.01 ms [really-safe-money-gen]  ✓ produces valid amounts  0.63 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.61 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  0.17 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid Int64s  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.27 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  4.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fraction [really-safe-money-gen]  ✓ produces valid amounts  0.94 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ produces valid AmountOfs  1.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ succeeds on 0  0.01 ms [really-safe-money-gen]  ✓ succeeds on 77  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ fails on 7.123  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ roundtrips with toRatio  0.57 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  4.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.96 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (AmountOf * BTC) and Read (AmountOf * BTC) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  0.89 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  GenValid (AmountOf * BTC) [really-safe-money-gen]  genValid :: Gen (AmountOf * BTC) [really-safe-money-gen]  ✓ only generates valid '(AmountOf * BTC)'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDecimalLiteral [really-safe-money-gen]  ✓ produces valid decimal literals  0.57 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips an amount through its decimal literal  1.08 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.74 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.04 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.68 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]  fromDouble [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ produces valid amounts  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.00 ms [really-safe-money-gen]  add [really-safe-money-gen]  ✓ has a left-identity: zero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is commutative  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.16 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  2.50 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ produces valid amounts  1.91 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  1.99 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  2.02 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Ord (AmountOf * BTC) [really-safe-money-gen]  (<) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (AmountOf * BTC)"'s  1.59 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * BTC)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * BTC)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "min :: (AmountOf * BTC -> AmountOf * BTC -> AmountOf * BTC)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (AmountOf * BTC)"'s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (<=) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * BTC)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * BTC)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (AmountOf * BTC)"'s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * BTC)"'s  1.60 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  "max :: (AmountOf * BTC -> AmountOf * BTC -> AmountOf * BTC)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (AmountOf * BTC)"'s  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * BTC)"'s  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (AmountOf * BTC)"'s  0.20 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * BTC)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (>=) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (AmountOf * BTC)"'s  0.16 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * BTC)"'s  0.10 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * BTC)"'s  0.09 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (AmountOf * BTC)"'s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ produces valid Amounts  3.44 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  0.33 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  0.00 ms [really-safe-money-gen]  ✓ fails on -1  0.00 ms [really-safe-money-gen]  ✓ succeeds on 1  0.01 ms [really-safe-money-gen]  ✓ fails on NaN  0.00 ms [really-safe-money-gen]  ✓ succeeds on 0  0.01 ms [really-safe-money-gen]  Eq (AmountOf * BTC) [really-safe-money-gen]  (==) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (AmountOf * BTC)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (AmountOf * BTC)"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (AmountOf * BTC)"s  0.19 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (AmountOf * BTC)"s  0.14 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (/=) :: (AmountOf * BTC) -> (AmountOf * BTC) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (AmountOf * BTC)"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (AmountOf * BTC)"s  0.08 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces valid Rationals  0.30 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  0.11 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  0.85 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ is absorbed by 0  0.22 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is distributive with add when both succeed  0.42 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.40 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ has an identity: 1  0.48 ms [really-safe-money-gen]  passed for all of 100 inputs. [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]  distribute [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  0.28 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ produces valid amounts  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Eq (Distribution (AmountOf * BTC)) [really-safe-money-gen]  (/=) :: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution (AmountOf * BTC))"s  0.12 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution (AmountOf * BTC))"s  0.26 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  (==) :: (Distribution (AmountOf * BTC)) -> (Distribution (AmountOf * BTC)) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution (AmountOf * BTC))"s  0.35 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution (AmountOf * BTC))"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (Distribution (AmountOf * BTC))"s  0.13 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution (AmountOf * BTC))"s  0.15 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  Show (Distribution (AmountOf * BTC)) and Read (Distribution (AmountOf * BTC)) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  3.23 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen] Money.AmountSpec [really-safe-money-gen]  fromRational [really-safe-money-gen]  ✓ succeeds on 1  35.16 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 0  34.54 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  15.55 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on really large numbers  0.01 ms [really-safe-money-gen]  ✓ fails on -1  32.40 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with toRational  74.89 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on NaN  12.73 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 77.02 with quantisation factor 100  0.01 ms [really-safe-money-gen]  ✓ fails on 7.123 with quantisation factor 10  0.00 ms [really-safe-money-gen]  ✓ fails on +Infinity  26.10 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid Amounts  118.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toMinimalQuantisations [really-safe-money-gen]  ✓ produces valid Int64s  20.56 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ roundtrips with fromMinimalQuantisations  17.04 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  format [really-safe-money-gen]  ✓ produces valid strings  146.08 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ formats 1 correctly with quantisation factor 10  0.04 ms [really-safe-money-gen]  ✓ formats 1 correctly with quantisation factor 1  0.01 ms [really-safe-money-gen]  DecimalLiteral [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 200 2  0.01 ms [really-safe-money-gen]  Amount.toDecimalLiteral [really-safe-money-gen]  ✓ roundtrips with Amount.fromDecimalLiteral  1628.36 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid decimal literals  1588.31 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 2 0  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 500 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.06 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 600 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 20 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 3 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 100 2  0.01 ms [really-safe-money-gen]  Amount.fromDecimalLiteral [really-safe-money-gen]  ✓ produces valid factors  141.03 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on this amount that is too precise  0.01 ms [really-safe-money-gen]  ✓ fails on this amount that is too precise  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 1} into DecimalLiteral (Just True) 1 0  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 100 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 2 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000} into DecimalLiteral (Just True) 500 8  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 3 2  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 10 2  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 4 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 500 2  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 1 0 into decimalLiteral QuantisationFactor {unQuantisationFactor = 1}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 20 2  0.01 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 500 8 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100000000}  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 200 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 100}  0.00 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 20} into DecimalLiteral (Just True) 600 2  0.01 ms [really-safe-money-gen]  ✓ can turn decimalLiteral QuantisationFactor {unQuantisationFactor = 100} into DecimalLiteral (Just True) 4 2  0.00 ms [really-safe-money-gen]  ✓ can turn DecimalLiteral (Just True) 10 2 into decimalLiteral QuantisationFactor {unQuantisationFactor = 20}  0.00 ms [really-safe-money-gen]  convert [really-safe-money-gen]  ✓ converts this USD to CHF correctly  0.01 ms [really-safe-money-gen]  ✓ succeeds in converting 1:1 without rounding if the quantisation factor is the same  80.90 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  446.91 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  distribute [really-safe-money-gen]  Eq (Distribution Amount) [really-safe-money-gen]  (/=) :: (Distribution Amount) -> (Distribution Amount) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (Distribution Amount)"s  21.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (Distribution Amount)"s  15.64 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (==) :: (Distribution Amount) -> (Distribution Amount) -> Bool [really-safe-money-gen]  ✓ is transitive for "valid (Distribution Amount)"s  21.41 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (Distribution Amount)"s  24.28 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (Distribution Amount)"s  27.85 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (Distribution Amount)"s  13.45 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces unequal chunks where the larger is strictly greater than the smaller  45.02 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Show (Distribution Amount) and Read (Distribution Amount) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  272.03 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ correctly distributes 5 into 3  0.01 ms [really-safe-money-gen]  ✓ is invalid when the larger chunk is not larger  0.00 ms [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  35.99 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  49.80 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ correctly distributes 3 into 3  0.01 ms [really-safe-money-gen]  ✓ produces results that sum up to the greater whole  61.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is invalid when the so-called larger chunk is smaller  0.01 ms [really-safe-money-gen]  ✓ correctly distributes 10 into 4  0.00 ms [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ succeeds for (x+1) - x = 1  37.55 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds for x - x = 0  27.94 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for 0 - maxBound  0.01 ms [really-safe-money-gen]  ✓ fails for 0 - 1  0.00 ms [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  39.15 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  fromMinimalQuantisations [really-safe-money-gen]  ✓ produces valid amounts  21.63 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  GenValid Amount [really-safe-money-gen]  genValid :: Gen Amount [really-safe-money-gen]  ✓ only generates valid 'Amount's  24.77 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toRational [really-safe-money-gen]  ✓ produces an invalid Rational with quantisation factor 0  24.30 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  87.41 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Show Amount and Read Amount [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  96.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  validateStrictlyPositive [really-safe-money-gen]  ✓ succeeds for Amount 1  0.06 ms [really-safe-money-gen]  ✓ fails for zero  0.00 ms [really-safe-money-gen]  toDouble [really-safe-money-gen]  ✓ produces valid Doubles  32.10 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces an infinite Double with quantisation factor 0  21.61 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 7702 with quantisation factor 100  0.01 ms [really-safe-money-gen]  Eq Amount [really-safe-money-gen]  (/=) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid Amount"s  28.42 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid Amount"s  50.54 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (==) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid Amount"s  40.69 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Amount"s  14.25 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid Amount"s  19.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Amount"s  12.37 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  toRatio [really-safe-money-gen]  ✓ produces valid Rationals when the quantisation factor is nonzero  71.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces an invalid Rational with quantisation factor 0  13.21 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  quantisationFactorFormatString [really-safe-money-gen]  ✓ uses %f for the degenerate zero quantisation factor  0.03 ms [really-safe-money-gen]  ✓ uses two decimals for hundredths  0.01 ms [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  252.63 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  252.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ correctly sums [1,2,3] to 6  0.01 ms [really-safe-money-gen]  ✓ succeeds at exactly maxBound  0.00 ms [really-safe-money-gen]  ✓ fails to sum above maxBound  0.00 ms [really-safe-money-gen]  fromDouble [really-safe-money-gen]  ✓ fails on really large numbers  0.00 ms [really-safe-money-gen]  ✓ fails on really large numbers  0.02 ms [really-safe-money-gen]  ✓ roundtrips with toDouble, back to double  75.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  40.67 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on NaN  14.76 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on a value way too large (10e1000)  18.97 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 0  20.69 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 77.02 with quantisation factor 100  0.01 ms [really-safe-money-gen]  ✓ fails on +Infinity  12.31 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on -1  22.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on -Infinity  13.17 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 1  27.06 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on 7.123 with quantisation factor 10  0.01 ms [really-safe-money-gen]  zero [really-safe-money-gen]  ✓ is valid  0.00 ms [really-safe-money-gen]  fromRatio [really-safe-money-gen]  ✓ roundtrips with toRatio  69.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 1  32.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on NaN  21.42 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 77.02 with quantisation factor 100  0.01 ms [really-safe-money-gen]  ✓ produces valid Amounts  116.12 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails on 7.123 with quantisation factor 10  0.01 ms [really-safe-money-gen]  ✓ fails on +Infinity  15.37 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds on 0  26.51 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  rate [really-safe-money-gen]  ✓ computes a rate that can be used to do a conversion without rounding  424.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid conversion rates  204.90 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]  fraction [really-safe-money-gen]  ✓ produces valid amounts  138.67 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Correctly fractions 101 with 1 % 100  0.01 ms [really-safe-money-gen]  ✓ Correctly fractions 100 with 1 % 100  0.00 ms [really-safe-money-gen]  ✓ returns zero when the fraction is zero  25.08 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Produces a result that has been rounded in the right direction when using RoundUp  155.98 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Produces a result that can be multiplied back  189.96 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ Produces a result that has been rounded in the right direction when using RoundDown  130.30 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  multiply [really-safe-money-gen]  ✓ is absorbed by 0  24.86 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  15.22 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  29.40 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ succeeds for 3 * 6  0.01 ms [really-safe-money-gen]  ✓ has an identity: 1  17.94 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for 2 * maxbound  0.01 ms [really-safe-money-gen]  ✓ is distributive with add when both succeed  35.79 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  Ord Amount [really-safe-money-gen]  (>=) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is antisymmetric for "valid Amount"'s  19.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Amount"'s  17.89 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid Amount"'s  22.37 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Amount"'s  18.07 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (<) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid Amount"'s  29.75 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid Amount"'s  23.08 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Amount"'s  25.09 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (>) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid Amount"'s  18.40 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid Amount"'s  19.29 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid Amount"'s  27.37 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "min :: (Amount -> Amount -> Amount)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid Amount"'s  20.68 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  (<=) :: Amount -> Amount -> Bool [really-safe-money-gen]  ✓ is transitive for "valid Amount"'s  15.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid Amount"'s  18.80 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid Amount"'s  22.72 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid Amount"'s  10.11 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  "max :: (Amount -> Amount -> Amount)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid Amount"'s  19.31 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ matches what you would get with Integer, if nothing fails  34.50 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  38.81 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for maxBound + maxBound  0.00 ms [really-safe-money-gen]  ✓ has a right-identity: zero  17.13 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ is commutative  43.43 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  27.89 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen]  ✓ fails for maxBound + 1  0.01 ms [really-safe-money-gen]  ✓ has a left-identity: zero  24.52 ms [really-safe-money-gen]  passed for all of 10000 inputs. [really-safe-money-gen] Money.MultiAmountSpec [really-safe-money-gen]  addAmount [really-safe-money-gen]  ✓ keeps the currency entry after adding to an existing non-zero amount  9.25 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  38.51 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is invalid when it contains a zero amount  13.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtractAmount [really-safe-money-gen]  ✓ removes the currency entry when subtracting the full amount  17.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces valid amounts  18.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ keeps the currency entry when subtracting less than the full amount  12.17 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  convertAll [really-safe-money-gen]  ✓ produces valid results when converting two currencies to one  44.19 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ does the same as 'convert' when there is only one amount  43.66 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ produces the right result in this example  11.07 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ succeeds when the converted total equals exactly maxBound  3.09 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  lookupAmount [really-safe-money-gen]  ✓ produces valid amounts  15.76 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ can find an added amount  16.20 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  fromAmount [really-safe-money-gen]  ✓ produces valid amounts  4.25 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  38.80 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  subtract [really-safe-money-gen]  ✓ produces valid amounts  24.39 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  36.78 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  Show (MultiAmount Currency) and Read (MultiAmount Currency) [really-safe-money-gen]  ✓ are implemented such that read . show == id for valid values  72.49 ms [really-safe-money-gen]  passed for all of 100 inputs. [really-safe-money-gen]  ✓ is invalid when it contains a currency with a zero quantisation factor  13.64 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  sum [really-safe-money-gen]  ✓ produces valid amounts  71.68 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  add [really-safe-money-gen]  ✓ produces valid amounts  57.45 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a left-identity: zero  46.10 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ has a right-identity: zero  42.79 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is commutative  97.67 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is associative when both succeed  172.89 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  Eq (MultiAmount Currency) [really-safe-money-gen]  (/=) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAmount Currency)"s  32.13 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a == b) for "valid (MultiAmount Currency)"s  39.90 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (==) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAmount Currency)"s  33.91 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> not $ a /= b) for "valid (MultiAmount Currency)"s  50.89 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAmount Currency)"s  37.65 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is symmetric for "valid (MultiAmount Currency)"s  36.43 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  Ord (MultiAmount Currency) [really-safe-money-gen]  (<) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == LT) for "valid (MultiAmount Currency)"'s  50.42 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAmount Currency)"'s  47.05 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAmount Currency)"'s  23.85 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  "max :: (MultiAmount Currency -> MultiAmount Currency -> MultiAmount Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a >= b then a else b) for "valid (MultiAmount Currency)"'s  53.82 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (>=) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAmount Currency)"'s  24.00 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAmount Currency)"'s  52.31 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= LT) for "valid (MultiAmount Currency)"'s  45.81 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (MultiAmount Currency)"'s  47.23 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (>) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b == GT) for "valid (MultiAmount Currency)"'s  52.10 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antireflexive for "valid (MultiAmount Currency)"'s  38.01 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAmount Currency)"'s  39.38 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  (<=) :: (MultiAmount Currency) -> (MultiAmount Currency) -> Bool [really-safe-money-gen]  ✓ is equivalent to (\a b -> compare a b /= GT) for "valid (MultiAmount Currency)"'s  42.70 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is reflexive for "valid (MultiAmount Currency)"'s  28.09 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is antisymmetric for "valid (MultiAmount Currency)"'s  39.96 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  ✓ is transitive for "valid (MultiAmount Currency)"'s  43.72 ms [really-safe-money-gen]  passed for all of 1000 inputs. [really-safe-money-gen]  "min :: (MultiAmount Currency -> MultiAmount Currency -> MultiAmount Currency)" [really-safe-money-gen]  ✓ is equivalent to (\a b -> if a <= b then a else b) for "valid (MultiAmount Currency)"'s  50.39 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]  [really-safe-money-gen]  Examples: 2407929 [really-safe-money-gen]  Passed: 1725 [really-safe-money-gen]  Failed: 0 [really-safe-money-gen]  Sum of test runtimes: 50.32 seconds [really-safe-money-gen]  Test suite took:  4.06 seconds [really-safe-money-gen]  [really-safe-money-gen] Test suite really-safe-money-test: PASS [really-safe-money-gen] Test suite logged to: [really-safe-money-gen] dist/test/really-safe-money-gen-0.0.0.0-really-safe-money-test.log [really-safe-money-gen] 1 of 1 test suites (1 of 1 test cases) passed. [really-safe-money-gen] Phase: haddockPhase [really-safe-money-gen] Phase: installPhase [really-safe-money-gen] Installing library in /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-gen] Phase: fixupPhase [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] shrinking /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/libHSreally-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2-ghc9.10.3.so [really-safe-money-gen] checking for references to /build/ in /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0... [really-safe-money-gen] patching script interpreter paths in /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 [really-safe-money-gen] stripping (with command strip and flags -S -p) in /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0/lib [really-safe-money-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage [really-safe-money-gen] checking for references to /build/ in /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage... [really-safe-money-gen] patching script interpreter paths in /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage [post-build-hook] Uploading to cachix cache "really-safe-money": /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 [post-build-hook] Pushing 7 paths (190 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/s7d4vgxyyghim2q7b2pg4rpjirfwvpbn-really-safe-money-0.0.0.0 (19.26 MiB) [post-build-hook] Pushing /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage (67.43 KiB) [post-build-hook] Pushing /nix/store/a4z6rf11ppcri90jhgwrd9l7bamnmzr5-dekking-value-0.1.0.0-doc (155.51 KiB) [post-build-hook] Pushing /nix/store/sqj27w2d678nrq12s1h7jq7gy9jc300z-dekking-value-0.1.0.0 (281.23 KiB) [post-build-hook] Pushing /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0 (1.27 MiB) [post-build-hook] Pushing /nix/store/izcg4rlglhwbbyvrmsqai5dzwv4q1qpd-dekking-plugin-0.1.0.0 (3.72 MiB) [post-build-hook] Pushing /nix/store/4xggi2s9qvm1b2wg1a99jfgfnrljjrf2-dekking-plugin-0.1.0.0-doc (770.97 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage /nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-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 2 paths... [post-build-hook] copying path '/nix/store/npgsih5y7by6scgsy249mxr30bl9hw4s-really-safe-money-gen-0.0.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage' 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/rdfcnadzfdypy969y3q3s2q7fx5p42lm-really-safe-money-gen-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 2 of 8 built, 6 of 6 downloaded from cache Building /nix/store/54bipy6gdw6sa872c03278jx3wxvash5-really-safe-money-autodocodec-gen-0.0.0.0.drv [really-safe-money-autodocodec-gen] Phase: setupCompilerEnvironmentPhase [really-safe-money-autodocodec-gen] Build with /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3. [really-safe-money-autodocodec-gen] Phase: unpackPhase [really-safe-money-autodocodec-gen] unpacking source archive /nix/store/97sj53r1acvyir5l4sa3fc52y9sm2cid-really-safe-money-autodocodec-gen-source-0.0.0.0/really-safe-money-autodocodec-gen-0.0.0.0.tar.gz [really-safe-money-autodocodec-gen] source root is really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] setting SOURCE_DATE_EPOCH to timestamp 1780902650 of file "really-safe-money-autodocodec-gen-0.0.0.0/test/Spec.hs" [really-safe-money-autodocodec-gen] Phase: patchPhase [really-safe-money-autodocodec-gen] Phase: compileBuildDriverPhase [really-safe-money-autodocodec-gen] setupCompileFlags: -package-db=/build/tmp.UFRdmojrke/setup-package.conf.d -threaded [really-safe-money-autodocodec-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.UFRdmojrke/Main.o ) [really-safe-money-autodocodec-gen] [2 of 2] Linking Setup [really-safe-money-autodocodec-gen] Phase: updateAutotoolsGnuConfigScriptsPhase [really-safe-money-autodocodec-gen] Phase: configurePhase [really-safe-money-autodocodec-gen] configureFlags: --verbose --prefix=/nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --with-gcc=gcc --package-db=/build/tmp.UFRdmojrke/package.conf.d --ghc-option=-j14 --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-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/wl2nw5l4x4dg6kclbgpq7v9212i1s6cy-ncurses-6.6/lib --extra-lib-dirs=/nix/store/2zs4bbi72plfm8j6zxf1js4f3yc4yzwy-libffi-3.5.2/lib --extra-lib-dirs=/nix/store/qhmqdg27kcrlkl8ida6d5hiacw0y8d21-elfutils-0.194/lib --extra-lib-dirs=/nix/store/y56aqb1m3y5davn6hsv4jfbml78qw4mv-gmp-with-cxx-6.3.0/lib --extra-lib-dirs=/nix/store/wjfhh11sfcdf97mvg7hbxickybxzk850-numactl-2.0.18/lib --extra-lib-dirs=/nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/lib [really-safe-money-autodocodec-gen] Using Parsec parser [really-safe-money-autodocodec-gen] Configuring really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] Dependency aeson: using aeson-2.2.4.1 [really-safe-money-autodocodec-gen] Dependency autodocodec: using autodocodec-0.5.0.0 [really-safe-money-autodocodec-gen] Dependency autodocodec-yaml: using autodocodec-yaml-0.4.0.2 [really-safe-money-autodocodec-gen] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-autodocodec-gen] Dependency deepseq: using deepseq-1.5.0.0 [really-safe-money-autodocodec-gen] Dependency genvalidity-sydtest: using genvalidity-sydtest-1.0.1.0 [really-safe-money-autodocodec-gen] Dependency sydtest: using sydtest-0.25.0.1 [really-safe-money-autodocodec-gen] Dependency aeson: using aeson-2.2.4.1 [really-safe-money-autodocodec-gen] Dependency base >=4.7 && <5: using base-4.20.2.0 [really-safe-money-autodocodec-gen] Dependency really-safe-money: using really-safe-money-0.0.0.0 [really-safe-money-autodocodec-gen] Dependency really-safe-money-autodocodec: using [really-safe-money-autodocodec-gen] really-safe-money-autodocodec-0.0.0.0 [really-safe-money-autodocodec-gen] Dependency really-safe-money-autodocodec-gen: using [really-safe-money-autodocodec-gen] really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Dependency really-safe-money-gen: using really-safe-money-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Dependency sydtest: using sydtest-0.25.0.1 [really-safe-money-autodocodec-gen] Source component graph: [really-safe-money-autodocodec-gen]  component lib [really-safe-money-autodocodec-gen]  component test:really-safe-money-autodocodec-test dependency lib [really-safe-money-autodocodec-gen] Configured component graph: [really-safe-money-autodocodec-gen]  component really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  include aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  include autodocodec-0.5.0.0-3qLgiGyLeOyEYAS7UL3M41 [really-safe-money-autodocodec-gen]  include autodocodec-yaml-0.4.0.2-HubNJckabFE4VnttidhWWu [really-safe-money-autodocodec-gen]  include base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  include deepseq-1.5.0.0-04fd [really-safe-money-autodocodec-gen]  include genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-autodocodec-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen]  component really-safe-money-autodocodec-gen-0.0.0.0-EMfWzF4QLM2GxBkXTAQCrS-really-safe-money-autodocodec-test [really-safe-money-autodocodec-gen]  include aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  include base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-autodocodec-gen]  include really-safe-money-autodocodec-0.0.0.0-LcGuXs3ju95FqrupwKLGoc [really-safe-money-autodocodec-gen]  include really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  include really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-autodocodec-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen] Linked component graph: [really-safe-money-autodocodec-gen]  unit really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  include aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  include autodocodec-0.5.0.0-3qLgiGyLeOyEYAS7UL3M41 [really-safe-money-autodocodec-gen]  include autodocodec-yaml-0.4.0.2-HubNJckabFE4VnttidhWWu [really-safe-money-autodocodec-gen]  include base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  include deepseq-1.5.0.0-04fd [really-safe-money-autodocodec-gen]  include genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-autodocodec-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen]  Money.Autodocodec.Gen=really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ:Money.Autodocodec.Gen [really-safe-money-autodocodec-gen]  unit really-safe-money-autodocodec-gen-0.0.0.0-EMfWzF4QLM2GxBkXTAQCrS-really-safe-money-autodocodec-test [really-safe-money-autodocodec-gen]  include aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  include base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  include really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-autodocodec-gen]  include really-safe-money-autodocodec-0.0.0.0-LcGuXs3ju95FqrupwKLGoc [really-safe-money-autodocodec-gen]  include really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  include really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-autodocodec-gen]  include sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen] Ready component graph: [really-safe-money-autodocodec-gen]  definite really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  depends aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  depends autodocodec-0.5.0.0-3qLgiGyLeOyEYAS7UL3M41 [really-safe-money-autodocodec-gen]  depends autodocodec-yaml-0.4.0.2-HubNJckabFE4VnttidhWWu [really-safe-money-autodocodec-gen]  depends base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  depends deepseq-1.5.0.0-04fd [really-safe-money-autodocodec-gen]  depends genvalidity-sydtest-1.0.1.0-45XJfPg4Hf83zRZotM8Yum [really-safe-money-autodocodec-gen]  depends sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen]  definite really-safe-money-autodocodec-gen-0.0.0.0-EMfWzF4QLM2GxBkXTAQCrS-really-safe-money-autodocodec-test [really-safe-money-autodocodec-gen]  depends aeson-2.2.4.1-I5kgiCyiPJO8jEV0bEgUez [really-safe-money-autodocodec-gen]  depends base-4.20.2.0-4d66 [really-safe-money-autodocodec-gen]  depends really-safe-money-0.0.0.0-4n32or1yFnsJqN3wqYySNc [really-safe-money-autodocodec-gen]  depends really-safe-money-autodocodec-0.0.0.0-LcGuXs3ju95FqrupwKLGoc [really-safe-money-autodocodec-gen]  depends really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen]  depends really-safe-money-gen-0.0.0.0-7mKqeOpzJlv8S7YwB1jpb2 [really-safe-money-autodocodec-gen]  depends sydtest-0.25.0.1-8CeZFHEpYWR67hZ2sxATtG [really-safe-money-autodocodec-gen] Using Cabal-3.12.1.0 compiled by ghc-9.10 [really-safe-money-autodocodec-gen] Using compiler: ghc-9.10.3 [really-safe-money-autodocodec-gen] Using install prefix: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Executables installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/bin [really-safe-money-autodocodec-gen] Libraries installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen] Dynamic Libraries installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af [really-safe-money-autodocodec-gen] Private executables installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/libexec/x86_64-linux-ghc-9.10.3-21af/really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Data files installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/share/x86_64-linux-ghc-9.10.3-21af/really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Documentation installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/share/doc/x86_64-linux-ghc-9.10.3-21af/really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] Configuration files installed in: [really-safe-money-autodocodec-gen] /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/etc [really-safe-money-autodocodec-gen] No alex found [really-safe-money-autodocodec-gen] Using ar found on system at: [really-safe-money-autodocodec-gen] /nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/bin/ar [really-safe-money-autodocodec-gen] No c2hs found [really-safe-money-autodocodec-gen] No cpphs found [really-safe-money-autodocodec-gen] No doctest found [really-safe-money-autodocodec-gen] Using gcc version 15.2.0 given by user at: [really-safe-money-autodocodec-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/gcc [really-safe-money-autodocodec-gen] Using ghc version 9.10.3 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/ghc [really-safe-money-autodocodec-gen] Using ghc-pkg version 9.10.3 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/ghc-pkg-9.10.3 [really-safe-money-autodocodec-gen] No ghcjs found [really-safe-money-autodocodec-gen] No ghcjs-pkg found [really-safe-money-autodocodec-gen] No greencard found [really-safe-money-autodocodec-gen] Using haddock version 2.31.1 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/haddock-ghc-9.10.3 [really-safe-money-autodocodec-gen] No happy found [really-safe-money-autodocodec-gen] Using haskell-suite found on system at: haskell-suite-dummy-location [really-safe-money-autodocodec-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location [really-safe-money-autodocodec-gen] No hmake found [really-safe-money-autodocodec-gen] Using hpc version 0.69 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/hpc-ghc-9.10.3 [really-safe-money-autodocodec-gen] Using hsc2hs version 0.68.10 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/hsc2hs-ghc-9.10.3 [really-safe-money-autodocodec-gen] No hscolour found [really-safe-money-autodocodec-gen] No jhc found [really-safe-money-autodocodec-gen] Using ld found on system at: [really-safe-money-autodocodec-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/ld [really-safe-money-autodocodec-gen] No pkg-config found [really-safe-money-autodocodec-gen] Using runghc version 9.10.3 found on system at: [really-safe-money-autodocodec-gen] /nix/store/k493jzz83044mqayvlb6247l35780kxy-ghc-9.10.3/bin/runghc-9.10.3 [really-safe-money-autodocodec-gen] Using strip version 2.46 found on system at: [really-safe-money-autodocodec-gen] /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin/strip [really-safe-money-autodocodec-gen] Using tar found on system at: [really-safe-money-autodocodec-gen] /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin/tar [really-safe-money-autodocodec-gen] No uhc found [really-safe-money-autodocodec-gen] Phase: buildPhase [really-safe-money-autodocodec-gen] Preprocessing library for really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] Building library for really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] [1 of 2] Compiling Money.Autodocodec.Gen ( src/Money/Autodocodec/Gen.hs, dist/build/Money/Autodocodec/Gen.o, dist/build/Money/Autodocodec/Gen.dyn_o ) [really-safe-money-autodocodec-gen] [2 of 2] Compiling Paths_really_safe_money_autodocodec_gen ( dist/build/autogen/Paths_really_safe_money_autodocodec_gen.hs, dist/build/Paths_really_safe_money_autodocodec_gen.o, dist/build/Paths_really_safe_money_autodocodec_gen.dyn_o ) [really-safe-money-autodocodec-gen] [1 of 2] Compiling Money.Autodocodec.Gen ( src/Money/Autodocodec/Gen.hs, dist/build/Money/Autodocodec/Gen.p_o ) [really-safe-money-autodocodec-gen] [2 of 2] Compiling Paths_really_safe_money_autodocodec_gen ( dist/build/autogen/Paths_really_safe_money_autodocodec_gen.hs, dist/build/Paths_really_safe_money_autodocodec_gen.p_o ) [really-safe-money-autodocodec-gen] Preprocessing test suite 'really-safe-money-autodocodec-test' for really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] Building test suite 'really-safe-money-autodocodec-test' for really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] [1 of 4] Compiling Money.CodecSpec ( test/Money/CodecSpec.hs, dist/build/really-safe-money-autodocodec-test/really-safe-money-autodocodec-test-tmp/Money/CodecSpec.o ) [really-safe-money-autodocodec-gen] [2 of 4] Compiling Numeric.DecimalLiteral.CodecSpec ( test/Numeric/DecimalLiteral/CodecSpec.hs, dist/build/really-safe-money-autodocodec-test/really-safe-money-autodocodec-test-tmp/Numeric/DecimalLiteral/CodecSpec.o ) [really-safe-money-autodocodec-gen] [3 of 4] Compiling Main ( test/Spec.hs, dist/build/really-safe-money-autodocodec-test/really-safe-money-autodocodec-test-tmp/Main.o ) [really-safe-money-autodocodec-gen] [4 of 4] Compiling Paths_really_safe_money_autodocodec_gen ( dist/build/really-safe-money-autodocodec-test/autogen/Paths_really_safe_money_autodocodec_gen.hs, dist/build/really-safe-money-autodocodec-test/really-safe-money-autodocodec-test-tmp/Paths_really_safe_money_autodocodec_gen.o ) [really-safe-money-autodocodec-gen] [5 of 5] Linking dist/build/really-safe-money-autodocodec-test/really-safe-money-autodocodec-test [really-safe-money-autodocodec-gen] Phase: checkPhase [really-safe-money-autodocodec-gen] Running 1 test suites... [really-safe-money-autodocodec-gen] Test suite really-safe-money-autodocodec-test: RUNNING... [really-safe-money-autodocodec-gen] Tests: [really-safe-money-autodocodec-gen]  [really-safe-money-autodocodec-gen] Money.CodecSpec [really-safe-money-autodocodec-gen]  Account [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551617"  1.87 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551617e19  2.20 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.8446744073709551615e19)  4.89 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551615"  4.86 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-18446744073709551615"  4.85 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.0)  4.83 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1" with the expected error message  2.06 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.8446744073709551617e19)  2.12 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-18446744073709551617"  1.80 ms [really-safe-money-autodocodec-gen]  account [really-safe-money-autodocodec-gen]  ✓ never fails to encode  4.09 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  6.27 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.50 ms [really-safe-money-autodocodec-gen]  account [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  5.32 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.77 ms [really-safe-money-autodocodec-gen]  ✓ never fails to encode  2.82 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1"  0.74 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551615e19  3.27 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-1"  3.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.0  3.00 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 0.1  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "1"  2.77 ms [really-safe-money-autodocodec-gen]  Amount [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 0.1  0.54 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551617"  2.55 ms [really-safe-money-autodocodec-gen]  amount [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.25 ms [really-safe-money-autodocodec-gen]  ✓ never fails to encode  1.03 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  0.95 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551615"  0.89 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551615e19  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1" with the expected error message  1.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.0  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551617e19  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1"  0.25 ms [really-safe-money-autodocodec-gen]  amount [really-safe-money-autodocodec-gen]  ✓ never fails to encode  2.87 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  2.05 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.27 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551616" with the expected error message  0.57 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0"  0.03 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "1"  0.04 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-1"  0.32 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.0)  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-1" with the expected error message  0.68 ms [really-safe-money-autodocodec-gen]  AmountOf [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551615e19  0.75 ms [really-safe-money-autodocodec-gen]  amount-of [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  2.51 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.56 ms [really-safe-money-autodocodec-gen]  ✓ never fails to encode  2.11 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 0.1  0.52 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.0  0.54 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551617e19  0.28 ms [really-safe-money-autodocodec-gen]  amount-of [really-safe-money-autodocodec-gen]  ✓ never fails to encode  0.88 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  1.80 ms [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  0.80 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse String "1"  0.22 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-1"  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551615"  0.21 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1"  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551617"  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.0)  0.00 ms [really-safe-money-autodocodec-gen]  AccountOf [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.0)  0.26 ms [really-safe-money-autodocodec-gen]  account-of [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  1.80 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.17 ms [really-safe-money-autodocodec-gen]  ✓ never fails to encode  0.67 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-18446744073709551617"  0.13 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.8446744073709551617e19)  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551617e19  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551617"  0.11 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 0.1  0.00 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "1"  0.03 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number (-1.8446744073709551615e19)  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-18446744073709551615"  0.02 ms [really-safe-money-autodocodec-gen]  account-of [really-safe-money-autodocodec-gen]  ✓ never fails to encode  1.95 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  1.21 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.15 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551615"  0.02 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "-1"  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.8446744073709551615e19  0.00 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.1"  0.01 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.0  0.01 ms [really-safe-money-autodocodec-gen]  QuantisationFactor [really-safe-money-autodocodec-gen]  quantisation-factor [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.24 ms [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  0.74 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ never fails to encode  0.68 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 0.0  0.02 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse Number 1.0  0.01 ms [really-safe-money-autodocodec-gen] Numeric.DecimalLiteral.CodecSpec [really-safe-money-autodocodec-gen]  DecimalLiteral [really-safe-money-autodocodec-gen]  ✓ fails to parse String "three"  1.25 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "not-a-number" with the expected error message  1.39 ms [really-safe-money-autodocodec-gen]  decimal-literal [really-safe-money-autodocodec-gen]  ✓ has the same schema as before  0.51 ms [really-safe-money-autodocodec-gen]  ✓ roundtrips to json  181.78 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ never fails to encode  180.36 ms [really-safe-money-autodocodec-gen]  passed for all of 100 inputs. [really-safe-money-autodocodec-gen]  ✓ fails to parse String "1"  2.29 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"  2.46 ms [really-safe-money-autodocodec-gen]  ✓ fails to parse String "18446744073709551617"  2.22 ms [really-safe-money-autodocodec-gen]  [really-safe-money-autodocodec-gen]  Examples: 2070 [really-safe-money-autodocodec-gen]  Passed: 90 [really-safe-money-autodocodec-gen]  Failed: 0 [really-safe-money-autodocodec-gen]  Sum of test runtimes: 0.47 seconds [really-safe-money-autodocodec-gen]  Test suite took:  0.19 seconds [really-safe-money-autodocodec-gen]  [really-safe-money-autodocodec-gen] Test suite really-safe-money-autodocodec-test: PASS [really-safe-money-autodocodec-gen] Test suite logged to: [really-safe-money-autodocodec-gen] dist/test/really-safe-money-autodocodec-gen-0.0.0.0-really-safe-money-autodocodec-test.log [really-safe-money-autodocodec-gen] 1 of 1 test suites (1 of 1 test cases) passed. [really-safe-money-autodocodec-gen] Phase: haddockPhase [really-safe-money-autodocodec-gen] Phase: installPhase [really-safe-money-autodocodec-gen] Installing library in /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/really-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ [really-safe-money-autodocodec-gen] Phase: fixupPhase [really-safe-money-autodocodec-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] shrinking /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/lib/ghc-9.10.3/lib/x86_64-linux-ghc-9.10.3-21af/libHSreally-safe-money-autodocodec-gen-0.0.0.0-5RDGNZwJrdSLIMuVoRkSOZ-ghc9.10.3.so [really-safe-money-autodocodec-gen] checking for references to /build/ in /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0... [really-safe-money-autodocodec-gen] patching script interpreter paths in /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 [really-safe-money-autodocodec-gen] stripping (with command strip and flags -S -p) in /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0/lib [really-safe-money-autodocodec-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage [really-safe-money-autodocodec-gen] checking for references to /build/ in /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage... [really-safe-money-autodocodec-gen] patching script interpreter paths in /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage [post-build-hook] Uploading to cachix cache "really-safe-money": /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage [post-build-hook] Pushing 2 paths (265 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage (14.72 KiB) [post-build-hook] Pushing /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 (568.75 KiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0 /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage [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/544pz83y3jd0yf7qvk1xmc7y2c4lvsgg-really-safe-money-autodocodec-gen-0.0.0.0' to 'https://cache.staging.nix-ci.com'... [post-build-hook] copying path '/nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage' 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/54bipy6gdw6sa872c03278jx3wxvash5-really-safe-money-autodocodec-gen-0.0.0.0.drv' to 'https://cache.staging.nix-ci.com'... Progress: 3 of 7 built, 6 of 6 downloaded from cache Building /nix/store/x7p9xrg9m9j10b95i6h2g3qkywxg2mvr-test-coverage-report.drv [test-coverage-report] +++ dekking-report --coverables /nix/store/52lshsqd2mc40zb1vg36j2wzgkk1lkvk-really-safe-money-0.0.0.0-coverables --coverables /nix/store/1fv0bx54drp80zbk487z3r3zkfwgdczj-really-safe-money-autodocodec-0.0.0.0-coverables --coverage /nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage --coverage /nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage --coverage /nix/store/j8rwx4mw8r3lfbjpy9mi7n78cvb64isy-really-safe-money-0.0.0.0-coverage --coverage /nix/store/4l1wy6lgydjvy1y5bvcm9szhj1zn6n30-really-safe-money-autodocodec-0.0.0.0-coverage --output /nix/store/j5w2q6yrxr0g68i4rljpqiw1nmmpcg6a-test-coverage-report [test-coverage-report] "/nix/store/4l1wy6lgydjvy1y5bvcm9szhj1zn6n30-really-safe-money-autodocodec-0.0.0.0-coverage" [test-coverage-report] "/nix/store/g2frf8n521ray80kny98vxji00ykiafk-really-safe-money-gen-0.0.0.0-coverage" [test-coverage-report] "/nix/store/j8rwx4mw8r3lfbjpy9mi7n78cvb64isy-really-safe-money-0.0.0.0-coverage" [test-coverage-report] "/nix/store/mzch2jz6866ybw49pqfavc7jnf2nq1rw-really-safe-money-autodocodec-gen-0.0.0.0-coverage" [test-coverage-report] +++ set +x [post-build-hook] Uploading to cachix cache "really-safe-money": /nix/store/j5w2q6yrxr0g68i4rljpqiw1nmmpcg6a-test-coverage-report [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/j5w2q6yrxr0g68i4rljpqiw1nmmpcg6a-test-coverage-report (2.18 MiB) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/j5w2q6yrxr0g68i4rljpqiw1nmmpcg6a-test-coverage-report [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/j5w2q6yrxr0g68i4rljpqiw1nmmpcg6a-test-coverage-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 1 paths... [post-build-hook] copying path '/nix/store/x7p9xrg9m9j10b95i6h2g3qkywxg2mvr-test-coverage-report.drv' to 'https://cache.staging.nix-ci.com'... Progress: 4 of 7 built, 6 of 6 downloaded from cache Building /nix/store/cv9kr4yq6y2d83plb21zhkwc02fspbih-test-coverage-report-require-coverage.drv [test-coverage-report-require-coverage] PASS: Found 1394 covered expressions. [post-build-hook] Uploading to cachix cache "really-safe-money": /nix/store/55xnnz0p7wwb33awks0sqas6mwkdmami-test-coverage-report-require-coverage [post-build-hook] Pushing 1 paths (0 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/55xnnz0p7wwb33awks0sqas6mwkdmami-test-coverage-report-require-coverage (296.00 B) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/55xnnz0p7wwb33awks0sqas6mwkdmami-test-coverage-report-require-coverage [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/55xnnz0p7wwb33awks0sqas6mwkdmami-test-coverage-report-require-coverage' 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/cv9kr4yq6y2d83plb21zhkwc02fspbih-test-coverage-report-require-coverage.drv' to 'https://cache.staging.nix-ci.com'... Progress: 5 of 7 built, 6 of 6 downloaded from cache Building /nix/store/5cv868fg6wg0sn1q5hzyr1fxh0ymqvjy-test-coverage-report-checked.drv [post-build-hook] Uploading to cachix cache "really-safe-money": /nix/store/06sgw55bxz2q3va00h1f1gw4yyxdnm29-test-coverage-report-checked [post-build-hook] Pushing 1 paths (1 are already present) using zstd to cache really-safe-money ⏳ [post-build-hook]  [post-build-hook] Pushing /nix/store/06sgw55bxz2q3va00h1f1gw4yyxdnm29-test-coverage-report-checked (176.00 B) [post-build-hook]  [post-build-hook] All done. [post-build-hook] Uploading to the NixCI staging cache: /nix/store/06sgw55bxz2q3va00h1f1gw4yyxdnm29-test-coverage-report-checked [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/06sgw55bxz2q3va00h1f1gw4yyxdnm29-test-coverage-report-checked' 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/5cv868fg6wg0sn1q5hzyr1fxh0ymqvjy-test-coverage-report-checked.drv' to 'https://cache.staging.nix-ci.com'... Progress: 6 of 7 built, 6 of 6 downloaded from cache /nix/store/06sgw55bxz2q3va00h1f1gw4yyxdnm29-test-coverage-report-checked Build succeeded.