hw-json-1.1.0.0: test/HaskellWorks/Data/Json/CorpusSpec.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module HaskellWorks.Data.Json.CorpusSpec(spec) where
import Control.Monad.IO.Class
import HaskellWorks.Data.BalancedParens.Simple
import HaskellWorks.Data.Bits.FromBitTextByteString
import HaskellWorks.Data.Json.Backend.Standard.Cursor.Generic
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec
import qualified Data.ByteString as BS
import qualified HaskellWorks.Data.Json.Backend.Standard.Slow as SLOW
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}
spec :: Spec
spec = describe "HaskellWorks.Data.Json.Corpus" $ do
it "Corpus 5000B loads properly" $ requireTest $ do
inJsonBS <- liftIO $ BS.readFile "corpus/5000B.json"
inInterestBitsBS <- liftIO $ BS.readFile "corpus/5000B.json.ib.idx"
inInterestBalancedParensBS <- liftIO $ BS.readFile "corpus/5000B.json.bp.idx"
let inInterestBits = fromBitTextByteString inInterestBitsBS
let inInterestBalancedParens = fromBitTextByteString inInterestBalancedParensBS
let !cursor = SLOW.fromByteString inJsonBS
let text = cursorText cursor
let ib = interests cursor
let SimpleBalancedParens bp = balancedParens cursor
text === inJsonBS
ib === inInterestBits
bp === inInterestBalancedParens
it "issue-0001 loads properly" $ requireTest $ do
inJsonBS <- liftIO $ BS.readFile "corpus/issue-0001.json"
inInterestBitsBS <- liftIO $ BS.readFile "corpus/issue-0001.json.ib.idx"
inInterestBalancedParensBS <- liftIO $ BS.readFile "corpus/issue-0001.json.bp.idx"
let inInterestBits = fromBitTextByteString inInterestBitsBS
let inInterestBalancedParens = fromBitTextByteString inInterestBalancedParensBS
let !cursor = SLOW.fromByteString inJsonBS
let text = cursorText cursor
let ib = interests cursor
let SimpleBalancedParens bp = balancedParens cursor
text === inJsonBS
ib === inInterestBits
bp === inInterestBalancedParens