packages feed

regex-do-1.0: test/TestRegex/Pcre.hs

{-# LANGUAGE FlexibleContexts, NoOverloadedStrings #-}
module TestRegex.Pcre where

import Test.Hspec
import Regexdo.TypeDo
import qualified Regexdo.Pcre.Match as M
import qualified Regexdo.Pcre.Result as R
import Regexdo.Convert


main::IO()
main = do
   test " ?String " Needle id M.match
   test " [String] " Needle id M.matchAll
   test " ?Bs " (Needle . b) (b <$>) M.match
   test " [Bs] " (Needle . b) (b <$>) M.matchAll
   hspec $ do
    describe " matchTest " $ do
     it " matchTest " $ do
        M.matchTest (Needle "^ша") (Haystack "шапка") `shouldBe` True
        M.matchTest (Needle "^cd") (Haystack "abcde") `shouldBe` False
        M.matchTest (Needle "^ab") (Haystack "abc") `shouldBe` True

n = "d1"
h = Haystack "abcd1efg d1hij"
b = toByteString


test testCase patternCtor bodyCtor matchFn =   hspec $ do
   describe testCase $ do
         it " val " $ do
            R.value h res `shouldSatisfy` check
         it " tup " $
            R.poslen res  `shouldSatisfy` check
         it " pl " $
            R.poslen res  `shouldSatisfy` check
   where   res = matchFn pat $ bodyCtor h
           pat = patternCtor n



class Functor f =>  Pred f x where
   check::f x -> Bool

instance Pred Maybe [String] where
   check Nothing = False
   check (Just _) = True

instance Pred [] [String] where
   check [] = False
   check (h:t) = True

instance Pred Maybe [PosLen] where
   check Nothing = False
   check (Just _) = True

instance Pred [] [PosLen] where
   check [] = False
   check (h:t) = True