build checks.x86_64-linux.nixpkgs-24_11
37.25 s
[post-build-hook] copying path '/nix/store/ql6w69mizlxij3zc5dvpkqqdbfkq9qns-genvalidity-hspec-1.0.0.3.tar.gz.drv' to 'https://cache.staging.nix-ci.com'...
37.49 s
[post-build-hook] copying path '/nix/store/zdhhh3bvwrv7ka4s8jlzlxg0mfpchjcf-genvalidity-1.1.1.0.drv' to 'https://cache.staging.nix-ci.com'...
37.75 s
[post-build-hook] copying path '/nix/store/6kbn0vdb2hr9y2gkx8x8lb23bki48alj-genvalidity-property-1.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
37.93 s
[post-build-hook] copying path '/nix/store/mqpyxr7b9avhqcgfrlngsky1g1g66g4k-genvalidity-hspec-1.0.0.3.drv' to 'https://cache.staging.nix-ci.com'...
38.11 s
[post-build-hook] copying path '/nix/store/c5faz32x2cyxds8yblss4h8y6zklvlyj-genvalidity-text-1.0.0.1.drv' to 'https://cache.staging.nix-ci.com'...
38.11 s
[post-build-hook] copying path '/nix/store/yac77fn9ssf55af4h34ilzpyqnqld34n-genvalidity-containers-1.0.0.2.drv' to 'https://cache.staging.nix-ci.com'...
38.11 s
[post-build-hook] copying path '/nix/store/6xxpx81hj2rmpiy5i78by6sym71mdpkz-genvalidity-hspec-optics-1.0.0.0.drv' to 'https://cache.staging.nix-ci.com'...
38.32 s
[post-build-hook] copying path '/nix/store/7yzrccwnvzfvgjwda2b3sk7w9fb2cbmn-cursor-gen-source-0.4.0.0.drv' to 'https://cache.staging.nix-ci.com'...
38.94 s
Progress: 3 of 6 built, 21 of 21 downloaded from cache
39.01 s
Building cursor-gen
39.13 s
[cursor-gen] Phase: setupCompilerEnvironmentPhase
39.13 s
[cursor-gen] Build with /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6.
39.30 s
[cursor-gen] Phase: unpackPhase
39.30 s
[cursor-gen] unpacking source archive /nix/store/cpxab2fh850afdncvprsk8sx2jrgzgxl-cursor-gen-source-0.4.0.0/cursor-gen-0.4.0.0.tar.gz
39.31 s
[cursor-gen] source root is cursor-gen-0.4.0.0
39.31 s
[cursor-gen] setting SOURCE_DATE_EPOCH to timestamp 1780346442 of file cursor-gen-0.4.0.0/test/Spec.hs
39.31 s
[cursor-gen] warning: file cursor-gen-0.4.0.0/test/Spec.hs may be generated; SOURCE_DATE_EPOCH may be non-deterministic
39.32 s
[cursor-gen] Phase: patchPhase
39.32 s
[cursor-gen] Phase: compileBuildDriverPhase
39.33 s
[cursor-gen] setupCompileFlags: -package-db=/build/tmp.rphszVqJDW/setup-package.conf.d -threaded
39.37 s
[cursor-gen] [1 of 2] Compiling Main ( Setup.hs, /build/tmp.rphszVqJDW/Main.o )
39.41 s
[cursor-gen] [2 of 2] Linking Setup
40.46 s
[cursor-gen] Phase: updateAutotoolsGnuConfigScriptsPhase
40.47 s
[cursor-gen] Phase: configurePhase
40.47 s
[cursor-gen] configureFlags: --verbose --prefix=/nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0 --libdir=$prefix/lib/$compiler/lib --libsubdir=$abi/$libname --docdir=/nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc/share/doc/cursor-gen-0.4.0.0 --with-gcc=gcc --package-db=/build/tmp.rphszVqJDW/package.conf.d --ghc-option=-j16 --ghc-option=+RTS --ghc-option=-A64M --ghc-option=-RTS --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --enable-split-sections --enable-library-stripping --enable-executable-stripping --ghc-option=-haddock --ghc-option=-Wall --ghc-option=-Werror --extra-lib-dirs=/nix/store/3f3aa75rg5xjv498n1i9gzmlh06an73p-ncurses-6.4.20221231/lib --extra-lib-dirs=/nix/store/s8rgz1c5dwpcw607p9s7pig3ig19hbvl-libffi-3.4.6/lib --extra-lib-dirs=/nix/store/mz53myclg9kxbfp85yswy7c25h5qpwvf-elfutils-0.191/lib --extra-lib-dirs=/nix/store/k2jdvz2f8fzgc4q7k519l5mmv1x75d9s-gmp-with-cxx-6.3.0/lib
40.48 s
[cursor-gen] Using Parsec parser
40.48 s
[cursor-gen] Configuring cursor-gen-0.4.0.0...
40.78 s
[cursor-gen] Dependency QuickCheck: using QuickCheck-2.14.3
40.78 s
[cursor-gen] Dependency base <5: using base-4.18.2.1
40.78 s
[cursor-gen] Dependency containers: using containers-0.6.7
40.78 s
[cursor-gen] Dependency cursor >=0.2: using cursor-0.3.2.0
40.78 s
[cursor-gen] Dependency genvalidity >=0.8: using genvalidity-1.1.1.0
40.78 s
[cursor-gen] Dependency genvalidity-containers: using genvalidity-containers-1.0.0.2
40.78 s
[cursor-gen] Dependency genvalidity-text >=0.6: using genvalidity-text-1.0.0.1
40.78 s
[cursor-gen] Dependency text: using text-2.0.2
40.78 s
[cursor-gen] Dependency QuickCheck: using QuickCheck-2.14.3
40.78 s
[cursor-gen] Dependency base <5: using base-4.18.2.1
40.78 s
[cursor-gen] Dependency containers: using containers-0.6.7
40.78 s
[cursor-gen] Dependency cursor: using cursor-0.3.2.0
40.78 s
[cursor-gen] Dependency cursor-gen: using cursor-gen-0.4.0.0
40.78 s
[cursor-gen] Dependency genvalidity-hspec: using genvalidity-hspec-1.0.0.3
40.78 s
[cursor-gen] Dependency genvalidity-hspec-optics: using genvalidity-hspec-optics-1.0.0.0
40.78 s
[cursor-gen] Dependency hspec: using hspec-2.11.9
40.78 s
[cursor-gen] Dependency microlens: using microlens-0.4.13.1
40.78 s
[cursor-gen] Dependency pretty-show: using pretty-show-1.10
40.78 s
[cursor-gen] Dependency text: using text-2.0.2
41.04 s
[cursor-gen] Source component graph:
41.04 s
[cursor-gen] component lib
41.04 s
[cursor-gen] component test:cursor-test dependency lib
41.04 s
[cursor-gen] Configured component graph:
41.04 s
[cursor-gen] component cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.04 s
[cursor-gen] include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.04 s
[cursor-gen] include base-4.18.2.1
41.04 s
[cursor-gen] include containers-0.6.7
41.04 s
[cursor-gen] include cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.04 s
[cursor-gen] include genvalidity-1.1.1.0-2rUmIqnFSOoBp0hNYBULmv
41.04 s
[cursor-gen] include genvalidity-containers-1.0.0.2-3ixNolyiuPV1Cd2yhR9hIn
41.04 s
[cursor-gen] include genvalidity-text-1.0.0.1-5FUaEUeJZSDIFhRd0kyjgL
41.04 s
[cursor-gen] include text-2.0.2
41.04 s
[cursor-gen] component cursor-gen-0.4.0.0-8PJFZKaOrrL6ALdGWVxYSb-cursor-test
41.04 s
[cursor-gen] include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.04 s
[cursor-gen] include base-4.18.2.1
41.04 s
[cursor-gen] include containers-0.6.7
41.04 s
[cursor-gen] include cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.04 s
[cursor-gen] include cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.04 s
[cursor-gen] include genvalidity-hspec-1.0.0.3-BnwEoLPLh2jJtz4qMHw0NS
41.04 s
[cursor-gen] include genvalidity-hspec-optics-1.0.0.0-8uOlPh0yonFATIB2J4CFNN
41.04 s
[cursor-gen] include hspec-2.11.9-K4kdq1ZGqnN7rZ0uL9rUZi
41.04 s
[cursor-gen] include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI
41.04 s
[cursor-gen] include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz
41.04 s
[cursor-gen] include text-2.0.2
41.04 s
[cursor-gen] Linked component graph:
41.04 s
[cursor-gen] unit cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.04 s
[cursor-gen] include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.04 s
[cursor-gen] include base-4.18.2.1
41.04 s
[cursor-gen] include containers-0.6.7
41.04 s
[cursor-gen] include cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.05 s
[cursor-gen] include genvalidity-1.1.1.0-2rUmIqnFSOoBp0hNYBULmv
41.05 s
[cursor-gen] include genvalidity-containers-1.0.0.2-3ixNolyiuPV1Cd2yhR9hIn
41.05 s
[cursor-gen] include genvalidity-text-1.0.0.1-5FUaEUeJZSDIFhRd0kyjgL
41.05 s
[cursor-gen] include text-2.0.2
41.05 s
[cursor-gen] Cursor.Forest.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Forest.Gen,Cursor.List.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.List.Gen,Cursor.List.NonEmpty.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.List.NonEmpty.Gen,Cursor.Map.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Map.Gen,Cursor.Map.KeyValue.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Map.KeyValue.Gen,Cursor.Simple.Forest.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Simple.Forest.Gen,Cursor.Simple.List.NonEmpty.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Simple.List.NonEmpty.Gen,Cursor.Simple.Map.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Simple.Map.Gen,Cursor.Simple.Map.KeyValue.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Simple.Map.KeyValue.Gen,Cursor.Simple.Tree.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Simple.Tree.Gen,Cursor.Text.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Text.Gen,Cursor.TextField.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.TextField.Gen,Cursor.Tree.Gen=cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9:Cursor.Tree.Gen
41.05 s
[cursor-gen] unit cursor-gen-0.4.0.0-8PJFZKaOrrL6ALdGWVxYSb-cursor-test
41.05 s
[cursor-gen] include QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.05 s
[cursor-gen] include base-4.18.2.1
41.05 s
[cursor-gen] include containers-0.6.7
41.05 s
[cursor-gen] include cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.05 s
[cursor-gen] include cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.05 s
[cursor-gen] include genvalidity-hspec-1.0.0.3-BnwEoLPLh2jJtz4qMHw0NS
41.05 s
[cursor-gen] include genvalidity-hspec-optics-1.0.0.0-8uOlPh0yonFATIB2J4CFNN
41.05 s
[cursor-gen] include hspec-2.11.9-K4kdq1ZGqnN7rZ0uL9rUZi
41.05 s
[cursor-gen] include microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI
41.05 s
[cursor-gen] include pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz
41.05 s
[cursor-gen] include text-2.0.2
41.05 s
[cursor-gen] Ready component graph:
41.05 s
[cursor-gen] definite cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.05 s
[cursor-gen] depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.05 s
[cursor-gen] depends base-4.18.2.1
41.05 s
[cursor-gen] depends containers-0.6.7
41.05 s
[cursor-gen] depends cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.05 s
[cursor-gen] depends genvalidity-1.1.1.0-2rUmIqnFSOoBp0hNYBULmv
41.05 s
[cursor-gen] depends genvalidity-containers-1.0.0.2-3ixNolyiuPV1Cd2yhR9hIn
41.05 s
[cursor-gen] depends genvalidity-text-1.0.0.1-5FUaEUeJZSDIFhRd0kyjgL
41.05 s
[cursor-gen] depends text-2.0.2
41.05 s
[cursor-gen] definite cursor-gen-0.4.0.0-8PJFZKaOrrL6ALdGWVxYSb-cursor-test
41.05 s
[cursor-gen] depends QuickCheck-2.14.3-2ib5howz5bF8WgkuPDgHew
41.05 s
[cursor-gen] depends base-4.18.2.1
41.05 s
[cursor-gen] depends containers-0.6.7
41.05 s
[cursor-gen] depends cursor-0.3.2.0-99VyfZONNPtBpUOMgTG6b5
41.05 s
[cursor-gen] depends cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.05 s
[cursor-gen] depends genvalidity-hspec-1.0.0.3-BnwEoLPLh2jJtz4qMHw0NS
41.05 s
[cursor-gen] depends genvalidity-hspec-optics-1.0.0.0-8uOlPh0yonFATIB2J4CFNN
41.05 s
[cursor-gen] depends hspec-2.11.9-K4kdq1ZGqnN7rZ0uL9rUZi
41.05 s
[cursor-gen] depends microlens-0.4.13.1-KYxyai9RKt756hvMHa07OI
41.05 s
[cursor-gen] depends pretty-show-1.10-Hkt8Fo77lI39LZgAuw0Xz
41.05 s
[cursor-gen] depends text-2.0.2
41.05 s
[cursor-gen] Using Cabal-3.10.3.0 compiled by ghc-9.6
41.05 s
[cursor-gen] Using compiler: ghc-9.6.6
41.05 s
[cursor-gen] Using install prefix:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0
41.05 s
[cursor-gen] Executables installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/bin
41.05 s
[cursor-gen] Libraries installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/lib/ghc-9.6.6/lib/x86_64-linux-ghc-9.6.6/cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
41.05 s
[cursor-gen] Dynamic Libraries installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/lib/ghc-9.6.6/lib/x86_64-linux-ghc-9.6.6
41.05 s
[cursor-gen] Private executables installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/libexec/x86_64-linux-ghc-9.6.6/cursor-gen-0.4.0.0
41.05 s
[cursor-gen] Data files installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/share/x86_64-linux-ghc-9.6.6/cursor-gen-0.4.0.0
41.05 s
[cursor-gen] Documentation installed in:
41.05 s
[cursor-gen] /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc/share/doc/cursor-gen-0.4.0.0
41.05 s
[cursor-gen] Configuration files installed in:
41.05 s
[cursor-gen] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/etc
41.05 s
[cursor-gen] No alex found
41.05 s
[cursor-gen] Using ar found on system at:
41.05 s
[cursor-gen] /nix/store/kmaz78bn767ffazkpf8zbq3plnh45nfm-binutils-wrapper-2.43.1/bin/ar
41.05 s
[cursor-gen] No c2hs found
41.05 s
[cursor-gen] No cpphs found
41.05 s
[cursor-gen] No doctest found
41.05 s
[cursor-gen] Using gcc version 13.3.0 given by user at:
41.05 s
[cursor-gen] /nix/store/mzfk1sdv6bxvdh9slvddpj734ck99idi-gcc-wrapper-13.3.0/bin/gcc
41.05 s
[cursor-gen] Using ghc version 9.6.6 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/ghc
41.05 s
[cursor-gen] Using ghc-pkg version 9.6.6 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/ghc-pkg-9.6.6
41.05 s
[cursor-gen] No ghcjs found
41.05 s
[cursor-gen] No ghcjs-pkg found
41.05 s
[cursor-gen] No greencard found
41.05 s
[cursor-gen] Using haddock version 2.29.2 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/haddock-ghc-9.6.6
41.05 s
[cursor-gen] No happy found
41.05 s
[cursor-gen] Using haskell-suite found on system at: haskell-suite-dummy-location
41.05 s
[cursor-gen] Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
41.05 s
[cursor-gen] No hmake found
41.05 s
[cursor-gen] Using hpc version 0.68 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/hpc-ghc-9.6.6
41.05 s
[cursor-gen] Using hsc2hs version 0.68.9 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/hsc2hs-ghc-9.6.6
41.05 s
[cursor-gen] Using hscolour version 1.25 found on system at:
41.05 s
[cursor-gen] /nix/store/1486f5wc7jkiy8v60jdh30zr93aiswai-hscolour-1.25/bin/HsColour
41.05 s
[cursor-gen] No jhc found
41.05 s
[cursor-gen] Using ld found on system at:
41.05 s
[cursor-gen] /nix/store/kmaz78bn767ffazkpf8zbq3plnh45nfm-binutils-wrapper-2.43.1/bin/ld.gold
41.05 s
[cursor-gen] No pkg-config found
41.05 s
[cursor-gen] Using runghc version 9.6.6 found on system at:
41.05 s
[cursor-gen] /nix/store/imm84m7fafsybsaxlkvpv8inf2dwgkh5-ghc-9.6.6/bin/runghc-9.6.6
41.05 s
[cursor-gen] Using strip version 2.43 found on system at:
41.05 s
[cursor-gen] /nix/store/mzfk1sdv6bxvdh9slvddpj734ck99idi-gcc-wrapper-13.3.0/bin/strip
41.05 s
[cursor-gen] Using tar found on system at:
41.05 s
[cursor-gen] /nix/store/prkjsk3l0l253yn0y2zqpyjjjsnk91gw-gnutar-1.35/bin/tar
41.05 s
[cursor-gen] No uhc found
41.40 s
[cursor-gen] Phase: buildPhase
41.45 s
[cursor-gen] Preprocessing library for cursor-gen-0.4.0.0..
41.46 s
[cursor-gen] Building library for cursor-gen-0.4.0.0..
41.54 s
[cursor-gen] [ 1 of 14] Compiling Cursor.List.Gen ( src/Cursor/List/Gen.hs, dist/build/Cursor/List/Gen.o, dist/build/Cursor/List/Gen.dyn_o )
41.75 s
[cursor-gen] [ 2 of 14] Compiling Cursor.List.NonEmpty.Gen ( src/Cursor/List/NonEmpty/Gen.hs, dist/build/Cursor/List/NonEmpty/Gen.o, dist/build/Cursor/List/NonEmpty/Gen.dyn_o )
41.89 s
[cursor-gen] [ 3 of 14] Compiling Cursor.Map.KeyValue.Gen ( src/Cursor/Map/KeyValue/Gen.hs, dist/build/Cursor/Map/KeyValue/Gen.o, dist/build/Cursor/Map/KeyValue/Gen.dyn_o )
41.89 s
[cursor-gen] [ 4 of 14] Compiling Cursor.Map.Gen ( src/Cursor/Map/Gen.hs, dist/build/Cursor/Map/Gen.o, dist/build/Cursor/Map/Gen.dyn_o )
41.97 s
[cursor-gen] [ 5 of 14] Compiling Cursor.Simple.List.NonEmpty.Gen ( src/Cursor/Simple/List/NonEmpty/Gen.hs, dist/build/Cursor/Simple/List/NonEmpty/Gen.o, dist/build/Cursor/Simple/List/NonEmpty/Gen.dyn_o )
41.97 s
[cursor-gen] [ 6 of 14] Compiling Cursor.Simple.Map.Gen ( src/Cursor/Simple/Map/Gen.hs, dist/build/Cursor/Simple/Map/Gen.o, dist/build/Cursor/Simple/Map/Gen.dyn_o )
41.99 s
[cursor-gen] [ 7 of 14] Compiling Cursor.Simple.Map.KeyValue.Gen ( src/Cursor/Simple/Map/KeyValue/Gen.hs, dist/build/Cursor/Simple/Map/KeyValue/Gen.o, dist/build/Cursor/Simple/Map/KeyValue/Gen.dyn_o )
41.99 s
[cursor-gen] [ 8 of 14] Compiling Cursor.Text.Gen ( src/Cursor/Text/Gen.hs, dist/build/Cursor/Text/Gen.o, dist/build/Cursor/Text/Gen.dyn_o )
41.99 s
[cursor-gen] [ 9 of 14] Compiling Cursor.TextField.Gen ( src/Cursor/TextField/Gen.hs, dist/build/Cursor/TextField/Gen.o, dist/build/Cursor/TextField/Gen.dyn_o )
41.99 s
[cursor-gen] [10 of 14] Compiling Cursor.Tree.Gen ( src/Cursor/Tree/Gen.hs, dist/build/Cursor/Tree/Gen.o, dist/build/Cursor/Tree/Gen.dyn_o )
42.22 s
[cursor-gen] [11 of 14] Compiling Cursor.Simple.Tree.Gen ( src/Cursor/Simple/Tree/Gen.hs, dist/build/Cursor/Simple/Tree/Gen.o, dist/build/Cursor/Simple/Tree/Gen.dyn_o )
42.24 s
[cursor-gen] [12 of 14] Compiling Cursor.Forest.Gen ( src/Cursor/Forest/Gen.hs, dist/build/Cursor/Forest/Gen.o, dist/build/Cursor/Forest/Gen.dyn_o )
42.25 s
[cursor-gen] [13 of 14] Compiling Cursor.Simple.Forest.Gen ( src/Cursor/Simple/Forest/Gen.hs, dist/build/Cursor/Simple/Forest/Gen.o, dist/build/Cursor/Simple/Forest/Gen.dyn_o )
42.29 s
[cursor-gen] [14 of 14] Compiling Paths_cursor_gen ( dist/build/autogen/Paths_cursor_gen.hs, dist/build/Paths_cursor_gen.o, dist/build/Paths_cursor_gen.dyn_o )
42.49 s
[cursor-gen] [ 1 of 14] Compiling Cursor.List.Gen ( src/Cursor/List/Gen.hs, dist/build/Cursor/List/Gen.p_o )
42.73 s
[cursor-gen] [ 2 of 14] Compiling Cursor.List.NonEmpty.Gen ( src/Cursor/List/NonEmpty/Gen.hs, dist/build/Cursor/List/NonEmpty/Gen.p_o )
42.88 s
[cursor-gen] [ 3 of 14] Compiling Cursor.Map.KeyValue.Gen ( src/Cursor/Map/KeyValue/Gen.hs, dist/build/Cursor/Map/KeyValue/Gen.p_o )
42.88 s
[cursor-gen] [ 4 of 14] Compiling Cursor.Map.Gen ( src/Cursor/Map/Gen.hs, dist/build/Cursor/Map/Gen.p_o )
43.02 s
[cursor-gen] [ 5 of 14] Compiling Cursor.Simple.List.NonEmpty.Gen ( src/Cursor/Simple/List/NonEmpty/Gen.hs, dist/build/Cursor/Simple/List/NonEmpty/Gen.p_o )
43.02 s
[cursor-gen] [ 6 of 14] Compiling Cursor.Simple.Map.Gen ( src/Cursor/Simple/Map/Gen.hs, dist/build/Cursor/Simple/Map/Gen.p_o )
43.11 s
[cursor-gen] [ 7 of 14] Compiling Cursor.Simple.Map.KeyValue.Gen ( src/Cursor/Simple/Map/KeyValue/Gen.hs, dist/build/Cursor/Simple/Map/KeyValue/Gen.p_o )
43.11 s
[cursor-gen] [ 8 of 14] Compiling Cursor.Text.Gen ( src/Cursor/Text/Gen.hs, dist/build/Cursor/Text/Gen.p_o )
43.11 s
[cursor-gen] [ 9 of 14] Compiling Cursor.TextField.Gen ( src/Cursor/TextField/Gen.hs, dist/build/Cursor/TextField/Gen.p_o )
43.11 s
[cursor-gen] [10 of 14] Compiling Cursor.Tree.Gen ( src/Cursor/Tree/Gen.hs, dist/build/Cursor/Tree/Gen.p_o )
43.17 s
[cursor-gen] [11 of 14] Compiling Cursor.Simple.Tree.Gen ( src/Cursor/Simple/Tree/Gen.hs, dist/build/Cursor/Simple/Tree/Gen.p_o )
43.25 s
[cursor-gen] [12 of 14] Compiling Cursor.Forest.Gen ( src/Cursor/Forest/Gen.hs, dist/build/Cursor/Forest/Gen.p_o )
43.26 s
[cursor-gen] [13 of 14] Compiling Cursor.Simple.Forest.Gen ( src/Cursor/Simple/Forest/Gen.hs, dist/build/Cursor/Simple/Forest/Gen.p_o )
43.35 s
[cursor-gen] [14 of 14] Compiling Paths_cursor_gen ( dist/build/autogen/Paths_cursor_gen.hs, dist/build/Paths_cursor_gen.p_o )
45.47 s
[cursor-gen] Preprocessing test suite 'cursor-test' for cursor-gen-0.4.0.0..
45.47 s
[cursor-gen] Building test suite 'cursor-test' for cursor-gen-0.4.0.0..
45.61 s
[cursor-gen] [ 1 of 22] Compiling Cursor.List.NonEmptySpec ( test/Cursor/List/NonEmptySpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/List/NonEmptySpec.o )
45.95 s
[cursor-gen] [ 2 of 22] Compiling Cursor.ListSpec ( test/Cursor/ListSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/ListSpec.o )
47.05 s
[cursor-gen] [ 3 of 22] Compiling Cursor.Map.KeyValueSpec ( test/Cursor/Map/KeyValueSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Map/KeyValueSpec.o )
47.07 s
[cursor-gen] [ 4 of 22] Compiling Cursor.MapSpec ( test/Cursor/MapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/MapSpec.o )
47.07 s
[cursor-gen] [ 5 of 22] Compiling Cursor.Simple.ForestSpec ( test/Cursor/Simple/ForestSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/ForestSpec.o )
48.98 s
[cursor-gen] [ 6 of 22] Compiling Cursor.Simple.List.NonEmptySpec ( test/Cursor/Simple/List/NonEmptySpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/List/NonEmptySpec.o )
48.98 s
[cursor-gen] [ 7 of 22] Compiling Cursor.Simple.Map.KeyValueSpec ( test/Cursor/Simple/Map/KeyValueSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Map/KeyValueSpec.o )
48.98 s
[cursor-gen] [ 8 of 22] Compiling Cursor.Simple.MapSpec ( test/Cursor/Simple/MapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/MapSpec.o )
48.98 s
[cursor-gen] [ 9 of 22] Compiling Cursor.Simple.Tree.CollapseSpec ( test/Cursor/Simple/Tree/CollapseSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/CollapseSpec.o )
48.98 s
[cursor-gen] [10 of 22] Compiling Cursor.Simple.Tree.InsertSpec ( test/Cursor/Simple/Tree/InsertSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/InsertSpec.o )
48.98 s
[cursor-gen] [11 of 22] Compiling Cursor.Simple.Tree.TestUtils ( test/Cursor/Simple/Tree/TestUtils.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/TestUtils.o )
48.98 s
[cursor-gen] [12 of 22] Compiling Cursor.Simple.Tree.SwapSpec ( test/Cursor/Simple/Tree/SwapSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/SwapSpec.o )
48.98 s
[cursor-gen] [13 of 22] Compiling Cursor.Simple.Tree.PromoteSpec ( test/Cursor/Simple/Tree/PromoteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/PromoteSpec.o )
48.98 s
[cursor-gen] [14 of 22] Compiling Cursor.Simple.Tree.MovementSpec ( test/Cursor/Simple/Tree/MovementSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/MovementSpec.o )
48.98 s
[cursor-gen] [15 of 22] Compiling Cursor.Simple.Tree.DemoteSpec ( test/Cursor/Simple/Tree/DemoteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/DemoteSpec.o )
48.98 s
[cursor-gen] [16 of 22] Compiling Cursor.Simple.Tree.DeleteSpec ( test/Cursor/Simple/Tree/DeleteSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/DeleteSpec.o )
48.98 s
[cursor-gen] [17 of 22] Compiling Cursor.Simple.Tree.BaseSpec ( test/Cursor/Simple/Tree/BaseSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Simple/Tree/BaseSpec.o )
48.98 s
[cursor-gen] [18 of 22] Compiling Cursor.TextFieldSpec ( test/Cursor/TextFieldSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/TextFieldSpec.o )
48.98 s
[cursor-gen] [19 of 22] Compiling Cursor.TextSpec ( test/Cursor/TextSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/TextSpec.o )
48.98 s
[cursor-gen] [20 of 22] Compiling Cursor.Tree.TypesSpec ( test/Cursor/Tree/TypesSpec.hs, dist/build/cursor-test/cursor-test-tmp/Cursor/Tree/TypesSpec.o )
48.98 s
[cursor-gen] [21 of 22] Compiling Main ( test/Spec.hs, dist/build/cursor-test/cursor-test-tmp/Main.o )
49.06 s
[cursor-gen] [22 of 22] Compiling Paths_cursor_gen ( dist/build/cursor-test/autogen/Paths_cursor_gen.hs, dist/build/cursor-test/cursor-test-tmp/Paths_cursor_gen.o )
49.38 s
[cursor-gen] [23 of 23] Linking dist/build/cursor-test/cursor-test
50.21 s
[cursor-gen] Phase: checkPhase
50.23 s
[cursor-gen] Running 1 test suites...
50.23 s
[cursor-gen] Test suite cursor-test: RUNNING...
50.26 s
[cursor-gen]
50.26 s
[cursor-gen] Cursor.List
50.26 s
[cursor-gen] Eq (ListCursor Bool)
50.26 s
[cursor-gen] (==) :: (ListCursor Bool) -> (ListCursor Bool) -> Bool
50.26 s
[cursor-gen] is reflexive for "valid (ListCursor Bool)"s [✔]
50.26 s
[cursor-gen] +++ OK, passed 100 tests.
50.26 s
[cursor-gen] is symmetric for "valid (ListCursor Bool)"s [✔]
50.26 s
[cursor-gen] +++ OK, passed 100 tests.
50.26 s
[cursor-gen] is transitive for "valid (ListCursor Bool)"s [✔]
50.26 s
[cursor-gen] +++ OK, passed 100 tests.
50.26 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (ListCursor Bool)"s [✔]
50.26 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] (/=) :: (ListCursor Bool) -> (ListCursor Bool) -> Bool
50.30 s
[cursor-gen] is antireflexive for "valid (ListCursor Bool)"s [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (ListCursor Bool)"s [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] Functor ListCursor
50.30 s
[cursor-gen] fmap :: (a -> b) -> ListCursor a -> ListCursor b
50.30 s
[cursor-gen] satisfies the first Fuctor law: 'fmap id == id' for "ListCursor of ints :: (ListCursor Int)" [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "ListCursor of ints :: (ListCursor Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] (<$) :: a -> ListCursor b -> ListCursor a
50.30 s
[cursor-gen] is equivalent to its default implementation for "int :: Int" and "ListCursor of ints :: (ListCursor Int)" [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] GenValid (ListCursor Bool)
50.30 s
[cursor-gen] genValid :: Gen (ListCursor Bool)
50.30 s
[cursor-gen] only generates valid '(ListCursor Bool)'s [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] emptyListCursor
50.30 s
[cursor-gen] is valid [✔]
50.30 s
[cursor-gen] makeListCursor
50.30 s
[cursor-gen] produces valid list cursors [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] makeListCursorWithSelection
50.30 s
[cursor-gen] produces valid list cursors [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] rebuildListCursor
50.30 s
[cursor-gen] produces valid lists [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.30 s
[cursor-gen] is the inverse of makeListCursor [✔]
50.30 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] is the inverse of makeListCursorWithSelection for any index [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] listCursorNull
50.31 s
[cursor-gen] produces valid bools [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] listCursorLength
50.31 s
[cursor-gen] produces valid bools [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] listCursorIndex
50.31 s
[cursor-gen] produces valid indices [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] listCursorSelectPrev
50.31 s
[cursor-gen] produces valid cursors [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] is a movement [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] selects the previous position [‐]
50.31 s
[cursor-gen] # PENDING: No reason given
50.31 s
[cursor-gen] listCursorSelectNext
50.31 s
[cursor-gen] produces valid cursors [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] is a movement [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.31 s
[cursor-gen] selects the next position [‐]
50.31 s
[cursor-gen] # PENDING: No reason given
50.31 s
[cursor-gen] listCursorSelectIndex
50.31 s
[cursor-gen] produces valid cursors [✔]
50.31 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] is a movement [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] selects the position at the given index [‐]
50.42 s
[cursor-gen] # PENDING: No reason given
50.42 s
[cursor-gen] listCursorPrevItem
50.42 s
[cursor-gen] produces valid items [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] returns the item before the position [‐]
50.42 s
[cursor-gen] # PENDING: No reason given
50.42 s
[cursor-gen] listCursorNextItem
50.42 s
[cursor-gen] produces valid items [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] returns the item after the position [‐]
50.42 s
[cursor-gen] # PENDING: No reason given
50.42 s
[cursor-gen] listCursorPrevUntil
50.42 s
[cursor-gen] produces valid cursors [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] produces a cursor where the previous item either satisfies the predicate or is empty [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.42 s
[cursor-gen] listCursorNextUntil
50.42 s
[cursor-gen] produces valid cursors [✔]
50.42 s
[cursor-gen] +++ OK, passed 100 tests.
50.43 s
[cursor-gen] produces a cursor where the previous item either satisfies the predicate or is empty [✔]
50.43 s
[cursor-gen] +++ OK, passed 100 tests.
50.43 s
[cursor-gen] listCursorSelectStart
50.43 s
[cursor-gen] produces valid cursors [✔]
50.43 s
[cursor-gen] +++ OK, passed 100 tests.
50.48 s
[cursor-gen] is a movement [✔]
50.48 s
[cursor-gen] +++ OK, passed 100 tests.
50.49 s
[cursor-gen] is idempotent [✔]
50.49 s
[cursor-gen] +++ OK, passed 100 tests.
50.49 s
[cursor-gen] selects the starting position [‐]
50.49 s
[cursor-gen] # PENDING: No reason given
50.50 s
[cursor-gen] listCursorSelectEnd
50.51 s
[cursor-gen] produces valid cursors [✔]
50.51 s
[cursor-gen] +++ OK, passed 100 tests.
50.51 s
[cursor-gen] is a movement [✔]
50.51 s
[cursor-gen] +++ OK, passed 100 tests.
50.52 s
[cursor-gen] is idempotent [✔]
50.52 s
[cursor-gen] +++ OK, passed 100 tests.
50.52 s
[cursor-gen] selects the end position [‐]
50.52 s
[cursor-gen] # PENDING: No reason given
50.52 s
[cursor-gen] listCursorInsert
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] inserts an item before the cursor [‐]
50.53 s
[cursor-gen] # PENDING: No reason given
50.53 s
[cursor-gen] listCursorAppend
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] inserts an item after the cursor [‐]
50.53 s
[cursor-gen] # PENDING: No reason given
50.53 s
[cursor-gen] listCursorInsertList
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] listCursorAppendList
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] listCursorRemove
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] removes an item before the cursor [‐]
50.53 s
[cursor-gen] # PENDING: No reason given
50.53 s
[cursor-gen] listCursorDelete
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] removes an item before the cursor [‐]
50.53 s
[cursor-gen] # PENDING: No reason given
50.53 s
[cursor-gen] listCursorSplit
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] produces two list cursors that rebuild to the rebuilding of the original [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] listCursorCombine
50.53 s
[cursor-gen] produces valids [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] produces a list that rebuilds to the rebuilding of the original two cursors [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] Cursor.List.NonEmpty
50.53 s
[cursor-gen] nonemptyPrepend
50.53 s
[cursor-gen] is equivalent to regular prepend [✔]
50.53 s
[cursor-gen] +++ OK, passed 100 tests.
50.53 s
[cursor-gen] nonemptyAppend
50.72 s
[cursor-gen] is equivalent to regular append [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] Cursor.Map
50.72 s
[cursor-gen] Eq (MapCursor Bool Bool Bool Bool)
50.72 s
[cursor-gen] (==) :: (MapCursor Bool Bool Bool Bool) -> (MapCursor Bool Bool Bool Bool) -> Bool
50.72 s
[cursor-gen] is reflexive for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] is symmetric for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] is transitive for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] (/=) :: (MapCursor Bool Bool Bool Bool) -> (MapCursor Bool Bool Bool Bool) -> Bool
50.72 s
[cursor-gen] is antireflexive for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (MapCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] GenValid (MapCursor Bool Bool Bool Bool)
50.72 s
[cursor-gen] genValid :: Gen (MapCursor Bool Bool Bool Bool)
50.72 s
[cursor-gen] only generates valid '(MapCursor Bool Bool Bool Bool)'s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] Cursor.Map.KeyValue
50.72 s
[cursor-gen] Eq (KeyValueCursor Bool Bool Bool Bool)
50.72 s
[cursor-gen] (==) :: (KeyValueCursor Bool Bool Bool Bool) -> (KeyValueCursor Bool Bool Bool Bool) -> Bool
50.72 s
[cursor-gen] is reflexive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.72 s
[cursor-gen] +++ OK, passed 100 tests.
50.72 s
[cursor-gen] is symmetric for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is transitive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] (/=) :: (KeyValueCursor Bool Bool Bool Bool) -> (KeyValueCursor Bool Bool Bool Bool) -> Bool
50.73 s
[cursor-gen] is antireflexive for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (KeyValueCursor Bool Bool Bool Bool)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] GenValid (KeyValueCursor Bool Bool Bool Bool)
50.73 s
[cursor-gen] genValid :: Gen (KeyValueCursor Bool Bool Bool Bool)
50.73 s
[cursor-gen] only generates valid '(KeyValueCursor Bool Bool Bool Bool)'s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] Eq KeyValueToggle
50.73 s
[cursor-gen] (==) :: KeyValueToggle -> KeyValueToggle -> Bool
50.73 s
[cursor-gen] is reflexive for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is symmetric for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is transitive for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] (/=) :: KeyValueToggle -> KeyValueToggle -> Bool
50.73 s
[cursor-gen] is antireflexive for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid KeyValueToggle"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] GenValid KeyValueToggle
50.73 s
[cursor-gen] genValid :: Gen KeyValueToggle
50.73 s
[cursor-gen] only generates valid 'KeyValueToggle's [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] Cursor.Simple.Forest
50.73 s
[cursor-gen] Eq (ForestCursor Int Int)
50.73 s
[cursor-gen] (==) :: (ForestCursor Int Int) -> (ForestCursor Int Int) -> Bool
50.73 s
[cursor-gen] is reflexive for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is symmetric for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is transitive for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] (/=) :: (ForestCursor Int Int) -> (ForestCursor Int Int) -> Bool
50.73 s
[cursor-gen] is antireflexive for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (ForestCursor Int Int)"s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] GenValid (ForestCursor Bool Bool)
50.73 s
[cursor-gen] genValid :: Gen (ForestCursor Bool Bool)
50.73 s
[cursor-gen] only generates valid '(ForestCursor Bool Bool)'s [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] shrinkValid :: (ForestCursor Bool Bool -> [ForestCursor Bool Bool])
50.73 s
[cursor-gen] preserves validity for the first 10 elements [✔]
50.73 s
[cursor-gen] +++ OK, passed 50 tests.
50.73 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
50.73 s
[cursor-gen] +++ OK, passed 50 tests.
50.73 s
[cursor-gen] singletonForestCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] makeForestCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] rebuildForestCursor
50.73 s
[cursor-gen] produces valid forests [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is the inverse of makeForestCursor for integers [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorLestCursorL
50.73 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] satisfies the second lens law for valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] gets valid values from valid values values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorSelectedTreeL
50.73 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] satisfies the second lens law for valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] gets valid values from valid values values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorSelection
50.73 s
[cursor-gen] produces valid ints [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] returns the index of the currently selected element [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectIndex
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is the identity function when given the current selection [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] returns selects the element at the given index [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectPrevTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the previous tree cursor [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectNextTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the next tree [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectFirstTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the first tree [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectLastTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the last tree [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectPrev
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the previous node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] Works for this classic example without any collapsing [✔]
50.73 s
[cursor-gen] forestCursorSelectNext
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the next node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] Works for this classic example [✔]
50.73 s
[cursor-gen] forestCursorSelectPrevOnSameLevel
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the previous node on the same level as the current node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectNextOnSameLevel
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the next node on the same level as the current node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectFirstOnSameLevel
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the previous node on the same level as the current node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectLastOnSameLevel
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the next node on the same level as the current node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectFirst
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the first node in the forest [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectLast
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the last node in the forest [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectAbove
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the parent [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectBelowAtPos
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement for any index [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the child of the selected node at the given position [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectBelowAtStart
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the first child of the selected node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorSelectBelowAtEnd
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] is a movement [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] selects the first child of the selected node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorOpenCurrentForest
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorCloseCurrentForest
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorToggleCurrentForest
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorOpenCurrentForestRecursively
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorToggleCurrentForestRecursively
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] forestCursorInsertEntireTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a tree cursor before the currently selected tree cursor [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertAndSelectTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a tree cursor before the currently selected tree cursor and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendEntireTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a tree after the currently selected tree cursor [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendAndSelectTreeCursor
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a tree cursor after the currently selected tree cursor and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a tree before the currently selected tree [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertAndSelectTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a tree before the currently selected tree and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a tree after the currently selected tree [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendAndSelectTree
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a tree after the currently selected tree and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsert
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a node before the currently selected node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a node before the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertNodeSingleAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a node before the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorInsertNodeAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] inserts a node before the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppend
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a node after the currently selected node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a node after the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendNodeSingleAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a node after the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAppendNodeAndSelect
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] appends a node after the currently selected node and selects it [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAddChildTreeToNodeAtPos
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] adds a child tree to a node at the given position in the children of that node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAddChildTreeToNodeAtStart
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] adds a child tree to a node at the start the children of that node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAddChildTreeToNodeAtEnd
50.73 s
[cursor-gen] produces valid cursors [✔]
50.73 s
[cursor-gen] +++ OK, passed 100 tests.
50.73 s
[cursor-gen] adds a child tree to a node at the end the children of that node [‐]
50.73 s
[cursor-gen] # PENDING: No reason given
50.73 s
[cursor-gen] forestCursorAddChildToNodeAtPos
50.73 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the given position in the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildToNodeAtStart
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the start the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildToNodeAtEnd
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the end the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildTreeToNodeAtPosAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child tree to a node at the given position in the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildTreeToNodeAtStartAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child tree to a node at the start the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildTreeToNodeAtEndAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child tree to a node at the end the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildToNodeAtPosAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the given position in the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildToNodeAtStartAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the start the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildToNodeAtEndAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] adds a child to a node at the end the children of that node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorAddChildNodeSingleToNodeAtPosAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddChildNodeSingleToNodeAtStartAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddChildNodeSingleToNodeAtEndAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddChildNodeToNodeAtPosAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddChildNodeToNodeAtStartAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddChildNodeToNodeAtEndAndSelect
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorAddRoot
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] houses the entire forest under the given node [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorSwapPrev
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the docs [✔]
50.74 s
[cursor-gen] swaps the current node with the previous node on the same level [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] reverts forestCursorSwapNext [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorSwapNext
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the docs [✔]
50.74 s
[cursor-gen] swaps the current node with the next node on the same level [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] reverts forestCursorSwapPrev [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] forestCursorRemoveElemAndSelectPrev
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works for this simple example [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] removes the selected element and selects the previous element [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDeleteElemAndSelectNext
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works for this simple example [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] deletes the selected element and selects the next element [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorRemoveElem
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works for this simple example [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] removes the selected element [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDeleteElem
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works for this simple example [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] deletes the selected element [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorRemoveSubTreeAndSelectPrev
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] removes the selected subtree and selects the previous tree [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDeleteSubTreeAndSelectNext
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] deletes the selected subtree and selects the next tree [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorRemoveSubTree
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] removes the selected subtree [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDeleteSubTree
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] deletes the selected subtree [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorPromoteElem
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the documentation [✔]
50.74 s
[cursor-gen] promotes the current node to the level of its parent [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDemoteElem
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the documentation [✔]
50.74 s
[cursor-gen] demotes the current node to the level of its children [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorPromoteSubTree
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the documentation [✔]
50.74 s
[cursor-gen] promotes the current subtree to the level of its parent [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDemoteSubTree
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] works on the example from the documentation [✔]
50.74 s
[cursor-gen] demotes the current subtree to the level of its children [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDemoteElemUnder
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] Works on the example from the docs [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] demotes the current node to the level of its children [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] forestCursorDemoteSubTreeUnder
50.74 s
[cursor-gen] produces valids on valids [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] Works on the example from the docs [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] demotes the current subtree to the level of its children, by adding a root [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] Cursor.Simple.List.NonEmpty
50.74 s
[cursor-gen] Eq (NonEmptyCursor Bool Bool)
50.74 s
[cursor-gen] (==) :: (NonEmptyCursor Bool Bool) -> (NonEmptyCursor Bool Bool) -> Bool
50.74 s
[cursor-gen] is reflexive for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is symmetric for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is transitive for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] (/=) :: (NonEmptyCursor Bool Bool) -> (NonEmptyCursor Bool Bool) -> Bool
50.74 s
[cursor-gen] is antireflexive for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (NonEmptyCursor Bool Bool)"s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] GenValid (NonEmptyCursor Bool Bool)
50.74 s
[cursor-gen] genValid :: Gen (NonEmptyCursor Bool Bool)
50.74 s
[cursor-gen] only generates valid '(NonEmptyCursor Bool Bool)'s [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] makeNonEmptyCursor
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] makeNonEmptyCursorWithSelection
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is the inverse of rebuildNonEmptyCursor when using the current selection [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] singletonNonEmptyCursor
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] rebuildNonEmptyCursor
50.74 s
[cursor-gen] produces valid nonempty lists [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is the inverse of makeNonEmptyCursor for integers [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is the inverse of makeNonEmptyCursorWithSelection for integers, for any index [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] nonEmptyCursorElemL
50.74 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] satisfies the second lens law for valid values [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] gets valid values from valid values values [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] nonEmptyCursorSelectPrev
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] is a movement [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
50.74 s
[cursor-gen] selects the previous element [‐]
50.74 s
[cursor-gen] # PENDING: No reason given
50.74 s
[cursor-gen] nonEmptyCursorSelectNext
50.74 s
[cursor-gen] produces valid cursors [✔]
50.74 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is a movement [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] selects the next element [‐]
51.36 s
[cursor-gen] # PENDING: No reason given
51.36 s
[cursor-gen] nonEmptyCursorSelectFirst
51.36 s
[cursor-gen] produces valid cursors [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is a movement [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is idempotent [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] selects the first element [‐]
51.36 s
[cursor-gen] # PENDING: No reason given
51.36 s
[cursor-gen] nonEmptyCursorSelectLast
51.36 s
[cursor-gen] produces valid cursors [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is a movement [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is idempotent [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] selects the last element [‐]
51.36 s
[cursor-gen] # PENDING: No reason given
51.36 s
[cursor-gen] nonEmptyCursorSelection
51.36 s
[cursor-gen] produces valid ints [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] returns the index of the currently selected element [‐]
51.36 s
[cursor-gen] # PENDING: No reason given
51.36 s
[cursor-gen] nonEmptyCursorSelectIndex
51.36 s
[cursor-gen] produces valid cursors [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] is the identity function when given the current selection [✔]
51.36 s
[cursor-gen] +++ OK, passed 100 tests.
51.36 s
[cursor-gen] returns selects the element at the given index [‐]
51.36 s
[cursor-gen] # PENDING: No reason given
51.36 s
[cursor-gen] nonEmptyCursorInsert
53.03 s
[cursor-gen] produces valid cursors [✔]
53.03 s
[cursor-gen] +++ OK, passed 100 tests.
53.03 s
[cursor-gen] inserts a character before the cursor [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorAppend
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character after the cursor [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorInsertAndSelect
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character before the cursor and selects it [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorAppendAndSelect
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] appends a character before the cursor and selects it [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorInsertAtStart
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character at the start of the list [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorAppendAtEnd
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character at the end of the list [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorInsertAtStartAndSelect
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character at the start of the list and selects it [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorAppendAtEndAndSelect
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] appends a character at the end of the list and selects it [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorRemoveElem
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] removes an element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] nonEmptyCursorDeleteElem
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] nonEmptyCursorSearch
53.12 s
[cursor-gen] produces valid cursors when looking for an equal element [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is indeed the right value when it finds a value and is looking for an equal element [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] finds an element if it is in there [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] nonEmptyCursorSelectOrAdd
53.12 s
[cursor-gen] produces valid cursors when looking for an equal element [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] Cursor.Simple.Map
53.12 s
[cursor-gen] makeMapCursor
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] makeMapCursorWithSelection
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] singletonMapCursorKey
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] singletonMapCursorValue
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] rebuildMapCursor
53.12 s
[cursor-gen] produces valid Nonempty lists [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is the inverse of makeMapCursor for integers [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorNonEmptyCursorL
53.12 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] satisfies the second lens law for valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] gets valid values from valid values values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorElemL
53.12 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] satisfies the second lens law for valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] gets valid values from valid values values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorSelectKey
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorSelectValue
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorToggleSelected
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorSelectPrev
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is a movement [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] selects the previous element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorSelectNext
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is a movement [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] selects the next element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorSelectFirst
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is a movement [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is idempotent [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] selects the first element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorSelectLast
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is a movement [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is idempotent [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] selects the last element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorSelection
53.12 s
[cursor-gen] produces valid ints [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] returns the index of the currently selected element [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorSelectIndex
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] is the identity function when given the current selection [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] returns selects the element at the given index [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorInsert
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character before the cursor [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorAppend
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] inserts a character after the cursor [‐]
53.12 s
[cursor-gen] # PENDING: No reason given
53.12 s
[cursor-gen] mapCursorInsertAndSelectKey
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorAppendAndSelectKey
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorInsertAndSelectValue
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorAppendAndSelectValue
53.12 s
[cursor-gen] produces valid cursors [✔]
53.12 s
[cursor-gen] +++ OK, passed 100 tests.
53.12 s
[cursor-gen] mapCursorRemoveElem
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] removes an element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] mapCursorDeleteElem
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes an element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] mapCursorSearch
53.13 s
[cursor-gen] produces valid cursors when looking for an equal pair [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is indeed the right value when it finds a value and is looking for an equal element [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] mapCursorSelectOrAdd
53.13 s
[cursor-gen] produces valid cursors when looking for an equal element [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Cursor.Simple.Map.KeyValue
53.13 s
[cursor-gen] makeKeyValueCursorKey
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] makeKeyValueCursorValue
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] rebuildKeyValueCursor
53.13 s
[cursor-gen] produces valid tuples [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] keyValueCursorSelection
53.13 s
[cursor-gen] produces valid selections [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] keyValueCursorSelectKey
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is a movement [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] keyValueCursorSelectValue
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is a movement [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] keyValueCursorToggleSelected
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is a movement [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Cursor.Simple.Tree.Base
53.13 s
[cursor-gen] Eq (TreeCursor Int Int)
53.13 s
[cursor-gen] (==) :: (TreeCursor Int Int) -> (TreeCursor Int Int) -> Bool
53.13 s
[cursor-gen] is reflexive for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is symmetric for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is transitive for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] (/=) :: (TreeCursor Int Int) -> (TreeCursor Int Int) -> Bool
53.13 s
[cursor-gen] is antireflexive for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (TreeCursor Int Int)"s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] GenValid (TreeCursor Bool Bool)
53.13 s
[cursor-gen] genValid :: Gen (TreeCursor Bool Bool)
53.13 s
[cursor-gen] only generates valid '(TreeCursor Bool Bool)'s [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] makeTreeCursor
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] makeNodeTreeCursor
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] makeTreeCursorWithSelection
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] singletonTreeCursor
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] rebuildTreeCursor
53.13 s
[cursor-gen] produces valid trees [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is the inverse of makeTreeCursor for integers [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] is the inverse of makeTreeCursorWithSelection for the current selection [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Cursor.Simple.Tree.Collapse
53.13 s
[cursor-gen] treeCursorOpenCurrentForest
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] treeCursorCloseCurrentForest
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] treeCursorToggleCurrentForest
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] treeCursorOpenCurrentForestRecursively
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] treeCursorToggleCurrentForestRecursively
53.13 s
[cursor-gen] produces valid cursors [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Cursor.Simple.Tree.Delete
53.13 s
[cursor-gen] treeCursorDeleteSubTreeAndSelectPrevious
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current subtree selects the previous subtree [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteSubTreeAndSelectNext
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current subtree selects the next subtree [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteSubTreeAndSelectAbove
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current subtree selects the above node [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorRemoveSubTree
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] removes the current subtree [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteSubTree
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current subtree [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteElemAndSelectPrevious
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] works for this simple example [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current element and selects the previous element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteElemAndSelectNext
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] works for this simple example [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current element and selects the next element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteElemAndSelectAbove
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] works for this simple example [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current element and selects the above element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorRemoveElem
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] removes the current element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDeleteElem
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] deletes the current element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] Cursor.Simple.Tree.Demote
53.13 s
[cursor-gen] Functor DemoteResult
53.13 s
[cursor-gen] fmap :: (a -> b) -> DemoteResult a -> DemoteResult b
53.13 s
[cursor-gen] satisfies the first Fuctor law: 'fmap id == id' for "DemoteResult of ints :: (DemoteResult Int)" [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "DemoteResult of ints :: (DemoteResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] (<$) :: a -> DemoteResult b -> DemoteResult a
53.13 s
[cursor-gen] is equivalent to its default implementation for "int :: Int" and "DemoteResult of ints :: (DemoteResult Int)" [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] treeCursorDemoteElem
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Works on the example from the docs [✔]
53.13 s
[cursor-gen] demotes the current node to the level of its children [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDemoteSubTree
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Works on the example from the docs [✔]
53.13 s
[cursor-gen] demotes the current subtree to the level of its children [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDemoteElemUnder
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Works on the example from the docs [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] demotes the current node to the level of its children [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorDemoteSubTreeUnder
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] Works on the example from the docs [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] demotes the current subtree to the level of its children, by adding a root [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] Cursor.Simple.Tree.Insert
53.13 s
[cursor-gen] treeCursorInsert
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] inserts the element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorInsertAndSelect
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] inserts and select the element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.13 s
[cursor-gen] treeCursorInsertNodeSingleAndSelect
53.13 s
[cursor-gen] produces valids on valids [✔]
53.13 s
[cursor-gen] +++ OK, passed 100 tests.
53.13 s
[cursor-gen] inserts and select the element [‐]
53.13 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorInsertNodeAndSelect
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] inserts and select the element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAppend
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] appends the element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAppendAndSelect
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] appends and select the element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAppendNodeSingleAndSelect
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] appends and select the element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAppendNodeAndSelect
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] appends and select the element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtPos
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the given index in the children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtStart
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the start of the children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtEnd
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the end of the children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtPosAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the given index in theAndSelect children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtStartAndSelect
53.14 s
[cursor-gen] producesAndSelect valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the start of the children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildAtEndAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] adds a tree at the end of the children of the current node [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] treeCursorAddChildNodeSingleAtPosAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorAddChildNodeSingleAtStartAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorAddChildNodeSingleAtEndAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorAddChildNodeAtPosAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorAddChildNodeAtStartAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] works for this example [✔]
53.14 s
[cursor-gen] treeCursorAddChildNodeAtEndAndSelect
53.14 s
[cursor-gen] produces valid cursors [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] works for this example [✔]
53.14 s
[cursor-gen] Cursor.Simple.Tree.Movement
53.14 s
[cursor-gen] treeCursorSelection
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorSelect
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] is identity with the current selection [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorSelectPrevOnSameLevel
53.14 s
[cursor-gen] produces valids on valids [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] is a movement [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] selects the previous element [‐]
53.14 s
[cursor-gen] # PENDING: No reason given
53.14 s
[cursor-gen] after treeCursorSelectNextOnSameLevel is identity if they don't fail [✔]
53.14 s
[cursor-gen] +++ OK, passed 100 tests.
53.14 s
[cursor-gen] treeCursorSelectNextOnSameLevel
54.04 s
[cursor-gen] produces valids on valids [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] is a movement [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] selects the next element [‐]
54.04 s
[cursor-gen] # PENDING: No reason given
54.04 s
[cursor-gen] after treeCursorSelectPrevOnSameLevel is identity if they don't fail [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] treeCursorSelectFirstOnSameLevel
54.04 s
[cursor-gen] produces valids on valids [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] is a movement [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] selects the previous element [‐]
54.04 s
[cursor-gen] # PENDING: No reason given
54.04 s
[cursor-gen] treeCursorSelectNextOnSameLevel
54.04 s
[cursor-gen] produces valids on valids [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] is a movement [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] selects the next element [‐]
54.04 s
[cursor-gen] # PENDING: No reason given
54.04 s
[cursor-gen] treeCursorSelectAbovePrev
54.04 s
[cursor-gen] produces valids on valids [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] is a movement [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] Works for this classic example [✔]
54.04 s
[cursor-gen] selects the previous element [‐]
54.04 s
[cursor-gen] # PENDING: No reason given
54.04 s
[cursor-gen] after treeCursorSelectAboveNext is identity if they don't fail [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.04 s
[cursor-gen] treeCursorSelectAboveNext
54.04 s
[cursor-gen] produces valids on valids [✔]
54.04 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] is a movement [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] Works for this classic example [✔]
54.05 s
[cursor-gen] selects the next element [‐]
54.05 s
[cursor-gen] # PENDING: No reason given
54.05 s
[cursor-gen] after treeCursorSelectAbovePrev is identity if they don't fail [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] treeCursorSelectPrev
54.05 s
[cursor-gen] produces valids on valids [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] is a movement [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] selects the previous element [‐]
54.05 s
[cursor-gen] # PENDING: No reason given
54.05 s
[cursor-gen] after treeCursorSelectNext is identity if they don't fail [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] treeCursorSelectNext
54.05 s
[cursor-gen] produces valids on valids [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] is a movement [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] selects the next element [‐]
54.05 s
[cursor-gen] # PENDING: No reason given
54.05 s
[cursor-gen] after treeCursorSelectPrev is identity if they don't fail [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] treeCursorSelectFirst
54.05 s
[cursor-gen] produces valids on valids [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] is a movement [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] selects the first element [‐]
54.05 s
[cursor-gen] # PENDING: No reason given
54.05 s
[cursor-gen] is idempotent [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.05 s
[cursor-gen] treeCursorSelectLast
54.05 s
[cursor-gen] produces valids on valids [✔]
54.05 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the last element [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] is idempotent [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] treeCursorSelectAbove
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the element above [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] after treeCursorSelectBelow is identity if they don't fail [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] treeCursorSelectBelowAtPos
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the element n-th below [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] treeCursorSelectBelowAtStart
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the first child below [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] treeCursorSelectBelowAtEnd
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the last child below [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] treeCursorSelectBelowAtStartRecursively
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the first child below, recursively [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] treeCursorSelectBelowAtEndRecursively
54.06 s
[cursor-gen] produces valids on valids [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] is a movement [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] selects the last child below, recursively [‐]
54.06 s
[cursor-gen] # PENDING: No reason given
54.06 s
[cursor-gen] Cursor.Simple.Tree.Promote
54.06 s
[cursor-gen] Functor PromoteElemResult
54.06 s
[cursor-gen] fmap :: (a -> b) -> PromoteElemResult a -> PromoteElemResult b
54.06 s
[cursor-gen] satisfies the first Fuctor law: 'fmap id == id' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "PromoteElemResult of ints :: (PromoteElemResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] (<$) :: a -> PromoteElemResult b -> PromoteElemResult a
54.06 s
[cursor-gen] is equivalent to its default implementation for "int :: Int" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.06 s
[cursor-gen] Applicative PromoteElemResult
54.06 s
[cursor-gen] pure :: a -> PromoteElemResult a and (<*>) :: PromoteElemResult (a -> b) -> PromoteElemResult a -> PromoteElemResult b
54.06 s
[cursor-gen] satisfy the identity law: 'pure id <*> v = v' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.06 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "PromoteElemResult of scalings :: (PromoteElemResult (Int -> Int))" composed with "PromoteElemResult of increments :: (PromoteElemResult (Int -> Int))" and applied to "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "PromoteElemResult of increments :: (PromoteElemResult (Int -> Int))" sequenced with "int :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (*>) :: PromoteElemResult a -> PromoteElemResult b -> PromoteElemResult b
54.07 s
[cursor-gen] is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "PromoteElemResult of ints :: (PromoteElemResult Int)" in front of "PromoteElemResult of ints :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (<*) :: PromoteElemResult a -> PromoteElemResult b -> PromoteElemResult a
54.07 s
[cursor-gen] is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "PromoteElemResult of ints :: Int" behind "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Monad PromoteElemResult
54.07 s
[cursor-gen] return :: a -> PromoteElemResult a and (>>=) :: PromoteElemResult a -> (b -> PromoteElemResult a) -> PromoteElemResult b
54.07 s
[cursor-gen] satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the second Monad law: 'm >>= return = m' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (>>=) :: PromoteElemResult a -> (b -> PromoteElemResult a) -> PromoteElemResult b
54.07 s
[cursor-gen] satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "PromoteElemResult of ints :: (PromoteElemResult Int)" "perturbations using the int :: (Int -> PromoteElemResult Int)" and "perturbations using the double the int :: (Int -> PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] relation with Applicative PromoteElemResult
54.07 s
[cursor-gen] satisfies 'pure = return' for "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfies '(<*>) = ap' for "PromoteElemResult of additions :: (PromoteElemResult (Int -> Int))" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfies '(>>) = (*>)' for "PromoteElemResult of ints :: (PromoteElemResult Int)" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] relation with Functor PromoteElemResult
54.07 s
[cursor-gen] satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "PromoteElemResult of ints :: (PromoteElemResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] treeCursorPromoteElem
54.07 s
[cursor-gen] produces valids on valids [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Works on the example from the docs [✔]
54.07 s
[cursor-gen] promotes the current node to the level of its parent [‐]
54.07 s
[cursor-gen] # PENDING: No reason given
54.07 s
[cursor-gen] Functor PromoteResult
54.07 s
[cursor-gen] fmap :: (a -> b) -> PromoteResult a -> PromoteResult b
54.07 s
[cursor-gen] satisfies the first Fuctor law: 'fmap id == id' for "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "PromoteResult of ints :: (PromoteResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (<$) :: a -> PromoteResult b -> PromoteResult a
54.07 s
[cursor-gen] is equivalent to its default implementation for "int :: Int" and "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Applicative PromoteResult
54.07 s
[cursor-gen] pure :: a -> PromoteResult a and (<*>) :: PromoteResult (a -> b) -> PromoteResult a -> PromoteResult b
54.07 s
[cursor-gen] satisfy the identity law: 'pure id <*> v = v' for "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the composition law: 'pure (.) <*> u <*> v <*> w = u <*> (v <*> w)' for "PromoteResult of scalings :: (PromoteResult (Int -> Int))" composed with "PromoteResult of increments :: (PromoteResult (Int -> Int))" and applied to "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for "increments :: (Int -> Int)" sequenced with "int :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for "PromoteResult of increments :: (PromoteResult (Int -> Int))" sequenced with "int :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the law about the functor instance: fmap f x = pure f <*> x for "increments :: (Int -> Int)" mapped over "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (*>) :: PromoteResult a -> PromoteResult b -> PromoteResult b
54.07 s
[cursor-gen] is equivalent to its default implementation 'u Type> v = pure (const id) <*> u <*> v' for "PromoteResult of ints :: (PromoteResult Int)" in front of "PromoteResult of ints :: Int" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (<*) :: PromoteResult a -> PromoteResult b -> PromoteResult a
54.07 s
[cursor-gen] is equivalent to its default implementation 'u <* v = pure const <*> u <*> v' for "PromoteResult of ints :: Int" behind "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Monad PromoteResult
54.07 s
[cursor-gen] return :: a -> PromoteResult a and (>>=) :: PromoteResult a -> (b -> PromoteResult a) -> PromoteResult b
54.07 s
[cursor-gen] satisfy the first Monad law: 'return a >>= k = k a' for "int :: Int" and "perturbations using the int :: (Int -> PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfy the second Monad law: 'm >>= return = m' for "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (>>=) :: PromoteResult a -> (b -> PromoteResult a) -> PromoteResult b
54.07 s
[cursor-gen] satisfies the third Monad law: 'm >>= (x -> k x >>= h) = (m >>= k) >>= h' for "PromoteResult of ints :: (PromoteResult Int)" "perturbations using the int :: (Int -> PromoteResult Int)" and "perturbations using the double the int :: (Int -> PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] relation with Applicative PromoteResult
54.07 s
[cursor-gen] satisfies 'pure = return' for "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfies '(<*>) = ap' for "PromoteResult of additions :: (PromoteResult (Int -> Int))" and "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfies '(>>) = (*>)' for "PromoteResult of ints :: (PromoteResult Int)" and "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] relation with Functor PromoteResult
54.07 s
[cursor-gen] satisfies 'fmap f xs = xs >>= return . f' for "increments :: (Int -> Int)" and "PromoteResult of ints :: (PromoteResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] treeCursorPromoteSubTree
54.07 s
[cursor-gen] produces valids on valids [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Works on the example from the docs [✔]
54.07 s
[cursor-gen] promotes the current subtree to the level of its parent [‐]
54.07 s
[cursor-gen] # PENDING: No reason given
54.07 s
[cursor-gen] Cursor.Simple.Tree.Swap
54.07 s
[cursor-gen] Functor SwapResult
54.07 s
[cursor-gen] fmap :: (a -> b) -> SwapResult a -> SwapResult b
54.07 s
[cursor-gen] satisfies the first Fuctor law: 'fmap id == id' for "SwapResult of ints :: (SwapResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] satisfieds the second Functor law: 'fmap (f . g) == fmap f . fmap g' for "SwapResult of ints :: (SwapResult Int)" 's given to "increments :: (Int -> Int)" and "scalings :: (Int -> Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (<$) :: a -> SwapResult b -> SwapResult a
54.07 s
[cursor-gen] is equivalent to its default implementation for "int :: Int" and "SwapResult of ints :: (SwapResult Int)" [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] treeCursorSwapPrev
54.07 s
[cursor-gen] produces valids on valids [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] works on the example from the docs [✔]
54.07 s
[cursor-gen] reverts treeCursorSwapNext [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] swaps the current node with the previous node [‐]
54.07 s
[cursor-gen] # PENDING: No reason given
54.07 s
[cursor-gen] treeCursorSwapNext
54.07 s
[cursor-gen] produces valids on valids [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] works on the example from the docs [✔]
54.07 s
[cursor-gen] reverts treeCursorSwapNext [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] swaps the current node with the next node [‐]
54.07 s
[cursor-gen] # PENDING: No reason given
54.07 s
[cursor-gen] Cursor.Text
54.07 s
[cursor-gen] Eq TextCursor
54.07 s
[cursor-gen] (==) :: TextCursor -> TextCursor -> Bool
54.07 s
[cursor-gen] is reflexive for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] is symmetric for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] is transitive for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] (/=) :: TextCursor -> TextCursor -> Bool
54.07 s
[cursor-gen] is antireflexive for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid TextCursor"s [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] GenValid TextCursor
54.07 s
[cursor-gen] genValid :: Gen TextCursor
54.07 s
[cursor-gen] only generates valid 'TextCursor's [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] Validity TextCursor
54.07 s
[cursor-gen] considers a text cursor with a newline in the previous characters invalid [✔]
54.07 s
[cursor-gen] considers a text cursor with a newline in the next characters invalid [✔]
54.07 s
[cursor-gen] considers a text cursor with an unsafe character in the previous characters invalid [✔]
54.07 s
[cursor-gen] considers a text cursor with an unsafe character in the next characters invalid [✔]
54.07 s
[cursor-gen] emptyTextCursor
54.07 s
[cursor-gen] is valid [✔]
54.07 s
[cursor-gen] makeTextCursor
54.07 s
[cursor-gen] produces valid list cursors [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] makeTextCursorWithSelection
54.07 s
[cursor-gen] produces valid list cursors [✔]
54.07 s
[cursor-gen] +++ OK, passed 100 tests.
54.07 s
[cursor-gen] rebuildTextCursor
54.08 s
[cursor-gen] produces valid lists [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] is the inverse of makeTextCursor [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] is the inverse of makeTextCursorWithSelection for any index [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] textCursorNull
54.08 s
[cursor-gen] produces valid bools [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] textCursorLength
54.08 s
[cursor-gen] produces valid ints [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] textCursorIndex
54.08 s
[cursor-gen] produces valid indices [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] textCursorSelectPrev
54.08 s
[cursor-gen] produces valid cursors [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] is a movement [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] selects the previous position [‐]
54.08 s
[cursor-gen] # PENDING: No reason given
54.08 s
[cursor-gen] textCursorSelectNext
54.08 s
[cursor-gen] produces valid cursors [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] is a movement [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.08 s
[cursor-gen] selects the next position [‐]
54.08 s
[cursor-gen] # PENDING: No reason given
54.08 s
[cursor-gen] textCursorSelectIndex
54.08 s
[cursor-gen] produces valid cursors [✔]
54.08 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] is a movement [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] selects the position at the given index [‐]
54.09 s
[cursor-gen] # PENDING: No reason given
54.09 s
[cursor-gen] produces a cursor that has the given selection for valid selections in the cursor [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] textCursorSelectStart
54.09 s
[cursor-gen] produces valid cursors [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] is a movement [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] is idempotent [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] selects the starting position [‐]
54.09 s
[cursor-gen] # PENDING: No reason given
54.09 s
[cursor-gen] textCursorSelectEnd
54.09 s
[cursor-gen] produces valid cursors [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] is a movement [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] is idempotent [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] selects the end position [‐]
54.09 s
[cursor-gen] # PENDING: No reason given
54.09 s
[cursor-gen] textCursorPrevChar
54.09 s
[cursor-gen] produces valid items [✔]
54.09 s
[cursor-gen] +++ OK, passed 100 tests.
54.09 s
[cursor-gen] returns the item before the position [‐]
54.09 s
[cursor-gen] # PENDING: No reason given
54.10 s
[cursor-gen] textCursorNextChar
54.10 s
[cursor-gen] produces valid items [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests.
54.10 s
[cursor-gen] returns the item after the position [‐]
54.10 s
[cursor-gen] # PENDING: No reason given
54.10 s
[cursor-gen] textCursorSelectBeginWord
54.10 s
[cursor-gen] produces valid items [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests.
54.10 s
[cursor-gen] is a movement [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests.
54.10 s
[cursor-gen] is idempotent [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests (89% non trivial).
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] textCursorSelectEndWord
54.10 s
[cursor-gen] produces valid items [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests.
54.10 s
[cursor-gen] is a movement [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests.
54.10 s
[cursor-gen] is idempotent [✔]
54.10 s
[cursor-gen] +++ OK, passed 100 tests (89% non trivial).
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] works for this example [✔]
54.10 s
[cursor-gen] textCursorSelectNextWord
54.11 s
[cursor-gen] produces valid items [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] is a movement [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] goes to the end of the cursor [✔]
54.11 s
[cursor-gen] chooses the next word correctly [✔]
54.11 s
[cursor-gen] textCursorSelectPrevWord
54.11 s
[cursor-gen] produces valid items [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] is a movement [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] goes to the beginning of the cursor [✔]
54.11 s
[cursor-gen] chooses the previous word correctly [✔]
54.11 s
[cursor-gen] textCursorInsert
54.11 s
[cursor-gen] produces valids [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] inserts an item before the cursor [‐]
54.11 s
[cursor-gen] # PENDING: No reason given
54.11 s
[cursor-gen] textCursorAppend
54.11 s
[cursor-gen] produces valids [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] inserts an item after the cursor [‐]
54.11 s
[cursor-gen] # PENDING: No reason given
54.11 s
[cursor-gen] textCursorInsertString
54.11 s
[cursor-gen] produces valids [✔]
54.11 s
[cursor-gen] +++ OK, passed 100 tests.
54.11 s
[cursor-gen] works for this example [✔]
54.11 s
[cursor-gen] textCursorAppendString
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] textCursorInsertText
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] textCursorAppendText
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] textCursorRemove
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] removes an item before the cursor [‐]
54.12 s
[cursor-gen] # PENDING: No reason given
54.12 s
[cursor-gen] textCursorDelete
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] removes an item before the cursor [‐]
54.12 s
[cursor-gen] # PENDING: No reason given
54.12 s
[cursor-gen] textCursorSplit
54.12 s
[cursor-gen] produces valids [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] produces two list cursors that rebuild to the rebuilding of the original [✔]
54.12 s
[cursor-gen] +++ OK, passed 100 tests.
54.12 s
[cursor-gen] textCursorCombine
54.13 s
[cursor-gen] produces valids [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] produces a list that rebuilds to the rebuilding of the original two cursors [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] Cursor.TextField
54.13 s
[cursor-gen] Eq TextFieldCursor
54.13 s
[cursor-gen] (==) :: TextFieldCursor -> TextFieldCursor -> Bool
54.13 s
[cursor-gen] is reflexive for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] is symmetric for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] is transitive for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] (/=) :: TextFieldCursor -> TextFieldCursor -> Bool
54.13 s
[cursor-gen] is antireflexive for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid TextFieldCursor"s [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] GenValid TextFieldCursor
54.13 s
[cursor-gen] genValid :: Gen TextFieldCursor
54.13 s
[cursor-gen] only generates valid 'TextFieldCursor's [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] Validity TextFieldCursor
54.13 s
[cursor-gen] consider a textfield with a newline in the previous lines invalid [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] consider a textfield with a newline in the next lines invalid [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] makeTextFieldCursor
54.13 s
[cursor-gen] produces a valid cursor for "\n" [✔]
54.13 s
[cursor-gen] produces a valid cursor for "\n\n" [✔]
54.13 s
[cursor-gen] produces valid cursors [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] makeTextFieldCursorWithSelection
54.13 s
[cursor-gen] produces a valid cursor for "\n" [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] produces a valid cursor for "\n\n" [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.13 s
[cursor-gen] produces valid cursors [✔]
54.13 s
[cursor-gen] +++ OK, passed 100 tests.
54.14 s
[cursor-gen] is the inverse of rebuildTextFieldCursor when using the current selection [✔]
54.14 s
[cursor-gen] +++ OK, passed 100 tests.
54.14 s
[cursor-gen] rebuildTextFieldCursorLines
54.14 s
[cursor-gen] produces valid lists [✔]
54.14 s
[cursor-gen] +++ OK, passed 100 tests.
54.14 s
[cursor-gen] produces texts without newlines [✔]
54.14 s
[cursor-gen] +++ OK, passed 100 tests.
54.14 s
[cursor-gen] rebuildTextFieldCursor
54.14 s
[cursor-gen] produces valid texts [✔]
54.14 s
[cursor-gen] +++ OK, passed 100 tests.
54.14 s
[cursor-gen] is the inverse of makeTextFieldCursor [✔]
54.14 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] is the inverse of makeTextFieldCursorWithSelection for integers, for any index [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] textFieldCursorSelection
54.15 s
[cursor-gen] produces valid tuples [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] emptyTextFieldCursor
54.15 s
[cursor-gen] is valid [✔]
54.15 s
[cursor-gen] nullTextFieldCursor
54.15 s
[cursor-gen] produces valid [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] textFieldCursorSelectPrevLine
54.15 s
[cursor-gen] produces valid cursors [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] is a movement [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.15 s
[cursor-gen] selects the previous line [‐]
54.15 s
[cursor-gen] # PENDING: No reason given
54.15 s
[cursor-gen] textFieldCursorSelectNextLine
54.15 s
[cursor-gen] produces valid cursors [✔]
54.15 s
[cursor-gen] +++ OK, passed 100 tests.
54.16 s
[cursor-gen] is a movement [✔]
54.16 s
[cursor-gen] +++ OK, passed 100 tests.
54.16 s
[cursor-gen] selects the next line [‐]
54.16 s
[cursor-gen] # PENDING: No reason given
54.16 s
[cursor-gen] textFieldCursorSelectFirstLine
54.16 s
[cursor-gen] produces valid cursors [✔]
54.16 s
[cursor-gen] +++ OK, passed 100 tests.
54.16 s
[cursor-gen] is a movement [✔]
54.16 s
[cursor-gen] +++ OK, passed 100 tests.
54.16 s
[cursor-gen] is idempotent [✔]
54.16 s
[cursor-gen] +++ OK, passed 100 tests.
54.16 s
[cursor-gen] selects the first line [‐]
54.16 s
[cursor-gen] # PENDING: No reason given
54.16 s
[cursor-gen] textFieldCursorSelectLastLine
54.16 s
[cursor-gen] produces valid cursors [✔]
54.16 s
[cursor-gen] +++ OK, passed 100 tests.
54.17 s
[cursor-gen] is a movement [✔]
54.17 s
[cursor-gen] +++ OK, passed 100 tests.
54.17 s
[cursor-gen] is idempotent [✔]
54.17 s
[cursor-gen] +++ OK, passed 100 tests.
54.17 s
[cursor-gen] selects the last line [‐]
54.17 s
[cursor-gen] # PENDING: No reason given
54.17 s
[cursor-gen] textFieldCursorSelectPrevChar
54.17 s
[cursor-gen] produces valid cursors [✔]
54.17 s
[cursor-gen] +++ OK, passed 100 tests.
54.17 s
[cursor-gen] selects the previous character on the current line [‐]
54.17 s
[cursor-gen] # PENDING: No reason given
54.17 s
[cursor-gen] textFieldCursorSelectNextChar
54.17 s
[cursor-gen] produces valid cursors [✔]
54.17 s
[cursor-gen] +++ OK, passed 100 tests.
54.17 s
[cursor-gen] selects the previous character on the current line [‐]
54.17 s
[cursor-gen] # PENDING: No reason given
54.17 s
[cursor-gen] textFieldCursorSelectBeginWord
54.18 s
[cursor-gen] produces valid cursors [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] textFieldCursorSelectEndWord
54.18 s
[cursor-gen] produces valid cursors [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] textFieldCursorSelectPrevWord
54.18 s
[cursor-gen] produces valid cursors [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] textFieldCursorSelectNextWord
54.18 s
[cursor-gen] produces valid cursors [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] textFieldCursorIndexOnLine
54.18 s
[cursor-gen] produces valid indices [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] returns the index on the current line [‐]
54.18 s
[cursor-gen] # PENDING: No reason given
54.18 s
[cursor-gen] textFieldCursorSelectIndexOnLine
54.18 s
[cursor-gen] produces valid cursors for any index [✔]
54.18 s
[cursor-gen] +++ OK, passed 100 tests.
54.18 s
[cursor-gen] selects the given index on the current line [‐]
54.19 s
[cursor-gen] # PENDING: No reason given
54.19 s
[cursor-gen] textFieldCursorInsertChar
54.19 s
[cursor-gen] produces valid cursors [✔]
54.19 s
[cursor-gen] +++ OK, passed 100 tests.
54.19 s
[cursor-gen] inserts a character before the cursor on the current line [‐]
54.19 s
[cursor-gen] # PENDING: No reason given
54.19 s
[cursor-gen] textFieldCursorAppendChar
54.19 s
[cursor-gen] produces valid cursors [✔]
54.19 s
[cursor-gen] +++ OK, passed 100 tests.
54.19 s
[cursor-gen] inserts a character after the cursor on the currrent line [‐]
54.19 s
[cursor-gen] # PENDING: No reason given
54.19 s
[cursor-gen] textFieldCursorInsertNewline
54.19 s
[cursor-gen] produces valid cursors [✔]
54.19 s
[cursor-gen] +++ OK, passed 100 tests.
54.19 s
[cursor-gen] inserts a new line [‐]
54.19 s
[cursor-gen] # PENDING: No reason given
54.19 s
[cursor-gen] textFieldCursorAppendNewline
54.19 s
[cursor-gen] produces valid cursors [✔]
54.19 s
[cursor-gen] +++ OK, passed 100 tests.
54.19 s
[cursor-gen] textFieldCursorRemove
54.19 s
[cursor-gen] produces valid cursors [✔]
54.19 s
[cursor-gen] +++ OK, passed 100 tests.
54.19 s
[cursor-gen] removes empty text field cursor [✔]
54.19 s
[cursor-gen] removes a character or a line [‐]
54.19 s
[cursor-gen] # PENDING: No reason given
54.19 s
[cursor-gen] textFieldCursorDelete
54.20 s
[cursor-gen] produces valid cursors [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] removes empty text field cursor [✔]
54.20 s
[cursor-gen] deletes a character or a line [‐]
54.20 s
[cursor-gen] # PENDING: No reason given
54.20 s
[cursor-gen] textFieldCursorSelectStartOfLine
54.20 s
[cursor-gen] produces valid cursors [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] selects the start of the current line [‐]
54.20 s
[cursor-gen] # PENDING: No reason given
54.20 s
[cursor-gen] textFieldCursorSelectEndOfLine
54.20 s
[cursor-gen] produces valid cursors [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] selects the end of the current line [‐]
54.20 s
[cursor-gen] # PENDING: No reason given
54.20 s
[cursor-gen] Cursor.Tree.Types
54.20 s
[cursor-gen] Eq TreeCursorSelection
54.20 s
[cursor-gen] (==) :: TreeCursorSelection -> TreeCursorSelection -> Bool
54.20 s
[cursor-gen] is reflexive for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] is symmetric for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] is transitive for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] (/=) :: TreeCursorSelection -> TreeCursorSelection -> Bool
54.20 s
[cursor-gen] is antireflexive for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid TreeCursorSelection"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] GenValid TreeCursorSelection
54.20 s
[cursor-gen] genValid :: Gen TreeCursorSelection
54.20 s
[cursor-gen] only generates valid 'TreeCursorSelection's [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] shrinkValid :: (TreeCursorSelection -> [TreeCursorSelection])
54.20 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.20 s
[cursor-gen] Eq (SwapResult Bool)
54.20 s
[cursor-gen] (==) :: (SwapResult Bool) -> (SwapResult Bool) -> Bool
54.20 s
[cursor-gen] is reflexive for "valid (SwapResult Bool)"s [✔]
54.20 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (SwapResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (SwapResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (SwapResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (SwapResult Bool) -> (SwapResult Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (SwapResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (SwapResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (SwapResult Bool)
54.21 s
[cursor-gen] genValid :: Gen (SwapResult Bool)
54.21 s
[cursor-gen] only generates valid '(SwapResult Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (SwapResult Bool -> [SwapResult Bool])
54.21 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] Eq (PromoteElemResult Bool)
54.21 s
[cursor-gen] (==) :: (PromoteElemResult Bool) -> (PromoteElemResult Bool) -> Bool
54.21 s
[cursor-gen] is reflexive for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (PromoteElemResult Bool) -> (PromoteElemResult Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (PromoteElemResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (PromoteElemResult Bool)
54.21 s
[cursor-gen] genValid :: Gen (PromoteElemResult Bool)
54.21 s
[cursor-gen] only generates valid '(PromoteElemResult Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (PromoteElemResult Bool -> [PromoteElemResult Bool])
54.21 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] Eq (PromoteResult Bool)
54.21 s
[cursor-gen] (==) :: (PromoteResult Bool) -> (PromoteResult Bool) -> Bool
54.21 s
[cursor-gen] is reflexive for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (PromoteResult Bool) -> (PromoteResult Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (PromoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (PromoteResult Bool)
54.21 s
[cursor-gen] genValid :: Gen (PromoteResult Bool)
54.21 s
[cursor-gen] only generates valid '(PromoteResult Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (PromoteResult Bool -> [PromoteResult Bool])
54.21 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] Eq (DemoteResult Bool)
54.21 s
[cursor-gen] (==) :: (DemoteResult Bool) -> (DemoteResult Bool) -> Bool
54.21 s
[cursor-gen] is reflexive for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (DemoteResult Bool) -> (DemoteResult Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (DemoteResult Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (DemoteResult Bool)
54.21 s
[cursor-gen] genValid :: Gen (DemoteResult Bool)
54.21 s
[cursor-gen] only generates valid '(DemoteResult Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (DemoteResult Bool -> [DemoteResult Bool])
54.21 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] Eq (CTree Bool)
54.21 s
[cursor-gen] (==) :: (CTree Bool) -> (CTree Bool) -> Bool
54.21 s
[cursor-gen] is reflexive for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (CTree Bool) -> (CTree Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (CTree Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (CTree Bool)
54.21 s
[cursor-gen] genValid :: Gen (CTree Bool)
54.21 s
[cursor-gen] only generates valid '(CTree Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (CTree Bool -> [CTree Bool])
54.21 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] Eq (CForest Bool)
54.21 s
[cursor-gen] (==) :: (CForest Bool) -> (CForest Bool) -> Bool
54.21 s
[cursor-gen] is reflexive for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is symmetric for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is transitive for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] (/=) :: (CForest Bool) -> (CForest Bool) -> Bool
54.21 s
[cursor-gen] is antireflexive for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (CForest Bool)"s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] GenValid (CForest Bool)
54.21 s
[cursor-gen] genValid :: Gen (CForest Bool)
54.21 s
[cursor-gen] only generates valid '(CForest Bool)'s [✔]
54.21 s
[cursor-gen] +++ OK, passed 100 tests.
54.21 s
[cursor-gen] shrinkValid :: (CForest Bool -> [CForest Bool])
54.22 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] Eq (TreeAbove Bool)
54.22 s
[cursor-gen] (==) :: (TreeAbove Bool) -> (TreeAbove Bool) -> Bool
54.22 s
[cursor-gen] is reflexive for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] is symmetric for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] is transitive for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] (/=) :: (TreeAbove Bool) -> (TreeAbove Bool) -> Bool
54.22 s
[cursor-gen] is antireflexive for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (TreeAbove Bool)"s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] GenValid (TreeAbove Bool)
54.22 s
[cursor-gen] genValid :: Gen (TreeAbove Bool)
54.22 s
[cursor-gen] only generates valid '(TreeAbove Bool)'s [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.22 s
[cursor-gen] shrinkValid :: (TreeAbove Bool -> [TreeAbove Bool])
54.22 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.22 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeAboveLeftsL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeAboveAboveL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeAboveNodeL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeAboveRightsL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] Eq (TreeCursor Bool Word)
54.23 s
[cursor-gen] (==) :: (TreeCursor Bool Word) -> (TreeCursor Bool Word) -> Bool
54.23 s
[cursor-gen] is reflexive for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] is symmetric for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] is transitive for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] is equivalent to (\a b -> not $ a /= b) for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] (/=) :: (TreeCursor Bool Word) -> (TreeCursor Bool Word) -> Bool
54.23 s
[cursor-gen] is antireflexive for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] is equivalent to (\a b -> not $ a == b) for "valid (TreeCursor Bool Word)"s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] GenValid (TreeCursor Bool Bool)
54.23 s
[cursor-gen] genValid :: Gen (TreeCursor Bool Bool)
54.23 s
[cursor-gen] only generates valid '(TreeCursor Bool Bool)'s [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] shrinkValid :: (TreeCursor Word Bool -> [TreeCursor Word Bool])
54.23 s
[cursor-gen] preserves validity for the first 10 elements [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] never shrinks to itself for valid values for the first 10 elements [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeCursorAboveL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeCursorCurrentL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeCursorBelowL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] treeCursorCurrentSubTreeL
54.23 s
[cursor-gen] satisfies the first lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the second lens law for valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] satisfies the third lens law for valid values and valid values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] gets valid values from valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen] produces valid values when it is used to set valid values values on valid values values [✔]
54.23 s
[cursor-gen] +++ OK, passed 100 tests.
54.23 s
[cursor-gen]
54.23 s
[cursor-gen] Finished in 3.9882 seconds
54.23 s
[cursor-gen] 881 examples, 0 failures, 173 pending
54.33 s
[cursor-gen] Test suite cursor-test: PASS
54.33 s
[cursor-gen] Test suite logged to: dist/test/cursor-gen-0.4.0.0-cursor-test.log
54.33 s
[cursor-gen] 1 of 1 test suites (1 of 1 test cases) passed.
55.31 s
[cursor-gen] Phase: haddockPhase
55.43 s
[cursor-gen] Preprocessing library for cursor-gen-0.4.0.0..
55.43 s
[cursor-gen] Running Haddock on library for cursor-gen-0.4.0.0..
55.49 s
[cursor-gen] Warning: --source-* options are ignored when --hyperlinked-source is enabled.
55.69 s
[cursor-gen] 0% ( 0 / 3) in 'Cursor.List.Gen'
55.69 s
[cursor-gen] Missing documentation for:
55.69 s
[cursor-gen] Module header
55.69 s
[cursor-gen] listCursorWithGen (src/Cursor/List/Gen.hs:24)
55.69 s
[cursor-gen] listCursorWithIndex0 (src/Cursor/List/Gen.hs:27)
55.71 s
[cursor-gen] 0% ( 0 / 5) in 'Cursor.List.NonEmpty.Gen'
55.71 s
[cursor-gen] Missing documentation for:
55.71 s
[cursor-gen] Module header
55.71 s
[cursor-gen] genNonEmptyCursorBy (src/Cursor/List/NonEmpty/Gen.hs:23)
55.71 s
[cursor-gen] nonEmptyElemOf (src/Cursor/List/NonEmpty/Gen.hs:37)
55.71 s
[cursor-gen] nonEmptyWithIndex0 (src/Cursor/List/NonEmpty/Gen.hs:40)
55.71 s
[cursor-gen] nonEmptyWith (src/Cursor/List/NonEmpty/Gen.hs:43)
55.72 s
[cursor-gen] 0% ( 0 / 3) in 'Cursor.Map.KeyValue.Gen'
55.72 s
[cursor-gen] Missing documentation for:
55.72 s
[cursor-gen] Module header
55.72 s
[cursor-gen] genKeyValueCursorBy (src/Cursor/Map/KeyValue/Gen.hs:22)
55.72 s
[cursor-gen] genKeyValueCursorByDependent (src/Cursor/Map/KeyValue/Gen.hs:26)
55.73 s
[cursor-gen] 0% ( 0 / 3) in 'Cursor.Map.Gen'
55.73 s
[cursor-gen] Missing documentation for:
55.73 s
[cursor-gen] Module header
55.73 s
[cursor-gen] genMapCursorBy (src/Cursor/Map/Gen.hs:20)
55.73 s
[cursor-gen] genMapCursorByDependent (src/Cursor/Map/Gen.hs:25)
55.73 s
[cursor-gen] 0% ( 0 / 4) in 'Cursor.Simple.List.NonEmpty.Gen'
55.73 s
[cursor-gen] Missing documentation for:
55.73 s
[cursor-gen] Module header
55.73 s
[cursor-gen] nonEmptyElemOf (src/Cursor/Simple/List/NonEmpty/Gen.hs:12)
55.73 s
[cursor-gen] nonEmptyWithIndex0 (src/Cursor/Simple/List/NonEmpty/Gen.hs:15)
55.73 s
[cursor-gen] nonEmptyWith (src/Cursor/Simple/List/NonEmpty/Gen.hs:18)
55.73 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Simple.Map.Gen'
55.73 s
[cursor-gen] Missing documentation for:
55.73 s
[cursor-gen] Module header
55.73 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Simple.Map.KeyValue.Gen'
55.73 s
[cursor-gen] Missing documentation for:
55.73 s
[cursor-gen] Module header
55.74 s
[cursor-gen] 0% ( 0 / 7) in 'Cursor.Text.Gen'
55.74 s
[cursor-gen] Missing documentation for:
55.74 s
[cursor-gen] Module header
55.74 s
[cursor-gen] genSafeChar (src/Cursor/Text/Gen.hs:26)
55.74 s
[cursor-gen] genTextCursorChar (src/Cursor/Text/Gen.hs:32)
55.74 s
[cursor-gen] textCursorSentenceGen (src/Cursor/Text/Gen.hs:41)
55.74 s
[cursor-gen] textCursorWithGen (src/Cursor/Text/Gen.hs:35)
55.74 s
[cursor-gen] textCursorWithIndex0 (src/Cursor/Text/Gen.hs:38)
55.74 s
[cursor-gen] shrinkSentence (src/Cursor/Text/Gen.hs:47)
55.75 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.TextField.Gen'
55.75 s
[cursor-gen] Missing documentation for:
55.75 s
[cursor-gen] Module header
55.76 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Tree.Gen'
55.76 s
[cursor-gen] Missing documentation for:
55.76 s
[cursor-gen] Module header
55.78 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Simple.Tree.Gen'
55.78 s
[cursor-gen] Missing documentation for:
55.78 s
[cursor-gen] Module header
55.78 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Forest.Gen'
55.78 s
[cursor-gen] Missing documentation for:
55.78 s
[cursor-gen] Module header
55.78 s
[cursor-gen] 0% ( 0 / 1) in 'Cursor.Simple.Forest.Gen'
55.78 s
[cursor-gen] Missing documentation for:
55.78 s
[cursor-gen] Module header
58.00 s
[cursor-gen] Documentation created: dist/doc/html/cursor-gen/,
58.00 s
[cursor-gen] dist/doc/html/cursor-gen/cursor-gen.txt
58.04 s
[cursor-gen] Preprocessing test suite 'cursor-test' for cursor-gen-0.4.0.0..
58.22 s
[cursor-gen] Phase: installPhase
58.22 s
[cursor-gen] Installing library in /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/lib/ghc-9.6.6/lib/x86_64-linux-ghc-9.6.6/cursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9
58.37 s
[cursor-gen] Phase: fixupPhase
58.39 s
[cursor-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0
58.39 s
[cursor-gen] shrinking /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/lib/ghc-9.6.6/lib/x86_64-linux-ghc-9.6.6/libHScursor-gen-0.4.0.0-6ALASydxdrrAFK2oOBGjG9-ghc9.6.6.so
58.41 s
[cursor-gen] checking for references to /build/ in /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0...
58.42 s
[cursor-gen] patching script interpreter paths in /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0
58.43 s
[cursor-gen] stripping (with command strip and flags -S -p) in /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/lib
58.48 s
[cursor-gen] shrinking RPATHs of ELF executables and libraries in /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc
58.49 s
[cursor-gen] checking for references to /build/ in /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc...
58.49 s
[cursor-gen] patching script interpreter paths in /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc
58.54 s
[post-build-hook] Uploading to cachix cache "cursor": /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0 /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc
58.93 s
[post-build-hook] Pushing 3 paths (84 are already present) using zstd to cache cursor ⏳
58.93 s
[post-build-hook]
59.34 s
[post-build-hook] Pushing /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0 (2.23 MiB)
59.35 s
[post-build-hook] Pushing /nix/store/sk59zgr2kcdnwsjk26c79n0dl6s72pvr-mpfr-4.2.1 (775.71 KiB)
59.37 s
[post-build-hook] Pushing /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc (489.75 KiB)
60.98 s
[post-build-hook]
60.98 s
[post-build-hook] All done.
61.00 s
[post-build-hook] Uploading to the NixCI staging cache: /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0 /nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc
61.26 s
[post-build-hook] copying 2 paths...
61.26 s
[post-build-hook] copying path '/nix/store/jqccvcnkb15bpgai8s0w8ra5sxxxh3ps-cursor-gen-0.4.0.0-doc' to 'https://cache.staging.nix-ci.com'...
61.52 s
[post-build-hook] copying path '/nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0' to 'https://cache.staging.nix-ci.com'...
62.65 s
[post-build-hook] copying 1 paths...
62.65 s
[post-build-hook] copying path '/nix/store/xzg3vqf72r813bsicamdp62ggw37d7zz-cursor-gen-0.4.0.0.drv' to 'https://cache.staging.nix-ci.com'...
62.89 s
Progress: 4 of 6 built, 21 of 21 downloaded from cache
62.93 s
Building cursor-release
62.96 s
[cursor-release] /nix/store/5pzifz9p13qnvjj2f81cqs3asmshjkll-cursor-gen-0.4.0.0/nix-support:
62.96 s
[cursor-release] propagated-build-inputs: Keeping existing link to /nix/store/5jbn6gvg30q103ljwykkwv16g191dc5r-cursor-0.3.2.0/nix-support/propagated-build-inputs
63.00 s
[post-build-hook] Uploading to cachix cache "cursor": /nix/store/7qip7v0y6yslj96zy6ki1792ng49wr6p-cursor-release
63.37 s
[post-build-hook] Pushing 1 paths (87 are already present) using zstd to cache cursor ⏳
63.51 s
[post-build-hook]
63.76 s
[post-build-hook] Pushing /nix/store/7qip7v0y6yslj96zy6ki1792ng49wr6p-cursor-release (49.54 KiB)
64.83 s
[post-build-hook]
64.83 s
[post-build-hook] All done.
64.85 s
[post-build-hook] Uploading to the NixCI staging cache: /nix/store/7qip7v0y6yslj96zy6ki1792ng49wr6p-cursor-release
65.50 s
[post-build-hook] copying 1 paths...
65.50 s
[post-build-hook] copying path '/nix/store/7qip7v0y6yslj96zy6ki1792ng49wr6p-cursor-release' to 'https://cache.staging.nix-ci.com'...
67.85 s
[post-build-hook] copying 1 paths...
67.85 s
[post-build-hook] copying path '/nix/store/0y2lvwl2sdis78j73l7m212dlilvjzm5-cursor-release.drv' to 'https://cache.staging.nix-ci.com'...
68.43 s
Progress: 5 of 6 built, 21 of 21 downloaded from cache