haskell-postal-0.2.1.0: test/NLP/Postal/PostalSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module NLP.Postal.PostalSpec (spec) where
import Test.Hspec
import NLP.Postal
import Control.Monad (forM_)
import Control.Monad.IO.Class (liftIO)
import Data.List (lookup)
import qualified Data.Text as T
spec :: Spec
spec = do
describe "setup" $ do
it "general setup runs successfully" $ do
r <- liftIO setup
r `shouldBe` 1
it "parser setup runs successfully" $ do
r <- liftIO setupParser
r `shouldBe` 1
it "language classifier setup runs successfully" $ do
r <- liftIO setupLanguageClassifier
r `shouldBe` 1
describe "expansion" $ do
it "expands an address correctly" $ do
defNormalizeOptions <- liftIO getDefaultNormalizeOptions
r <- liftIO $ expandAddress defNormalizeOptions "11 Wall Street New York, NY"
forM_ r $ \xp -> T.take 14 xp `shouldBe` "11 wall street"
describe "parser" $ do
it "parses an address correctly" $ do
defParserOpts <- liftIO getAddressParserDefaultOptions
r <- liftIO $ parseAddress defParserOpts "11 Wall Street New York, NY"
lookup "house_number" r `shouldBe` Just "11"
lookup "road" r `shouldBe` Just "wall street"
lookup "city" r `shouldBe` Just "new york"
lookup "state" r `shouldBe` Just "ny"
describe "teardown" $ do
it "language classifier teardown" $ do
r <- liftIO tearDownLanguageClassifier
r `shouldBe` ()
it "parser teardown" $ do
r <- liftIO tearDownParser
r `shouldBe` ()
it "teardown" $ do
r <- liftIO tearDown
r `shouldBe` ()