@@ -11,11 +11,12 @@ import Data.Maybe (Maybe(Nothing, Just))
1111import Data.Path.Pathy (currentDir , parentDir' , file , dir , rootDir , (</>))
1212import Data.Tuple (Tuple (Tuple))
1313import Data.URI (Authority (Authority), HierarchicalPart (HierarchicalPart), Host (IPv4Address, NameAddress, IPv6Address), Query (Query), RelativePart (RelativePart), RelativeRef (RelativeRef), URI (URI), URIScheme (URIScheme), runParseURIRef )
14- import Data.URI.Query (printQuery )
14+ import Data.URI.Query (parseQuery , printQuery )
1515import Test.Unit (suite , test , TestSuite )
1616import Test.Unit.Assert (assert , equal )
1717import Test.Unit.Console (TESTOUTPUT )
1818import Test.Unit.Main (runTest )
19+ import Text.Parsing.StringParser (runParser )
1920
2021testRunParseURIRefParses :: forall a . String -> Either URI RelativeRef -> TestSuite a
2122testRunParseURIRefParses uri expected =
@@ -29,12 +30,18 @@ testRunParseURIRefFailes uri =
2930 (" failes to parse: " <> uri)
3031 (assert (" parse should fail for: " <> uri) <<< isLeft <<< runParseURIRef $ uri)
3132
32- testQuerySerialization :: forall a . Query -> String -> TestSuite a
33- testQuerySerialization query expected =
33+ testPrintQuerySerializes :: forall a . Query -> String -> TestSuite a
34+ testPrintQuerySerializes query expected =
3435 test
35- (" query " <> show query <> " serializes. " )
36+ (" serializes: " <> show query)
3637 (equal expected (printQuery query))
3738
39+ testParseQueryParses :: forall a . String -> Query -> TestSuite a
40+ testParseQueryParses uri query =
41+ test
42+ (" parses: \" " <> uri <> " \" " )
43+ (equal (Right query) (runParser parseQuery uri))
44+
3845main :: forall eff . Eff ( console :: CONSOLE , testOutput :: TESTOUTPUT , avar :: AVAR | eff ) Unit
3946main = runTest $ suite " Data.URI" do
4047 suite " runParseURIRef" do
@@ -282,8 +289,27 @@ main = runTest $ suite "Data.URI" do
282289 testRunParseURIRefFailes
" mailto:[email protected] " 283290 testRunParseURIRefFailes " /top_story.htm"
284291
285- testQuerySerialization
292+ suite " printQuery" do
293+ testPrintQuerySerializes
286294 (Query (Tuple " key1" (Just " value1" ) : Tuple " key2" (Just " value2" ) : Tuple " key1" (Just " value3" ) : Nil ))
287295 " ?key1=value1&key2=value2&key1=value3"
288- testQuerySerialization (Query Nil ) " "
296+ testPrintQuerySerializes (Query Nil ) " "
297+ testPrintQuerySerializes
298+ (Query (Tuple " key1" (Just " " ) : Tuple " key2" (Just " " ) : Nil ))
299+ " ?key1=&key2="
300+ testPrintQuerySerializes
301+ (Query (Tuple " key1" Nothing : Tuple " key2" Nothing : Nil ))
302+ " ?key1&key2"
303+
304+ suite " parseQuery" do
305+ testParseQueryParses
306+ " key1=value1&key2=value2&key1=value3"
307+ (Query (Tuple " key1" (Just " value1" ) : Tuple " key2" (Just " value2" ) : Tuple " key1" (Just " value3" ) : Nil ))
308+ testParseQueryParses
309+ " key1&key2"
310+ (Query (Tuple " key1" Nothing : Tuple " key2" Nothing : Nil ))
311+ testParseQueryParses
312+ " key1=&key2="
313+ (Query (Tuple " key1" (Just " " ) : Tuple " key2" (Just " " ) : Nil ))
314+
289315
0 commit comments