packages feed

dictionaries-0.2.0: tests/Test.hs

{-# LANGUAGE OverloadedStrings #-}

import NLP.Dictionary (getEntries)
import NLP.Dictionary.StarDict (StarDict(..))
import Test.Hspec (Spec, hspec, describe, it, context, shouldBe)
import Utils (generateDictionary, generateStarDict, renderId)
import qualified NLP.Dictionary.StarDict.Regular as SDR


main :: IO ()
main = hspec spec

spec :: Spec
spec = do
  describe "RandomDictionary" randomDictionary

randomDictionary :: Spec
randomDictionary = do

  let generateDictionaries = do
        dictionary <- generateDictionary 10 (5, 15) (1, 10)
        starDictPath <- generateStarDict dictionary
        starDict <- mkDictionary (SDR.tag starDictPath) renderId
        return (dictionary, starDict)

  context "when getting entries" $ do
    it "matches every entry in the dictionary" $ do
      (dictionary, starDict) <- generateDictionaries
      mapM_ (\(name, entry) -> shouldBe [entry] =<< getEntries name starDict) dictionary

    it "doesn't match missing entry" $ do
      (_, starDict) <- generateDictionaries
      shouldBe [] =<< getEntries "# not found" starDict