packages feed

fakedata-1.0: test/BirdSpec.hs

{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}

module BirdSpec where

import qualified Data.Map as M
import Data.Text hiding (all, map)
import qualified Data.Text as T
import qualified Data.Vector as V
import Faker hiding (defaultFakerSettings)
import Faker.Creature.Bird
import Test.Hspec
import TestImport
import Faker.Internal

isText :: Text -> Bool
isText x = T.length x >= 1

fakerSettings :: FakerSettings
fakerSettings = defaultFakerSettings

verifyFakes :: [Fake Text] -> IO [Bool]
verifyFakes funs = do
  let fs :: [IO Text] = map (generateWithSettings fakerSettings) funs
      gs :: [IO Bool] = map (\f -> isText <$> f) fs
  sequence gs

spec :: Spec
spec = do
  describe "Bird" $ do
    it "sanity checking" $ do
      let functions :: [Fake Text] =
                       [
                        anatomy,
                        anatomyPastTense,
                        geo,
                        colors, emotionalAdjectives,
                        sillyAdjectives, adjectives, commonFamilyName,
                        plausibleCommonNames,
                        implausibleCommonNames,
                        orderCommonMapAccipitriformes,
                        orderCommonMapAnseriformes,
                        orderCommonMapApterygiformes,
                        orderCommonMapBucerotiformes,
                        orderCommonMapCaprimulgiformes,
                        orderCommonMapCariamiformes,
                        orderCommonMapCasuariiformes,
                        orderCommonMapCathartiformes,
                        orderCommonMapCharadriiformes,
                        orderCommonMapCiconiiformes,
                        orderCommonMapColiiformes,
                        orderCommonMapColumbiformes,
                        orderCommonMapCoraciiformes,
                        orderCommonMapCuculiformes,
                        orderCommonMapEurypygiformes,
                        orderCommonMapFalconiformes,
                        orderCommonMapGalbuliformes,
                        orderCommonMapGalliformes,
                        orderCommonMapGaviiformes,
                        orderCommonMapGruiformes,
                        orderCommonMapMesitornithiformes,
                        orderCommonMapMusophagiformes,
                        orderCommonMapOpisthocomiformes,
                        orderCommonMapOtidiformes,
                        orderCommonMapPasseriformes,
                        orderCommonMapPelecaniformes,
                        orderCommonMapPhaethontiformes,
                        orderCommonMapPhoenicopteriformes,
                        orderCommonMapPiciformes,
                        orderCommonMapPodicipediformes,
                        orderCommonMapProcellariiformes,
                        orderCommonMapPsittaciformes,
                        orderCommonMapPterocliformes,
                        orderCommonMapRheiformes,
                        orderCommonMapSphenisciformes,
                        orderCommonMapStrigiformes,
                        orderCommonMapStruthioniformes,
                        orderCommonMapSuliformes,
                        orderCommonMapTinamiformes,
                        orderCommonMapTrogoniformes
                       ]
      bools <- verifyFakes functions
      (and bools) `shouldBe` True