Sha256: 273db605ebc737684f21b5fd47df1ed10446d76cda77f838446821bc7ab93747

Contents?: true

Size: 1.64 KB

Versions: 165

Compression:

Stored size: 1.64 KB

Contents

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

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

import School (add, empty, grade, sorted)

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

specs :: Spec
specs = describe "grade-school" $ do

          -- As of 2016-07-27, there was no reference file
          -- for the test cases in `exercism/x-common`.

          let fromList = foldr (uncurry add) empty
          let fromGrade g = fromList . zip (repeat g)

          it "add student" $
            sorted (add 2 "Aimee" empty) `shouldBe` [(2, ["Aimee"])]

          it "add more students in same class" $
            sorted (fromGrade 2 ["James", "Blair", "Paul"])
            `shouldBe` [(2, ["Blair", "James", "Paul"])]

          it "add students to different grades" $
            sorted (fromList [(3, "Chelsea"), (7, "Logan")])
            `shouldBe` [(3, ["Chelsea"]), (7, ["Logan"])]

          it "get students in a grade" $
            grade 5 (fromList [(5, "Franklin"), (5, "Bradley"), (1, "Jeff")])
            `shouldBe` ["Bradley", "Franklin"]

          it "get students in a non-existent grade" $
            grade 1 empty `shouldBe` []

          it "sorted school" $
            sorted (fromList [ (4, "Jennifer"   )
                             , (6, "Kareem"     )
                             , (4, "Christopher")
                             , (3, "Kyle"       ) ] )
            `shouldBe` [ (3, ["Kyle"                   ] )
                       , (4, ["Christopher", "Jennifer"] )
                       , (6, ["Kareem"                 ] ) ]

Version data entries

165 entries across 165 versions & 1 rubygems

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