1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
{-# LANGUAGE OverloadedStrings #-}
module Data.JSON.QQSpec (main, spec) where
import Test.Hspec
import Data.JSON.QQ
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "parsedJson" $ do
it "parses JSON" $ do
let Right value = parsedJson "{foo: 23}"
value `shouldBe` JsonObject [(HashStringKey "foo", JsonNumber 23)]
it "parses decimal numbers" $ do
let Right value = parsedJson "{foo: 5.97}"
value `shouldBe` JsonObject [(HashStringKey "foo", JsonNumber 5.97)]
context "empty objects" $ do
it "parses empty objects (regression test)" $ do
let Right value = parsedJson "{}"
value `shouldBe` JsonObject []
it "parses empty objects that include whitespace (regression test)" $ do
let Right value = parsedJson "{ }"
value `shouldBe` JsonObject []
it "parses empty objects that include newlines (regression test)" $ do
let Right value = parsedJson "{\n}"
value `shouldBe` JsonObject []
context "empty arrays" $ do
it "parses empty arrays" $ do
let Right value = parsedJson "[ ]"
value `shouldBe` JsonArray []
it "parses empty arrays that include whitespace (regression test)" $ do
let Right value = parsedJson "[ ]"
value `shouldBe` JsonArray []
it "parses empty objects that include newlines (regression test)" $ do
let Right value = parsedJson "[\n]"
value `shouldBe` JsonArray []
it "fails on excess input" $ do
let Left err = parsedJson "{foo: 23} some excess input"
show err `shouldBe` "\"txt\" (line 1, column 11):\nunexpected 's'\nexpecting space or end of input"
|