sql-words 0.1.2.0 → 0.1.3.0
raw patch · 3 files changed
+70/−3 lines, 3 filesdep +Cabaldep +QuickCheckdep +cabal-test-compat
Dependencies added: Cabal, QuickCheck, cabal-test-compat, sql-words
Files
- sql-words.cabal +15/−1
- src/Language/SQL/Keyword/Type.hs +2/−2
- test/MonoidLaw.hs +53/−0
sql-words.cabal view
@@ -1,5 +1,5 @@ name: sql-words-version: 0.1.2.0+version: 0.1.3.0 synopsis: Simple idea SQL keywords data constructor into OverloadedString description: This package contiains SQL keywords constructors defined as OverloadedString literals and helper functions to concate these.@@ -28,6 +28,20 @@ default-language: Haskell2010 +test-suite monoids+ build-depends: base <5+ , Cabal+ , cabal-test-compat+ , QuickCheck >=2+ , sql-words++ type: detailed-0.9+ test-module: MonoidLaw++ hs-source-dirs: test+ ghc-options: -Wall++ default-language: Haskell2010 source-repository head type: git
src/Language/SQL/Keyword/Type.hs view
@@ -9,14 +9,14 @@ -- -- SQL keyword representation using Haskell data constructors. module Language.SQL.Keyword.Type (- Keyword (..),+ Keyword (..), DString, word, wordShow, unwordsSQL ) where import Data.Monoid (mconcat)-import Language.SQL.Keyword.Internal.Type (Keyword (..), word, wordShow)+import Language.SQL.Keyword.Internal.Type (Keyword (..), word, wordShow, DString) -- | Concatinate keywords into 'String' like unwords
+ test/MonoidLaw.hs view
@@ -0,0 +1,53 @@+{-# OPTIONS -fno-warn-orphans #-}++module MonoidLaw (tests) where++import Language.SQL.Keyword (Keyword, DString)++import Data.Monoid (Monoid, mempty, (<>))+import Data.String (fromString)+import Distribution.TestSuite.Compat (TestList, testList, prop)+import Test.QuickCheck (Arbitrary (..))+++leftId :: (Eq a, Monoid a) => a -> Bool+leftId a = mempty <> a == a++rightId :: (Eq a, Monoid a) => a -> Bool+rightId a = a <> mempty == a++assoc :: (Eq a, Monoid a) => a -> a -> a -> Bool+assoc a b c = (a <> b) <> c == a <> (b <> c)++dsLeftId :: DString -> Bool+dsLeftId = leftId++dsRightId :: DString -> Bool+dsRightId = rightId++dsAssoc :: DString -> DString -> DString -> Bool+dsAssoc = assoc++instance Arbitrary DString where+ arbitrary = fmap read arbitrary++kwLeftId :: Keyword -> Bool+kwLeftId = leftId++kwRightId :: Keyword -> Bool+kwRightId = rightId++kwAssoc :: Keyword -> Keyword -> Keyword -> Bool+kwAssoc = assoc++instance Arbitrary Keyword where+ arbitrary = fmap fromString arbitrary++tests :: TestList+tests = testList [ prop "DString left Id" dsLeftId+ , prop "DString right Id" dsRightId+ , prop "DString associativity" dsAssoc+ , prop "Keyword left Id" kwLeftId+ , prop "Keyword right Id" kwRightId+ , prop "Keyword associativity" kwAssoc+ ]