{"body":"#!/usr/bin/env stack\n-- stack --resolver lts-18.0 script\n\n{-# LANGUAGE DerivingStrategies         #-}\n{-# LANGUAGE GeneralizedNewtypeDeriving #-}\n{-# LANGUAGE NamedFieldPuns             #-}\n\nimport           Test.Hspec\nimport           Test.QuickCheck hiding (Result)\n\ndata Result = One | NotOne deriving (Eq, Show)\n\nmyFunc :: [Int] -> Result\nmyFunc xs = if 1 `elem` xs then One else NotOne\n\nmain :: IO ()\nmain = hspec spec\n\nspec :: Spec\nspec = describe \"myFunc\" $ do\n  it \"is 'One' when list contains 1\"\n    $ property\n    $ \\ContainsOne { unContainsOne } -> myFunc unContainsOne `shouldBe` One\n\nnewtype ContainsOne = ContainsOne\n  { unContainsOne :: [Int]\n  }\n  deriving newtype Show\n\ninstance Arbitrary ContainsOne where\n  arbitrary = do\n    list <- arbitrary\n    let xs = 1 : list\n    pure $ ContainsOne xs\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/MPAt1waK","modified":1626228241,"id":"MPAt1waK","size":811,"lines":34,"own_paste":false,"theme":"","date":1626228241}