From 5c76183c7df35efb3f664b204dd9c9bf83908cd0 Mon Sep 17 00:00:00 2001
From: Philipp Balzarek
Date: Tue, 15 Dec 2015 15:27:24 +0100
Subject: [PATCH] fix doctests
---
source/Network/Xmpp/Types.hs | 11 ++++++-----
tests/Doctest.hs | 1 +
tests/Tests/Arbitrary/Xmpp.hs | 27 +++++++++++++++------------
3 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/source/Network/Xmpp/Types.hs b/source/Network/Xmpp/Types.hs
index 5b27fca..1ccdc2c 100644
--- a/source/Network/Xmpp/Types.hs
+++ b/source/Network/Xmpp/Types.hs
@@ -1029,6 +1029,11 @@ parseJid s = case jidFromText $ Text.pack s of
-- >>> resourcepart <$> jidFromText "foo@bar/quux"
-- Just (Just "quux")
--
+-- @ and / can occur in the domain part
+--
+-- >>> jidFromText "foo/bar@quux/foo"
+-- Just parseJid "foo/bar@quux/foo"
+--
-- * Counterexamples
--
-- A JID must only have one \'\@\':
@@ -1036,11 +1041,6 @@ parseJid s = case jidFromText $ Text.pack s of
-- >>> jidFromText "foo@bar@quux"
-- Nothing
--
--- \'\@\' must come before \'/\':
---
--- >>> jidFromText "foo/bar@quux"
--- Nothing
---
-- The domain part can\'t be empty:
--
-- >>> jidFromText "foo@/quux"
@@ -1057,6 +1057,7 @@ parseJid s = case jidFromText $ Text.pack s of
--
-- >>> jidToTexts <$> jidFromText "bar/"
-- Nothing
+--
jidFromText :: Text -> Maybe Jid
jidFromText t = do
(l, d, r) <- eitherToMaybe $ AP.parseOnly jidParts t
diff --git a/tests/Doctest.hs b/tests/Doctest.hs
index 39ea019..f1d33b9 100644
--- a/tests/Doctest.hs
+++ b/tests/Doctest.hs
@@ -15,6 +15,7 @@ main :: IO ()
main = doctest $
"-isource"
: "-itests"
+ : "-w"
: "-idist/build/autogen"
: "-hide-all-packages"
: "-XQuasiQuotes"
diff --git a/tests/Tests/Arbitrary/Xmpp.hs b/tests/Tests/Arbitrary/Xmpp.hs
index 158e334..6072db3 100644
--- a/tests/Tests/Arbitrary/Xmpp.hs
+++ b/tests/Tests/Arbitrary/Xmpp.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE OverloadedStrings #-}
module Tests.Arbitrary.Xmpp where
import Control.Applicative ((<$>), (<*>))
@@ -30,29 +31,31 @@ instance Arbitrary Jid where
Just jid <- tryJid `suchThat` isJust
return jid
where
- tryJid = jidFromTexts <$> maybeGen (genString nodeprepProfile)
- <*> genString (SP.namePrepProfile False)
- <*> maybeGen (genString resourceprepProfile)
+ tryJid = jidFromTexts <$> maybeGen (genString nodeprepProfile False)
+ <*> genString (SP.namePrepProfile False) False
+ <*> maybeGen (genString resourceprepProfile True)
- genString profile = Text.pack . take 1024 <$> listOf1 genChar
+ genString profile node = Text.pack . take 1024 <$> listOf1 genChar
where
genChar = arbitrary `suchThat` (not . isProhibited)
prohibited = Ranges.toSet $ concat (SP.prohibited profile)
isProhibited x = Ranges.member x prohibited
- || x `elem` "@/"
+ || if node
+ then False
+ else x `elem` ['@','/']
shrink (Jid lp dp rp) = [ Jid lp' dp rp | lp' <- shrinkMaybe shrink lp]
++ [ Jid lp dp' rp | dp' <- shrink dp]
++ [ Jid lp dp rp' | rp' <- shrinkMaybe shrink rp]
-string :: SP.StringPrepProfile -> Gen [Char]
-string profile = take 1024 <$> listOf1 genChar
- where
- genChar = arbitrary `suchThat` (not . isProhibited)
- prohibited = Ranges.toSet $ concat (SP.prohibited profile)
- isProhibited x = Ranges.member x prohibited
- || x `elem` "@/"
+-- string :: SP.StringPrepProfile -> Gen [Char]
+-- string profile = take 1024 <$> listOf1 genChar
+-- where
+-- genChar = arbitrary `suchThat` (not . isProhibited)
+-- prohibited = Ranges.toSet $ concat (SP.prohibited profile)
+-- isProhibited x = Ranges.member x prohibited
+-- || x `elem` "@/"
instance Arbitrary LangTag where
arbitrary = LangTag <$> genTag <*> listOf genTag