@@ -22,6 +22,7 @@ import Data.Either.Compat
2222import Test.Mockery.Directory
2323
2424import qualified Data.Yaml as D
25+import qualified Data.Yaml.Pretty as Pretty
2526import Data.Yaml (object, array, (.=))
2627import Data.Maybe
2728import qualified Data.HashMap.Strict as M
@@ -65,6 +66,10 @@ spec = do
6566 it "encode/decode strings" caseEncodeDecodeStrings
6667 it "decode invalid file" caseDecodeInvalid
6768 it "processes datatypes" caseDataTypes
69+ describe "Data.Yaml.Pretty" $ do
70+ it "encode/decode" caseEncodeDecodeDataPretty
71+ it "encode/decode strings" caseEncodeDecodeStringsPretty
72+ it "processes datatypes" caseDataTypesPretty
6873 describe "Data.Yaml aliases" $ do
6974 it "simple scalar alias" caseSimpleScalarAlias
7075 it "simple sequence alias" caseSimpleSequenceAlias
@@ -299,6 +304,11 @@ caseEncodeDecodeData = do
299304 let out = D.decode $ D.encode sample
300305 out @?= Just sample
301306
307+caseEncodeDecodeDataPretty :: Assertion
308+caseEncodeDecodeDataPretty = do
309+ let out = D.decode $ Pretty.encodePretty Pretty.defConfig sample
310+ out @?= Just sample
311+
302312caseEncodeDecodeFileData :: Assertion
303313caseEncodeDecodeFileData = withFile "" $ \fp -> do
304314 D.encodeFile fp sample
@@ -310,6 +320,11 @@ caseEncodeDecodeStrings = do
310320 let out = D.decode $ D.encode sample
311321 out @?= Just sample
312322
323+caseEncodeDecodeStringsPretty :: Assertion
324+caseEncodeDecodeStringsPretty = do
325+ let out = D.decode $ Pretty.encodePretty Pretty.defConfig sample
326+ out @?= Just sample
327+
313328caseDecodeInvalid :: Assertion
314329caseDecodeInvalid = do
315330 let invalid = B8.pack "\tthis is 'not' valid :-)"
@@ -391,6 +406,18 @@ caseDataTypes =
391406 , ("null", D.Null)
392407 ]
393408
409+caseDataTypesPretty :: Assertion
410+caseDataTypesPretty =
411+ D.decode (Pretty.encodePretty Pretty.defConfig val) @?= Just val
412+ where
413+ val = object
414+ [ ("string", D.String "foo")
415+ , ("int", D.Number 5)
416+ , ("float", D.Number 4.3)
417+ , ("true", D.Bool True)
418+ , ("false", D.Bool False)
419+ , ("null", D.Null)
420+ ]
394421caseQuotedNumber, caseUnquotedNumber, caseAttribNumber, caseIntegerDecimals :: Assertion
395422caseQuotedNumber = D.decode "foo: \"1234\"" @?= Just (object [("foo", D.String "1234")])
396423caseUnquotedNumber = D.decode "foo: 1234" @?= Just (object [("foo", D.Number 1234)])