Sha256: 2ad12434a62dcd01cddd1bd7f4f9142ab46b2c5de91a9cebaea0e1511a03550e

Contents?: true

Size: 1.68 KB

Versions: 82

Compression:

Stored size: 1.68 KB

Contents

{-# OPTIONS_GHC -fno-warn-type-defaults #-}

import Data.Map          (fromList)
import Test.Hspec        (Spec, describe, it, shouldBe)
import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)

import ETL (transform)

main :: IO ()
main = hspecWith defaultConfig {configFastFail = True} specs

specs :: Spec
specs = describe "etl" $

  -- Test cases adapted from `exercism/x-common/etl` on 2017-01-31.

  describe "transform" $ do

    it "a single letter" $
      transform (fromList [(1, "A")])
      `shouldBe` fromList [('a', 1)]

    it "single score with multiple letters" $
      transform (fromList [(1, "AEIOU")])
      `shouldBe` fromList [('a', 1), ('e', 1), ('i', 1), ('o', 1), ('u', 1)]

    it "multiple scores with multiple letters" $
      transform (fromList [(1, "AE"), (2, "DG")])
      `shouldBe` fromList [('a', 1), ('e', 1), ('d', 2), ('g', 2)]

    it "multiple scores with differing numbers of letters" $
      transform (fromList fullInput)
      `shouldBe` fromList fullOutput

  where

    fullInput = [ ( 1, "AEIOULNRST")
                , ( 2, "DG"        )
                , ( 3, "BCMP"      )
                , ( 4, "FHVWY"     )
                , ( 5, "K"         )
                , ( 8, "JX"        )
                , (10, "QZ"        ) ]

    fullOutput = [ ('a',  1) , ('b',  3) , ('c',  3) , ('d',  2)
                 , ('e',  1) , ('f',  4) , ('g',  2) , ('h',  4)
                 , ('i',  1) , ('j',  8) , ('k',  5) , ('l',  1)
                 , ('m',  3) , ('n',  1) , ('o',  1) , ('p',  3)
                 , ('q', 10) , ('r',  1) , ('s',  1) , ('t',  1)
                 , ('u',  1) , ('v',  4) , ('w',  4) , ('x',  8)
                 , ('y',  4) , ('z', 10) ]

Version data entries

82 entries across 82 versions & 1 rubygems

Version Path
trackler-2.1.0.9 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.8 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.7 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.6 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.5 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.4 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.3 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.2 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.1 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.1.0.0 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.55 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.54 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.53 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.52 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.51 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.50 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.49 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.48 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.47 tracks/haskell/exercises/etl/test/Tests.hs
trackler-2.0.8.46 tracks/haskell/exercises/etl/test/Tests.hs