packages feed

regex-do-1.4: test/TestRegex/TestPcre.hs

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

import Test.Hspec
import Text.Regex.Do.TypeDo as M
import Text.Regex.Do.Pcre.Match as M
import qualified Text.Regex.Do.Pcre.Result as R
import Text.Regex.Do.Convert



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

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


test testCase patternCtor bodyCtor matchFn =   hspec $ do
   describe testCase $ do
         it " val " $ do
            R.allMatches 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