diff --git a/geval.cabal b/geval.cabal index 5424adf..e86b594 100644 --- a/geval.cabal +++ b/geval.cabal @@ -17,6 +17,11 @@ library hs-source-dirs: src exposed-modules: Lib build-depends: base >= 4.7 && < 5 + , conduit + , conduit-combinators + , conduit-extra + , resourcet + , text default-language: Haskell2010 executable geval-exe @@ -33,6 +38,7 @@ test-suite geval-test main-is: Spec.hs build-depends: base , geval + , hspec ghc-options: -threaded -rtsopts -with-rtsopts=-N default-language: Haskell2010 diff --git a/src/Lib.hs b/src/Lib.hs index 0e6faba..ff65835 100644 --- a/src/Lib.hs +++ b/src/Lib.hs @@ -2,6 +2,24 @@ module Lib ( geval ) where +import Data.Conduit +import Data.Conduit.Combinators as CC +import qualified Data.Conduit.Binary as CB +import qualified Data.Conduit.Text as CT +import Control.Monad.Trans.Resource +import qualified Data.Conduit.List as CL +import Data.Text +import Data.Text.Read as TR + geval :: String -> String -> IO (Double) geval expectedFilePath outFilePath = do - return $ 3.14 + runResourceT $ + CB.sourceFile expectedFilePath + $$ CT.decode CT.utf8 + =$= CT.lines + =$= CL.map TR.double + =$= CC.map getValue + =$ CC.sum + +getValue :: Either String (Double, Text) -> Double +getValue (Right (x, _)) = x diff --git a/test/Spec.hs b/test/Spec.hs index cd4753f..812d517 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -1,2 +1,9 @@ +import Test.Hspec + +import Lib + main :: IO () -main = putStrLn "Test suite not yet implemented" +main = hspec $ do + describe "mean square error" $ do + it "simple test" $ do + geval "test/mse-simple/mse-simple/test-A/expected.tsv" "test/mse-simple/mse-simple-solution/test-A/out.tsv" `shouldReturn` 1.118033988749