module Main where
import Control.Applicative
import Data.Stringable
import Debug.Trace
import qualified Data.Aeson as A
import qualified Data.Binary as B
import qualified Data.Serialize as S
import Test.Framework.Providers.QuickCheck2
import Test.Framework.TH
import Data.HashMap.Strict (fromList,union)
import NLP.Text.BTI
import NLP.Scoring.SimpleUnigram
import NLP.Scoring.SimpleUnigram.Default
-- | Test aeson conversion. We add random @(key,value)@ pairs in the form
-- of @xs@ to the default scoring. We also randomize the individual scoring
-- constants.
--
-- Testing is done by serialization followed by deserialization and testing
-- for equality.
prop_Aeson ( xs :: [((String,String),Double)]
, (gs :: Double, go :: Double, ge :: Double, dm :: Double, di :: Double)
)
= Just def' == A.decode (A.encode def')
where def = clvDefaults
xs' = fromList $ map (\((x,y),s) -> ((fromString x,fromString y),s)) xs
def' = def { simpleScore = simpleScore def `union` xs'
, gapScore = gs
, gapOpen = go
, gapExtend = ge
, defMatch = dm
, defMismatch = di
}
main :: IO ()
main = $(defaultMainGenerator)