generated from tpl/purs
Added Map instance. Added tests for StrMap and Map instances.
This commit is contained in:
parent
ae9461cbc6
commit
75083ae70f
@ -1,12 +1,13 @@
|
|||||||
module Data.YAML.Foreign.Encode where
|
module Data.YAML.Foreign.Encode where
|
||||||
|
|
||||||
import Data.Map as M
|
import Data.Map as M
|
||||||
|
import Data.Map (Map)
|
||||||
import Data.StrMap as StrMap
|
import Data.StrMap as StrMap
|
||||||
|
import Data.StrMap (StrMap)
|
||||||
import Data.Array (toUnfoldable)
|
import Data.Array (toUnfoldable)
|
||||||
import Data.Function.Uncurried (Fn4, runFn4)
|
import Data.Function.Uncurried (Fn4, runFn4)
|
||||||
import Data.List (List)
|
import Data.List (List)
|
||||||
import Data.Maybe (Maybe, maybe)
|
import Data.Maybe (Maybe, maybe)
|
||||||
import Data.StrMap (StrMap, insert)
|
|
||||||
import Data.Tuple (Tuple(..), fst, snd)
|
import Data.Tuple (Tuple(..), fst, snd)
|
||||||
import Prelude (class Eq, class Show, map, show, ($), (<>), (==), (<<<))
|
import Prelude (class Eq, class Show, map, show, ($), (<>), (==), (<<<))
|
||||||
import Unsafe.Coerce (unsafeCoerce)
|
import Unsafe.Coerce (unsafeCoerce)
|
||||||
@ -49,6 +50,9 @@ class ToYAML a where
|
|||||||
instance strMapToYAML :: (ToYAML a) => ToYAML (StrMap a) where
|
instance strMapToYAML :: (ToYAML a) => ToYAML (StrMap a) where
|
||||||
toYAML strMap = YObject $ StrMap.fold (\acc key value -> M.insert key (toYAML value) acc) M.empty strMap
|
toYAML strMap = YObject $ StrMap.fold (\acc key value -> M.insert key (toYAML value) acc) M.empty strMap
|
||||||
|
|
||||||
|
instance mapToYAML :: (ToYAML a) => ToYAML (Map String a) where
|
||||||
|
toYAML m = YObject $ M.mapWithKey (\key value -> toYAML value) m
|
||||||
|
|
||||||
instance booleanToYAML :: ToYAML Boolean where
|
instance booleanToYAML :: ToYAML Boolean where
|
||||||
toYAML = YBoolean
|
toYAML = YBoolean
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
module Test.Instances where
|
module Test.Instances where
|
||||||
|
|
||||||
import Prelude (class Eq, class Show, bind, pure, ($), (=<<), (<$>), map, (<=<))
|
import Prelude (class Eq, class Show, bind, pure, ($), (=<<))
|
||||||
import Data.Traversable (traverse)
|
import Data.Traversable (traverse)
|
||||||
import Data.Foreign (readArray, readNumber, readString, readInt, F, Foreign, ForeignError(..), fail, readString)
|
import Data.Foreign (readArray, readNumber, readString, readInt, F, Foreign, ForeignError(..), fail)
|
||||||
import Data.Foreign.Index (readProp)
|
import Data.Foreign.Index (readProp)
|
||||||
import Data.Generic (class Generic, gShow, gEq)
|
import Data.Generic (class Generic, gShow, gEq)
|
||||||
import Data.YAML.Foreign.Encode
|
import Data.YAML.Foreign.Encode
|
||||||
|
@ -14,6 +14,10 @@ import Test.Spec.Assertions (shouldEqual)
|
|||||||
import Test.Spec.Reporter.Console (consoleReporter)
|
import Test.Spec.Reporter.Console (consoleReporter)
|
||||||
import Test.Spec.Runner (RunnerEffects, run)
|
import Test.Spec.Runner (RunnerEffects, run)
|
||||||
import Control.Monad.Eff.Console (log, CONSOLE)
|
import Control.Monad.Eff.Console (log, CONSOLE)
|
||||||
|
import Data.Map as Map
|
||||||
|
import Data.Map (Map)
|
||||||
|
import Data.StrMap as StrMap
|
||||||
|
import Data.StrMap (StrMap)
|
||||||
|
|
||||||
yamlInput :: String
|
yamlInput :: String
|
||||||
yamlInput = """
|
yamlInput = """
|
||||||
@ -67,6 +71,40 @@ yamlOutput = """- Mobility: Fix
|
|||||||
Scale: 1
|
Scale: 1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
yamlMapOutput :: String
|
||||||
|
yamlMapOutput = """key:
|
||||||
|
- Mobility: Fix
|
||||||
|
Points:
|
||||||
|
- X: 10
|
||||||
|
'Y': 10
|
||||||
|
- X: 20
|
||||||
|
'Y': 10
|
||||||
|
- X: 5
|
||||||
|
'Y': 5
|
||||||
|
Coverage: 10
|
||||||
|
Name: House
|
||||||
|
Scale: 9.5
|
||||||
|
- Mobility: Fix
|
||||||
|
Points:
|
||||||
|
- X: 1
|
||||||
|
'Y': 1
|
||||||
|
- X: 2
|
||||||
|
'Y': 2
|
||||||
|
- X: 0
|
||||||
|
'Y': 0
|
||||||
|
Coverage: 10
|
||||||
|
Name: Tree
|
||||||
|
Scale: 1
|
||||||
|
"""
|
||||||
|
|
||||||
|
testStrMap :: StrMap (Array GeoObject)
|
||||||
|
testStrMap = StrMap.singleton "key" parsedData
|
||||||
|
|
||||||
|
testMap :: Map String (Array GeoObject)
|
||||||
|
testMap = Map.singleton "key" parsedData
|
||||||
|
|
||||||
|
|
||||||
parsedData :: Array GeoObject
|
parsedData :: Array GeoObject
|
||||||
parsedData =
|
parsedData =
|
||||||
[ GeoObject
|
[ GeoObject
|
||||||
@ -87,7 +125,7 @@ parsedData =
|
|||||||
|
|
||||||
main :: Eff (RunnerEffects ()) Unit
|
main :: Eff (RunnerEffects ()) Unit
|
||||||
main = run [consoleReporter] do
|
main = run [consoleReporter] do
|
||||||
void $ describe "purescript-yaml" do
|
describe "purescript-yaml" do
|
||||||
describe "decode" do
|
describe "decode" do
|
||||||
it "Decodes YAML" do
|
it "Decodes YAML" do
|
||||||
let decoded =
|
let decoded =
|
||||||
@ -95,7 +133,13 @@ main = run [consoleReporter] do
|
|||||||
readArray >>=
|
readArray >>=
|
||||||
traverse readGeoObject
|
traverse readGeoObject
|
||||||
(runExcept decoded) `shouldEqual` (Right parsedData)
|
(runExcept decoded) `shouldEqual` (Right parsedData)
|
||||||
void $ describe "encode" do
|
describe "encode" do
|
||||||
it "Encodes YAML" $ do
|
it "Encodes YAML" $ do
|
||||||
let encoded = printYAML parsedData
|
let encoded = printYAML parsedData
|
||||||
encoded `shouldEqual` yamlOutput
|
encoded `shouldEqual` yamlOutput
|
||||||
|
|
||||||
|
let encodedStrMap = printYAML testStrMap
|
||||||
|
encodedStrMap `shouldEqual` yamlMapOutput
|
||||||
|
|
||||||
|
let encodedMap = printYAML testMap
|
||||||
|
encodedMap `shouldEqual` yamlMapOutput
|
||||||
|
Loading…
Reference in New Issue
Block a user