Skip to content
Snippets Groups Projects
Commit 2e6d0dbe authored by Hannes Siebenhandl's avatar Hannes Siebenhandl
Browse files

Write tests for Cabal's JSON lib

parent cdf19840
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,7 @@ test-suite unit-tests ...@@ -40,6 +40,7 @@ test-suite unit-tests
UnitTests.Distribution.Types.GenericPackageDescription UnitTests.Distribution.Types.GenericPackageDescription
UnitTests.Distribution.Utils.CharSet UnitTests.Distribution.Utils.CharSet
UnitTests.Distribution.Utils.Generic UnitTests.Distribution.Utils.Generic
UnitTests.Distribution.Utils.Json
UnitTests.Distribution.Utils.NubList UnitTests.Distribution.Utils.NubList
UnitTests.Distribution.Utils.ShortText UnitTests.Distribution.Utils.ShortText
UnitTests.Distribution.Utils.Structured UnitTests.Distribution.Utils.Structured
......
...@@ -23,6 +23,7 @@ import qualified UnitTests.Distribution.Simple.Utils ...@@ -23,6 +23,7 @@ import qualified UnitTests.Distribution.Simple.Utils
import qualified UnitTests.Distribution.System import qualified UnitTests.Distribution.System
import qualified UnitTests.Distribution.Utils.CharSet import qualified UnitTests.Distribution.Utils.CharSet
import qualified UnitTests.Distribution.Utils.Generic import qualified UnitTests.Distribution.Utils.Generic
import qualified UnitTests.Distribution.Utils.Json
import qualified UnitTests.Distribution.Utils.NubList import qualified UnitTests.Distribution.Utils.NubList
import qualified UnitTests.Distribution.Utils.ShortText import qualified UnitTests.Distribution.Utils.ShortText
import qualified UnitTests.Distribution.Utils.Structured import qualified UnitTests.Distribution.Utils.Structured
...@@ -57,6 +58,8 @@ tests mtimeChangeCalibrated = ...@@ -57,6 +58,8 @@ tests mtimeChangeCalibrated =
UnitTests.Distribution.Simple.Utils.tests ghcPath UnitTests.Distribution.Simple.Utils.tests ghcPath
, testGroup "Distribution.Utils.Generic" , testGroup "Distribution.Utils.Generic"
UnitTests.Distribution.Utils.Generic.tests UnitTests.Distribution.Utils.Generic.tests
, testGroup "Distribution.Utils.Json" $
UnitTests.Distribution.Utils.Json.tests
, testGroup "Distribution.Utils.NubList" , testGroup "Distribution.Utils.NubList"
UnitTests.Distribution.Utils.NubList.tests UnitTests.Distribution.Utils.NubList.tests
, testGroup "Distribution.Utils.ShortText" , testGroup "Distribution.Utils.ShortText"
......
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
module UnitTests.Distribution.Utils.Json
( tests
) where
import Distribution.Utils.Json
import Test.Tasty
import Test.Tasty.HUnit
tests :: [TestTree]
tests =
[ testCase "escapes strings correctly" $
renderJson (JsonString "foo\"bar") @?= "\"foo\\\"bar\""
, testCase "renders empty list" $
renderJson (JsonArray []) @?= "[]"
, testCase "renders singleton list" $
renderJson (JsonArray [JsonString "foo\"bar"]) @?= "[\"foo\\\"bar\"]"
, testCase "renders list" $
renderJson (JsonArray [JsonString "foo\"bar", JsonString "baz"]) @?= "[\"foo\\\"bar\",\"baz\"]"
, testCase "renders empty object" $
renderJson (JsonObject []) @?= "{}"
, testCase "renders singleton object" $
renderJson (JsonObject [("key", JsonString "foo\"bar")]) @?= "{\"key\":\"foo\\\"bar\"}"
, testCase "renders object" $
renderJson (JsonObject
[ ("key", JsonString "foo\"bar")
, ("key2", JsonString "baz")])
@?= "{\"key\":\"foo\\\"bar\",\"key2\":\"baz\"}"
, testCase "renders number" $
renderJson (JsonNumber 0) @?= "0"
, testCase "renders negative number" $
renderJson (JsonNumber (-1)) @?= "-1"
, testCase "renders big number" $
renderJson (JsonNumber 5000000) @?= "5000000"
, testCase "renders bool" $ do
renderJson (JsonBool True) @?= "true"
renderJson (JsonBool False) @?= "false"
, testCase "renders null" $ do
renderJson JsonNull @?= "null"
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment