hegel-0.1.0: conformance/TestSampledFrom.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Conformance binary: generates sampled_from values and writes metrics.
module Main (main) where
import qualified Data.Aeson as Aeson
import Data.Aeson (Value (..))
import qualified Data.Aeson.Types as Aeson
import qualified Data.ByteString.Lazy.Char8 as LBS
import Data.Maybe (fromMaybe, listToMaybe)
import qualified Data.Map.Strict as Map
import Hegel
import System.Environment (getArgs)
parseParams :: IO (Map.Map String Value)
parseParams = do
args <- getArgs
pure $
fromMaybe Map.empty $
Aeson.decode . LBS.pack =<< listToMaybe args
getIntArray :: Map.Map String Value -> String -> [Int]
getIntArray m k = fromMaybe [] $ Map.lookup k m >>= Aeson.parseMaybe Aeson.parseJSON
main :: IO ()
main = do
params <- parseParams
let options = getIntArray params "options"
testCases <- getTestCases
runHegelTest (\settings -> settings { settingsTestCases = testCases }) $ \tc -> do
v <- draw tc (sampledFrom options)
writeMetrics [("value", show v)]