content: {-# LANGUAGE CPP #-}
  
  module Rules where
  --
  -- Tests to ensure rules are firing.
  --
  
  import qualified Data.ByteString.Char8       as C
  import qualified Data.ByteString             as P
  import qualified Data.ByteString.Lazy        as L
  import qualified Data.ByteString.Lazy.Char8  as D
  import Data.List
  import Data.Char
  
  import QuickCheckUtils
  
  #if defined(HAVE_TEST_FRAMEWORK)
  import Test.Framework.Providers.QuickCheck2
  #else
  import TestFramework
  #endif
  
  
  prop_break_C x = C.break ((==) x) `eq1` break ((==) x)
  prop_break_P x = P.break ((==) x) `eq1` break ((==) x)
  prop_intercalate_P c = (\s1 s2 -> P.intercalate (P.singleton c) (s1 : s2 : []))
                          `eq2`
                         (\s1 s2 -> intercalate [c] (s1 : s2 : []))
  
  prop_break_isSpace_C = C.break isSpace `eq1` break isSpace
  prop_dropWhile_isSpace_C = C.dropWhile isSpace `eq1` dropWhile isSpace
  
  rules =
      [ testProperty "break (==)"        prop_break_C
      , testProperty "break (==)"        prop_break_P
      , testProperty "break isSpace"     prop_break_isSpace_C
      , testProperty "dropWhile isSpace" prop_dropWhile_isSpace_C
      , testProperty "intercalate"       prop_intercalate_P
      ]
  