packages feed

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 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+                  ]