packages feed

escoger-0.1.0.0: Tests/Unit/Matches.hs

{-# LANGUAGE OverloadedStrings #-}

module Unit.Matches (unit_matches) where

import qualified Data.Vector as V
import           Escoger.Matches
import           Test.Framework (defaultMain, testGroup)
import           Test.Framework.Providers.HUnit (testCase)
import           Test.HUnit

shorter_terms = assertEqual "favors shorter terms" correctOrder resultOrder
  where
    correctOrder = ["kite", "kitch", "kitten"]
    resultOrder = V.toList . sortByScore "kit" $ V.fromList ["kitten", "kitch", "kite"]

ordered_terms = assertEqual "ignores out of order terms" correctOrder resultOrder
  where
    correctOrder = ["ectwdaokxycaojxh"]
    resultOrder = V.toList . sortByScore "each" $ V.fromList ["aech", "ectwdaokxycaojxh"]

ignores_case = assertEqual "ignores case" correctOrder resultOrder
  where
    correctOrder = ["Each", "eachr"]
    resultOrder = V.toList . sortByScore "each" $ V.fromList ["eachr", "Each"]

unit_matches = testGroup "matches"
               [ testCase "favor shorter terms" shorter_terms
               , testCase "ignore out of order terms" ordered_terms
               , testCase "ignores case" ignores_case
               ]