packages feed

jsonlogic-0.1.0.0: test/Generator/Generic.hs

module Generator.Generic where

import Hedgehog
import Hedgehog.Gen
import Hedgehog.Range as Range
import JsonLogic.Json

-- | Generator for a JsonNull object
genGenericJsonNull :: Gen (Json, Json)
genGenericJsonNull = return (JsonNull, JsonNull)

-- | Generator for a random JsonBool object
genGenericJsonBool :: Gen (Json, Bool)
genGenericJsonBool = do
  b <- bool
  return (JsonBool b, b)

-- | Generator for a random JsonNumber object
genGenericJsonNumber :: Gen (Json, Double)
genGenericJsonNumber = do
  d <- double $ Range.constantFrom 1 10 100
  return (JsonNumber d, d)

-- | Generator for a random JsonString
genGenericJsonString :: Gen (Json, String)
genGenericJsonString = do
  s <- string (Range.constant 0 10) alphaNum
  return (JsonString s, s)

-- | Generator for non-empty JsonStrings
genGenericNonEmptyJsonString :: Gen (Json, String)
genGenericNonEmptyJsonString = do
  s <- string (Range.constant 1 10) alphaNum
  return (JsonString s, s)

-- | Generator for empty JsonArrays
genGenericEmptyJsonArray :: Gen (Json, [a])
genGenericEmptyJsonArray = return (JsonArray [], [])