packages feed

genvalidity-text 0.1.0.0 → 0.1.0.1

raw patch · 3 files changed

+35/−19 lines, 3 filesdep +arraydep +validity-textPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: array, validity-text

API changes (from Hackage documentation)

- Data.GenValidity.Text: genUncheckedText :: Gen Text
+ Data.GenValidity.Text: instance Data.GenValidity.GenValidity Data.Text.Internal.Text
- Data.GenValidity.Text: textWithoutAnyOf :: [Char] -> Gen Text
+ Data.GenValidity.Text: textWithoutAnyOf :: String -> Gen Text

Files

genvalidity-text.cabal view
@@ -1,5 +1,5 @@ name:                genvalidity-text-version:             0.1.0.0+version:             0.1.0.1 synopsis:            GenValidity support for Text description:         Please see README.md homepage:            https://github.com/NorfairKing/validity#readme@@ -16,10 +16,12 @@   hs-source-dirs:      src   exposed-modules:     Data.GenValidity.Text   build-depends:       base       < 5-                     , validity       +                     , validity+                     , validity-text                      , genvalidity-                     , text       -                     , QuickCheck      +                     , text+                     , array+                     , QuickCheck   default-language:    Haskell2010  test-suite genvalidity-text-test
src/Data/GenValidity/Text.hs view
@@ -1,34 +1,48 @@ module Data.GenValidity.Text where  import           Data.GenValidity+import           Data.Validity.Text ()  import           Test.QuickCheck -import           Data.Text        (Text)-import qualified Data.Text        as T+import           Control.Monad +import qualified Data.Text.Array    as A+import           Data.Text.Internal (Text(..))+import qualified Data.Text          as T -genUncheckedText :: Gen Text-genUncheckedText = sized $ \n -> do-    size <- upTo n-    chars <- resize size $ genListOf arbitrary-    return $ T.pack chars +instance GenValidity Text where+    genUnchecked = Text <$> uncheckedArray <*> arbitrary <*> arbitrary+      where+        uncheckedArray = sized $ \n -> do+            size <- upTo n+            ins <- replicateM size arbitrary+            return $ A.run $ do+              arr <- A.new size+              forM_ (zip [0..] ins) $ uncurry $ A.unsafeWrite arr+              return arr++    genValid = sized $ \n -> do+        size <- upTo n+        chars <- resize size $ genListOf arbitrary+        return $ T.pack chars+ textStartingWith :: Char -> Gen Text textStartingWith c = sized $ \n ->     case n of         0 -> pure $ T.singleton c         1 -> pure $ T.singleton c         _ -> do-            rest <- resize (n - 1) genUncheckedText+            rest <- resize (n - 1) genValid             return $ T.cons c rest  textWith :: Gen Text -> Gen Text textWith gen = sized $ \n -> do     (b, m, a) <- genSplit3 n-    before <- resize b genUncheckedText+    before <- resize b genValid     middle <- resize m gen-    after  <- resize a genUncheckedText+    after  <- resize a genValid     return $ T.concat [before, middle, after]  textWithA :: Char -> Gen Text@@ -37,11 +51,11 @@ textWithoutAny :: Char -> Gen Text textWithoutAny c = textWithoutAnyOf [c] -textWithoutAnyOf :: [Char] -> Gen Text+textWithoutAnyOf :: String -> Gen Text textWithoutAnyOf cs = T.pack <$> genListOf (arbitrary `suchThat` (`notElem` cs))  textAllCaps :: Gen Text-textAllCaps = T.toUpper <$> genUncheckedText+textAllCaps = T.toUpper <$> genValid   
test/Data/GenValidity/TextSpec.hs view
@@ -3,16 +3,16 @@ import           Test.Hspec import           Test.QuickCheck -import           Data.GenValidity      ()+import           Data.GenValidity import           Data.GenValidity.Text  import qualified Data.Text             as T  spec :: Spec spec = do-    describe "genUncheckedText" $ do+    describe "genValid" $ do         it "is always empty when resized to 0" $ do-            forAll (resize 0 genUncheckedText) (`shouldSatisfy` T.null)+            forAll (resize 0 genValid) (`shouldSatisfy` T.null)      describe "textStartingWith" $ do         it "is never empty" $ do