yaya-test 0.3.1.0 → 0.3.1.3
raw patch · 6 files changed
+286/−75 lines, 6 filesdep ~basedep ~yaya
Dependency ranges changed: base, yaya
Files
- test/Test/Fold.hs +25/−12
- test/Test/Fold/Common.hs +29/−9
- test/Test/Fold/Native.hs +42/−0
- test/Test/Retrofit.hs +12/−8
- test/test.hs +7/−16
- yaya-test.cabal +171/−30
test/Test/Fold.hs view
@@ -1,15 +1,28 @@ {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE Unsafe #-}+{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} -module Test.Fold where+module Test.Fold (tests) where -import Data.Proxy-import Hedgehog-import qualified Hedgehog.Gen as Gen+import safe "base" Control.Category (Category (id))+import safe "base" Control.Monad ((=<<))+import safe "base" Data.Bool (Bool)+import safe "base" Data.Function (($))+import safe "base" Data.Proxy (Proxy (Proxy))+import safe "base" System.IO (IO)+import safe "hedgehog" Hedgehog (Property, checkParallel, discover, forAll, property)+import safe qualified "hedgehog" Hedgehog.Gen as Gen+import safe "yaya" Yaya.Fold (Mu)+import safe "yaya" Yaya.Fold.Common (size)+import safe "yaya-hedgehog" Yaya.Hedgehog.Expr (Expr, genExpr, genMuExpr)+import safe "yaya-hedgehog" Yaya.Hedgehog.Fold+ ( law_cataCancel,+ law_cataCompose,+ law_cataRefl,+ ) -import Yaya.Fold-import Yaya.Fold.Common-import Yaya.Hedgehog.Expr-import Yaya.Hedgehog.Fold+-- TODO: For some reason HLint is complaining that TemplateHaskell is unused.+{-# HLINT ignore "Unused LANGUAGE pragma" #-} prop_muCataCancel :: Property prop_muCataCancel =@@ -21,9 +34,9 @@ prop_muCataCompose :: Property prop_muCataCompose =- property- $ law_cataCompose (Proxy :: Proxy (Mu Expr)) size id- =<< forAll (Gen.sized genMuExpr)+ property $+ law_cataCompose (Proxy :: Proxy (Mu Expr)) size id+ =<< forAll (Gen.sized genMuExpr) tests :: IO Bool-tests = checkParallel $$(discover)+tests = checkParallel $$discover
test/Test/Fold/Common.hs view
@@ -1,19 +1,39 @@ {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE Unsafe #-}+{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} -module Test.Fold.Common where+module Test.Fold.Common (tests) where -import Hedgehog-import qualified Hedgehog.Gen as Gen+import safe "base" Control.Category (Category ((.)))+import safe "base" Control.Monad ((=<<))+import safe "base" Data.Bool (Bool)+import safe "base" Data.Functor (Functor (fmap))+import safe "base" Data.Ord (Ord ((<)))+import safe "base" System.IO (IO)+import safe "hedgehog" Hedgehog+ ( Property,+ assert,+ checkParallel,+ discover,+ forAll,+ property,+ )+import safe qualified "hedgehog" Hedgehog.Gen as Gen+import safe "yaya" Yaya.Fold (Recursive (cata), zipAlgebras)+import safe "yaya" Yaya.Fold.Common (height, size)+import safe "yaya" Yaya.Pattern (uncurry)+import safe "yaya-hedgehog" Yaya.Hedgehog.Expr (genMuExpr)+import safe "base" Prelude (Integral (toInteger)) -import Yaya.Fold-import Yaya.Fold.Common-import Yaya.Hedgehog.Expr+-- TODO: For some reason HLint is complaining that TemplateHaskell is unused.+{-# HLINT ignore "Unused LANGUAGE pragma" #-} prop_heightLtSize :: Property prop_heightLtSize = property- (assert . uncurry (<) . fmap toInteger . cata (zipAlgebras height size)- =<< forAll (Gen.sized genMuExpr))+ ( assert . uncurry (<) . fmap toInteger . cata (zipAlgebras height size)+ =<< forAll (Gen.sized genMuExpr)+ ) tests :: IO Bool-tests = checkParallel $$(discover)+tests = checkParallel $$discover
+ test/Test/Fold/Native.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE Unsafe #-}+{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}++module Test.Fold.Native (tests) where++import safe "base" Control.Category (Category (id))+import safe "base" Control.Monad ((=<<))+import safe "base" Data.Bool (Bool)+import safe "base" Data.Function (($))+import safe "base" Data.Proxy (Proxy (Proxy))+import safe "base" System.IO (IO)+import safe "hedgehog" Hedgehog (Property, checkParallel, discover, forAll, property)+import safe qualified "hedgehog" Hedgehog.Gen as Gen+import safe "yaya" Yaya.Fold.Common (size)+import safe "yaya" Yaya.Fold.Native (Fix)+import safe "yaya-hedgehog" Yaya.Hedgehog.Expr (Expr, genExpr, genFixExpr)+import safe "yaya-hedgehog" Yaya.Hedgehog.Fold+ ( law_cataCancel,+ law_cataCompose,+ law_cataRefl,+ )++-- TODO: For some reason HLint is complaining that TemplateHaskell is unused.+{-# HLINT ignore "Unused LANGUAGE pragma" #-}++prop_fixCataCancel :: Property+prop_fixCataCancel =+ property $ law_cataCancel size =<< forAll (genExpr (Gen.sized genFixExpr))++prop_fixCataRefl :: Property+prop_fixCataRefl =+ property $ law_cataRefl =<< forAll (Gen.sized genFixExpr)++prop_fixCataCompose :: Property+prop_fixCataCompose =+ property $+ law_cataCompose (Proxy :: Proxy (Fix Expr)) size id+ =<< forAll (Gen.sized genFixExpr)++tests :: IO Bool+tests = checkParallel $$discover
test/Test/Retrofit.hs view
@@ -1,19 +1,23 @@-{-# LANGUAGE DeriveTraversable- , TemplateHaskell #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE Unsafe #-} -- | The point of this module is that it should compile _without_ importing any -- other Yaya modules.-module Test.Retrofit where--import Hedgehog+module Test.Retrofit (tests) where -import Yaya.Retrofit+import safe "base" Data.Bool (Bool)+import safe "base" Data.Eq (Eq)+import safe "base" Data.Int (Int)+import safe "base" System.IO (IO)+import safe "base" Text.Show (Show)+import safe "hedgehog" Hedgehog (checkParallel, discover)+import safe "yaya" Yaya.Retrofit (defaultRules, extractPatternFunctor) data DExpr = Lit Int | Add DExpr DExpr | Mult DExpr DExpr- deriving (Eq, Show)+ deriving stock (Eq, Show) extractPatternFunctor defaultRules ''DExpr @@ -28,4 +32,4 @@ -- showsPrec = recursiveShowsPrec tests :: IO Bool-tests = checkParallel $$(discover)+tests = checkParallel $$discover
test/test.hs view
@@ -1,19 +1,10 @@-import Control.Monad-import System.Exit (exitFailure)-import System.IO (BufferMode(..), hSetBuffering, stdout, stderr)+{-# LANGUAGE Unsafe #-} -import qualified Test.Fold as Fold-import qualified Test.Fold.Common as Fold.Common-import qualified Test.Retrofit as Retrofit+import safe "base" System.IO (IO)+import safe "hedgehog" Hedgehog.Main (defaultMain)+import qualified "this" Test.Fold as Fold+import qualified "this" Test.Fold.Common as Fold.Common+import qualified "this" Test.Retrofit as Retrofit main :: IO ()-main = do- hSetBuffering stdout LineBuffering- hSetBuffering stderr LineBuffering-- results <- sequence [ Fold.tests- , Fold.Common.tests- , Retrofit.tests- ]-- unless (and results) exitFailure+main = defaultMain [Fold.tests, Fold.Common.tests, Retrofit.tests]
yaya-test.cabal view
@@ -1,34 +1,175 @@-name: yaya-test-version: 0.3.1.0-synopsis: Test suites for `yaya`.-description: This package should not be depended on by anything.-homepage: https://github.com/sellout/yaya#readme-author: Greg Pfeil-maintainer: greg@technomadic.org-copyright: 2017 Greg Pfeil-license: AGPL-3-license-file: LICENSE-category: Recursion-build-type: Simple-cabal-version: >=1.10+cabal-version: 3.0 -test-suite yaya-test- type: exitcode-stdio-1.0- hs-source-dirs: test- main-is: test.hs- other-modules: Test.Fold- , Test.Fold.Common- , Test.Retrofit- build-depends: base >= 4.7 && < 5- , deriving-compat- , hedgehog- , yaya >= 0.3.1- , yaya-hedgehog >= 0.2.0- default-extensions: LambdaCase- , MultiParamTypeClasses- ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall- default-language: Haskell2010+name: yaya-test+version: 0.3.1.3+synopsis: Test suites for `yaya`.+description: This package should not be depended on by anything.+author: Greg Pfeil <greg@technomadic.org>+maintainer: Greg Pfeil <greg@technomadic.org>+copyright: 2017 Greg Pfeil+homepage: https://github.com/sellout/yaya#readme+bug-reports: https://github.com/sellout/yaya/issues+category: Recursion+build-type: Simple+license: AGPL-3.0-or-later+license-files:+ LICENSE+tested-with:+ GHC == {+-- GHCup Nixpkgs+ 8.6.1,+ 8.8.1, 8.8.4,+ 8.10.1,+ 9.0.1,+ 9.2.1,+ 9.4.1, 9.4.8,+ 9.6.1,+ 9.8.1+ } source-repository head- type: git+ type: git location: https://github.com/sellout/yaya++-- This mimics the GHC2021 extension+-- (https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html?highlight=doandifthenelse#extension-GHC2021),+-- but supporting compilers back to GHC 7.10. If the oldest supported compiler+-- is GHC 9.2, then this stanza can be removed and `import: GHC2021` can be+-- replaced by `default-language: GHC2021`.+common GHC2021+ default-language: Haskell2010+ default-extensions:+ BangPatterns+ BinaryLiterals+ ConstraintKinds+ DeriveDataTypeable+ DeriveGeneric+ -- DeriveLift -- uncomment if the oldest supported version is GHC 8.10.1++ DeriveTraversable+ DerivingStrategies+ DoAndIfThenElse+ EmptyCase+ ExistentialQuantification+ FlexibleContexts+ FlexibleInstances+ GADTSyntax+ GeneralizedNewtypeDeriving+ HexFloatLiterals+ -- ImportQualifiedPost -- uncomment if the oldest supported version is GHC 8.10.1++ InstanceSigs+ LambdaCase+ MagicHash+ MonadComprehensions+ MonomorphismRestriction+ MultiParamTypeClasses+ NamedFieldPuns+ NamedWildCards+ NumericUnderscores+ PolyKinds+ PostfixOperators+ RankNTypes+ ScopedTypeVariables+ StandaloneDeriving+ -- StandaloneKindSignatures -- uncomment if the oldest supported version is GHC 8.10.1++ TupleSections+ TypeApplications+ TypeOperators+ UnicodeSyntax+ NoExplicitNamespaces++common defaults+ import: GHC2021+ build-depends:+ base ^>= {4.12.0, 4.13.0, 4.14.0, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0},+ ghc-options:+ -Weverything+ -- Type inference good.+ -Wno-missing-local-signatures+ -- Warns even when `Unsafe` is explicit, not inferred. See+ -- https://gitlab.haskell.org/ghc/ghc/-/issues/16689+ -Wno-unsafe+ -- TODO: prune these warnings+ -Wno-all-missed-specialisations+ -fpackage-trust+ -trust base+ if impl(ghc < 8.8.1)+ ghc-options:+ -- This used to warn even when `Safe` was explicit.+ -Wno-safe+ if impl(ghc >= 8.10.1)+ ghc-options:+ -- If we didn’t allow inferred-safe imports, nothing would be `Safe`.+ -Wno-inferred-safe-imports+ -- We support GHC versions without qualified-post.+ -Wno-prepositive-qualified-module+ -- `-trust` triggers this warning when applied to transitive dependencies.+ -Wno-unused-packages+ if impl(ghc >= 9.2.1)+ ghc-options:+ -- We support GHC versions without kind signatures.+ -Wno-missing-kind-signatures+ if impl(ghc >= 9.8.1)+ ghc-options:+ -- We support GHC versions without kind signatures.+ -Wno-missing-poly-kind-signatures+ -- Inference good.+ -Wno-missing-role-annotations+ default-extensions:+ DefaultSignatures+ ExplicitNamespaces+ FunctionalDependencies+ LiberalTypeSynonyms+ -- replace with `LexicalNegation` if the oldest supported version is GHC 9.0.1++ NegativeLiterals+ PackageImports+ ParallelListComp+ -- QualifiedDo - uncomment if the oldest supported version is GHC 9.0.1++ RecursiveDo+ -- RequiredTypeArguments - uncomment if the oldest supported version is GHC 9.10.1++ RoleAnnotations+ StrictData+ TemplateHaskellQuotes+ TransformListComp+ NoGeneralizedNewtypeDeriving+ NoImplicitPrelude+ NoMonomorphismRestriction+ NoPatternGuards+ NoTypeApplications++test-suite yaya-test+ import: defaults+ type: exitcode-stdio-1.0+ hs-source-dirs:+ test+ main-is: test.hs+ other-modules:+ Test.Fold+ Test.Fold.Common+ Test.Fold.Native+ Test.Retrofit+ build-depends:+ deriving-compat,+ hedgehog,+ yaya >= 0.5.0,+ yaya-hedgehog >= 0.2.0,+ ghc-options:+ -rtsopts+ -threaded+ -trust adjunctions+ -trust array+ -trust base-orphans+ -trust binary+ -trust bytestring+ -trust containers+ -trust distributive+ -trust exceptions+ -trust ghc-prim+ -trust profunctors+ -trust semigroupoids+ -trust stm+ -trust text+ -trust transformers-compat+ -with-rtsopts=-N+ if impl(ghc < 9.6)+ ghc-options:+ -trust foldable1-classes-compat