From b2c846b0daf9d6e26e1e2a07fecc848b4732baa0 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sun, 28 May 2023 10:18:49 +0200 Subject: Fixed flattening errors --- test/Test/Flattening.hs | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'test/Test/Flattening.hs') diff --git a/test/Test/Flattening.hs b/test/Test/Flattening.hs index bc64b88..76f5434 100644 --- a/test/Test/Flattening.hs +++ b/test/Test/Flattening.hs @@ -6,10 +6,36 @@ import Test.Tasty import Test.Tasty.ExpectedFailure (ignoreTestBecause) import Test.Tasty.HUnit -import Data.JLD (expand, flatten, toJldErrorCode) +import Data.JLD (JLDFlatteningParams (..), JLDVersion (..), flatten, toJldErrorCode) +import Data.JLD.Model.URI (parseUri) import Data.Maybe (fromJust) -import Test.Common (W3CTest (..), W3CTestList (..), W3CTestOption (..), fetchTest, parseExpansionOptions) -import Text.URI (mkURI, relativeTo) +import Test.Common (W3CTest (..), W3CTestList (..), W3CTestOption (..), documentLoader, fetchTest) +import Text.URI (URI, mkURI, relativeTo) + +parseFlatteningOptions :: URI -> URI -> Maybe W3CTestOption -> IO (URI, JLDFlatteningParams () IO -> JLDFlatteningParams Text IO) +parseFlatteningOptions baseUrl inputUrl maybeOptions = do + expandContext <- case maybeOptions >>= w3cTestOptionExpandContext of + Just rawUrl -> do + url <- fromJust <. (`relativeTo` baseUrl) <$> mkURI rawUrl + Just <$> fetchTest url + Nothing -> pure Nothing + + let params p = + p + { jldFlatteningParamsDocumentLoader = documentLoader + , jldFlatteningParamsProcessingMode = case maybeOptions >>= w3cTestOptionProcessingMode of + Just "json-ld-1.0" -> JLD1_0 + Just "json-ld-1.1" -> JLD1_1 + _ -> jldFlatteningParamsProcessingMode p + , jldFlatteningParamsExpandContext = expandContext <|> jldFlatteningParamsExpandContext p + , jldFlatteningParamsCompactArrays = case maybeOptions >>= w3cTestOptionCompactArrays of + Just b -> b + _ -> jldFlatteningParamsCompactArrays p + } + + pure (expandBaseUrl, params) + where + expandBaseUrl = fromMaybe inputUrl (parseUri =<< w3cTestOptionBase =<< maybeOptions) flatteningTests :: W3CTestList -> TestTree flatteningTests testList = testGroup "Flattening" <| uncurry flatteningTest <$> zip (w3cSequence testList) [1 ..] @@ -29,7 +55,7 @@ flatteningTest W3CTest{..} (show .> (<> ". " <> toString w3cTestName) -> testNam inputJld <- fetchTest inputUrl expectJld <- fetchTest expectUrl - (expandBaseUrl, params) <- parseExpansionOptions baseUrl inputUrl w3cTestOption + (expandBaseUrl, params) <- parseFlatteningOptions baseUrl inputUrl w3cTestOption (result, _) <- flatten inputJld expandBaseUrl params result @?= Right expectJld @@ -41,7 +67,7 @@ flatteningTest W3CTest{..} (show .> (<> ". " <> toString w3cTestName) -> testNam inputJld <- fetchTest inputUrl - (expandBaseUrl, params) <- parseExpansionOptions baseUrl inputUrl w3cTestOption + (expandBaseUrl, params) <- parseFlatteningOptions baseUrl inputUrl w3cTestOption (result, _) <- flatten inputJld expandBaseUrl params (result |> first toJldErrorCode) @?= Left expectErrorRaw -- cgit v1.2.3-54-g00ecf