mattermost-api-qc (empty) → 30802.1.0
raw patch · 5 files changed
+156/−0 lines, 5 filesdep +QuickCheckdep +basedep +containerssetup-changed
Dependencies added: QuickCheck, base, containers, mattermost-api, text, time
Files
- ChangeLog.md +15/−0
- LICENSE +13/−0
- Setup.hs +2/−0
- mattermost-api-qc.cabal +30/−0
- src/Network/Mattermost/QuickCheck.hs +96/−0
+ ChangeLog.md view
@@ -0,0 +1,15 @@+# Revision history for mattermost-api-qc++## 30802.1.0 -- 2017-05-13++* Switched from Arbitrary instances to Gen x functions.+* Removed dependency on quickcheck-instances+* Updated for mattermost-api version 30802.1.0++## 30802.0.0 -- 2017-05-11++* Updated for mattermost-api version 30802.0.0+ +## 30701.1.0 -- 2017-05-09++* First version.
+ LICENSE view
@@ -0,0 +1,13 @@+Copyright (c) 2017 Kevin Quick++Permission to use, copy, modify, and/or distribute this software for any purpose+with or without fee is hereby granted, provided that the above copyright notice+and this permission notice appear in all copies.++THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF+THIS SOFTWARE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ mattermost-api-qc.cabal view
@@ -0,0 +1,30 @@+name: mattermost-api-qc+version: 30802.1.0+synopsis: QuickCheck instances for the Mattermost client API library+homepage: https://github.com/matterhorn-chat/mattermost-api-qc+license: ISC+license-file: LICENSE+author: Kevin Quick+maintainer: kquick@galois.com+copyright: 2017 Kevin Quick+category: Testing+build-type: Simple+extra-source-files: ChangeLog.md+cabal-version: >=1.10+tested-with: GHC == 8.0.2++source-repository head+ type: git+ location: https://github.com/matterhorn-chat/mattermost-api-qc.git++library+ exposed-modules: Network.Mattermost.QuickCheck+ build-depends: base >=4.4 && <5+ , containers+ , mattermost-api == 30802.1.0+ , QuickCheck+ , text+ , time+ hs-source-dirs: src+ default-language: Haskell2010+ ghc-options: -Wall
+ src/Network/Mattermost/QuickCheck.hs view
@@ -0,0 +1,96 @@+module Network.Mattermost.QuickCheck where++import qualified Data.Sequence as Seq+import qualified Data.Text as T+import Data.Time.Calendar (Day(..))+import Data.Time.Clock (UTCTime(..), secondsToDiffTime)+import Network.Mattermost.Types+import Test.QuickCheck+++genText :: Gen T.Text+genText = sized $ \s ->+ oneof [ return T.empty+ , return $ T.singleton 'a'+ , return $ T.singleton '1'+ , return $ T.pack "b2"+ , return $ T.singleton ' '+ , return $ T.singleton '\n'+ , return $ T.singleton '\r'+ , return $ T.singleton '\t'+ , return $ T.pack " \n\r\t"+ , T.pack <$> vectorOf s arbitrary+ ]++genMaybe :: Gen a -> Gen (Maybe a)+genMaybe g = frequency [ (1, return Nothing)+ , (11, Just <$> g)+ ]++genSeq :: Gen a -> Gen (Seq.Seq a)+genSeq g = sized $ \s ->+ frequency [ (1, return Seq.empty)+ , (9, Seq.fromList <$> vectorOf s g)+ ]++genTime :: Gen UTCTime+genTime = UTCTime+ <$> (ModifiedJulianDay <$> (2000 +) <$> arbitrary)+ <*> (secondsToDiffTime <$> choose (0, 86400))++genPostId :: Gen PostId+genPostId = PI . Id <$> genText++genChannelId :: Gen ChannelId+genChannelId = CI . Id <$> genText++genFileId :: Gen FileId+genFileId = FI . Id <$> genText++genUserId :: Gen UserId+genUserId = UI . Id <$> genText++genType :: Gen Type+genType = oneof [ return Ordinary+ , return Direct+ , return Private+ , return Group+ , return SystemHeaderChange+ , Unknown <$> genText+ ]++genPostProps :: Gen PostProps+genPostProps = PostProps+ <$> genMaybe genText+ <*> genMaybe genText+ <*> attached+ <*> genMaybe genText+ <*> genMaybe genText+++attached :: Gen (Maybe (Seq.Seq PostPropAttachment))+attached = oneof [ return Nothing+ , Just <$> (genSeq genPostPropAttachment)+ ]++genPostPropAttachment :: Gen PostPropAttachment+genPostPropAttachment = PostPropAttachment <$> genText <*> genText++genPost :: Gen Post+genPost = Post+ <$> genMaybe genPostId+ <*> genMaybe genPostId+ <*> genPostProps+ <*> genText+ <*> genSeq genFileId+ <*> genPostId+ <*> genType+ <*> genText+ <*> genMaybe genTime+ <*> genText+ <*> genTime+ <*> genMaybe genUserId+ <*> genTime+ <*> genMaybe genPostId+ <*> genChannelId+ <*> arbitrary