File: QQSpec.hs

package info (click to toggle)
haskell-aeson-qq 0.8.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 72 kB
  • sloc: haskell: 252; makefile: 3
file content (50 lines) | stat: -rw-r--r-- 1,704 bytes parent folder | download | duplicates (5)
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"