packages feed

json-incremental-decoder-0.1.0.3: parsing-test/Main.hs

module Main where

import Rebase.Prelude hiding (takeWhile)
import Test.Tasty
import Test.Tasty.Runners
import Test.Tasty.HUnit
import qualified Main.Decoders as Decoders


main =
  defaultMain $
  testGroup "All tests"
  [
    testCase "Primitive" $
    let
      input =
        "{\"year\" : 2001, \"month\": 1, \"day\": 2}"
      result =
        Decoders.valueToByteStringToEither Decoders.date input
      in assertEqual (show result) (Right (2001, 1, 2)) result
    ,
    testCase "In different order" $
    let
      input =
        "{\"month\": 1, \"day\": 2, \"year\" : 2001}"
      result =
        Decoders.valueToByteStringToEither Decoders.date input
      in assertEqual (show result) (Right (2001, 1, 2)) result
    ,
    testCase "With redundant fields" $
    let
      input =
        "{\"redundant1\": \"4\", \"month\": 1, \"redundant2\": \"3\", \"day\": 2, \"year\" : 2001}"
      result =
        Decoders.valueToByteStringToEither Decoders.date input
      in assertEqual (show result) (Right (2001, 1, 2)) result
    ,
    testCase "With trailing fields" $
    let
      input =
        "{\"month\": 1, \"day\": 2, \"year\" : 2001, \"trailing\": \"3\", \"trailing\": \"4\"}"
      result =
        Decoders.valueToByteStringToEither Decoders.date input
      in assertEqual (show result) (Right (2001, 1, 2)) result
    ,
    testCase "Array" $
    let
      input =
        "[2001, 1, 2]"
      result =
        Decoders.valueToByteStringToEither Decoders.date input
      in assertEqual (show result) (Right (2001, 1, 2)) result
    ,
    testCase "Nested object lookup" $
    let
      input =
        "{\"response\":{\"numFound\":1}}"
      result =
        Decoders.valueToByteStringToEither Decoders.solrSelectResponseNumFound input
      in assertEqual (show result) (Right 1) result
    ,
    testCase "solrSelectResponseNumFound" $
    let
      input =
        "{\"responseHeader\":{\"status\":0,\"QTime\":0,\"params\":{\"json\":\"{\\\"query\\\":\\\"text:Akuttmedisinsk*\\\",\\\"offset\\\":0,\\\"limit\\\":100}\",\"wt\":\"json\"}},\"response\":{\"numFound\":1,\"start\":0,\"docs\":[{\"id\":\"ark:9788205464377\",\"text\":[\"Akuttmedisinsk sykepleie: utenfor sykehus utenfor sykehus Boken gir en samlet fremstilling av akuttmedisinske tilstander og skader, tilpasset sykepleiere.\\n\\nL\195\166restoffet er forskningsbasert\\nog bygd opp med observasjoner og tiltak p\195\165 basalt og avansert niv\195\165. Boken er rikt illustrert og inneholder mange kasuistikker som\\nhjelper leseren \195\165 knytte sammen teori og praksis.\\nBoken dekker pensumlitteratur p\195\165 fagomr\195\165det akuttmedisin i bachelorutdanningen i\\nsykepleie. Innholdet har et tydelig prehospitalt fokus, men er ogs\195\165 egnet for sykepleiere som arbeider i sykehus. Boken kan leses\\nmed stort utbytte av helsepersonell som arbeider i ambulansetjenesten, akuttmottak, p\195\165 legevakter og AMK-sentraler.\\nAkuttmedisinsk\\nsykepleie - utenfor sykehus utkom f\195\184rste gang i 2001. I denne nye utgaven er stoffet oppdatert og omfattende revidert, og flere nye\\nkapitler er kommet til.\\nSend SMS med kodeord AKUTTMEDISINSK til 2030 og f\195\165 tilsendt bok portofritt hjem til mobiladressen Haugen, Jan Erik\"],\"_version_\":1530231185253335040}]}}"
      result =
        Decoders.valueToByteStringToEither Decoders.solrSelectResponseNumFound input
      in assertEqual (show result) (Right 1) result
    ,
    testCase "solrSelectResponseDocumentIDs" $
    let
      input =
        "{\"responseHeader\":{\"status\":0,\"QTime\":0,\"params\":{\"json\":\"{\\\"query\\\":\\\"text:Akuttmedisinsk*\\\",\\\"offset\\\":0,\\\"limit\\\":100}\",\"wt\":\"json\"}},\"response\":{\"numFound\":1,\"start\":0,\"docs\":[{\"id\":\"ark:9788205464377\",\"text\":[\"Akuttmedisinsk sykepleie: utenfor sykehus utenfor sykehus Boken gir en samlet fremstilling av akuttmedisinske tilstander og skader, tilpasset sykepleiere.\\n\\nL\195\166restoffet er forskningsbasert\\nog bygd opp med observasjoner og tiltak p\195\165 basalt og avansert niv\195\165. Boken er rikt illustrert og inneholder mange kasuistikker som\\nhjelper leseren \195\165 knytte sammen teori og praksis.\\nBoken dekker pensumlitteratur p\195\165 fagomr\195\165det akuttmedisin i bachelorutdanningen i\\nsykepleie. Innholdet har et tydelig prehospitalt fokus, men er ogs\195\165 egnet for sykepleiere som arbeider i sykehus. Boken kan leses\\nmed stort utbytte av helsepersonell som arbeider i ambulansetjenesten, akuttmottak, p\195\165 legevakter og AMK-sentraler.\\nAkuttmedisinsk\\nsykepleie - utenfor sykehus utkom f\195\184rste gang i 2001. I denne nye utgaven er stoffet oppdatert og omfattende revidert, og flere nye\\nkapitler er kommet til.\\nSend SMS med kodeord AKUTTMEDISINSK til 2030 og f\195\165 tilsendt bok portofritt hjem til mobiladressen Haugen, Jan Erik\"],\"_version_\":1530231185253335040}]}}"
      result =
        Decoders.valueToByteStringToEither Decoders.solrSelectResponseDocumentIDs input
      in assertEqual (show result) (Right ["ark:9788205464377"]) result
  ]