network-arbitrary 0.2.0.0 → 0.3.0.0
raw patch · 3 files changed
+11/−3 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- network-arbitrary.cabal +1/−1
- src/Network/URI/Arbitrary.hs +6/−2
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for network-arbitrary +## 0.3.0.0 -- 2018-01-06++* Ensure URI shrink produces valid URIs+ ## 0.2.0.0 -- 2018-01-06 * Add top-level module for importing everything
network-arbitrary.cabal view
@@ -1,5 +1,5 @@ name: network-arbitrary-version: 0.2.0.0+version: 0.3.0.0 synopsis: Arbitrary Instances for Network Types description:
src/Network/URI/Arbitrary.hs view
@@ -15,7 +15,7 @@ import Control.Applicative ((<$>), (<*>)) import Control.Monad (replicateM) import Data.List (intercalate)-import Network.URI (URI (..), URIAuth (..))+import Network.URI (parseURIReference, URI (..), URIAuth (..), uriToString) import Test.QuickCheck (Arbitrary (arbitrary, shrink), choose, elements, Gen, listOf, listOf1, oneof, suchThat) instance Arbitrary URI where@@ -29,7 +29,11 @@ return URI {..} where emptyAuthority URIAuth{..} = all null [uriUserInfo, uriRegName, uriPort] - shrink URI{..} = [ URI uriScheme' uriAuthority' uriPath' uriQuery' uriFragment' | (uriScheme', uriAuthority', uriPath', uriQuery', uriFragment') <- shrink (uriScheme, uriAuthority, uriPath, uriQuery, uriFragment) ]+ shrink URI{..} = filter isURI [ URI uriScheme' uriAuthority' uriPath' uriQuery' uriFragment' | (uriScheme', uriAuthority', uriPath', uriQuery', uriFragment') <- shrink (uriScheme, uriAuthority, uriPath, uriQuery, uriFragment) ]+ where isURI u = case parseURIReference (uriToString id u "") of+ Just u' -> u' == u+ Nothing -> False+ instance Arbitrary URIAuth where arbitrary = URIAuth <$> userinfo