on master help sign in
Add tests
fce813cOleg Grenrus
test/Data/YamlSpec.hs+27
@@ -22,6 +22,7 @@ import Data.Either.Compat
22import Test.Mockery.Directory
22import Test.Mockery.Directory
23
23
24import qualified Data.Yaml as D
24import qualified Data.Yaml as D
25+import qualified Data.Yaml.Pretty as Pretty
25import Data.Yaml (object, array, (.=))
26import Data.Yaml (object, array, (.=))
26import Data.Maybe
27import Data.Maybe
27import qualified Data.HashMap.Strict as M
28import qualified Data.HashMap.Strict as M
@@ -65,6 +66,10 @@ spec = do
65 it "encode/decode strings" caseEncodeDecodeStrings
66 it "encode/decode strings" caseEncodeDecodeStrings
66 it "decode invalid file" caseDecodeInvalid
67 it "decode invalid file" caseDecodeInvalid
67 it "processes datatypes" caseDataTypes
68 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
68 describe "Data.Yaml aliases" $ do
73 describe "Data.Yaml aliases" $ do
69 it "simple scalar alias" caseSimpleScalarAlias
74 it "simple scalar alias" caseSimpleScalarAlias
70 it "simple sequence alias" caseSimpleSequenceAlias
75 it "simple sequence alias" caseSimpleSequenceAlias
@@ -299,6 +304,11 @@ caseEncodeDecodeData = do
299 let out = D.decode $ D.encode sample
304 let out = D.decode $ D.encode sample
300 out @?= Just sample
305 out @?= Just sample
301
306
307+caseEncodeDecodeDataPretty :: Assertion
308+caseEncodeDecodeDataPretty = do
309+ let out = D.decode $ Pretty.encodePretty Pretty.defConfig sample
310+ out @?= Just sample
311+
302caseEncodeDecodeFileData :: Assertion
312caseEncodeDecodeFileData :: Assertion
303caseEncodeDecodeFileData = withFile "" $ \fp -> do
313caseEncodeDecodeFileData = withFile "" $ \fp -> do
304 D.encodeFile fp sample
314 D.encodeFile fp sample
@@ -310,6 +320,11 @@ caseEncodeDecodeStrings = do
310 let out = D.decode $ D.encode sample
320 let out = D.decode $ D.encode sample
311 out @?= Just sample
321 out @?= Just sample
312
322
323+caseEncodeDecodeStringsPretty :: Assertion
324+caseEncodeDecodeStringsPretty = do
325+ let out = D.decode $ Pretty.encodePretty Pretty.defConfig sample
326+ out @?= Just sample
327+
313caseDecodeInvalid :: Assertion
328caseDecodeInvalid :: Assertion
314caseDecodeInvalid = do
329caseDecodeInvalid = do
315 let invalid = B8.pack "\tthis is 'not' valid :-)"
330 let invalid = B8.pack "\tthis is 'not' valid :-)"
@@ -391,6 +406,18 @@ caseDataTypes =
391 , ("null", D.Null)
406 , ("null", D.Null)
392 ]
407 ]
393
408
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+ ]
394caseQuotedNumber, caseUnquotedNumber, caseAttribNumber, caseIntegerDecimals :: Assertion
421caseQuotedNumber, caseUnquotedNumber, caseAttribNumber, caseIntegerDecimals :: Assertion
395caseQuotedNumber = D.decode "foo: \"1234\"" @?= Just (object [("foo", D.String "1234")])
422caseQuotedNumber = D.decode "foo: \"1234\"" @?= Just (object [("foo", D.String "1234")])
396caseUnquotedNumber = D.decode "foo: 1234" @?= Just (object [("foo", D.Number 1234)])
423caseUnquotedNumber = D.decode "foo: 1234" @?= Just (object [("foo", D.Number 1234)])