{- abacus Copyright (C) Jonathan Lamothe This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . -} module Abacus.App.Widgets.InternalSpec (spec) where import Lens.Micro.Platform ((&), (.~)) import Test.Hspec (Spec, describe, context, it, shouldBe) import Abacus.App.Types import Abacus.App.Widgets.Internal spec :: Spec spec = describe "Internal" $ do abacusLeftSpec beadsSpec abacusRightSpec abacusLeftSpec :: Spec abacusLeftSpec = describe "abacusLeft" $ mapM_ ( \(desc, state, expected) -> context desc $ it ("should be " ++ show expected) $ abacusLeft state `shouldBe` expected ) [ ( "initial state", initialState, initStr ) , ( "rung 5", r5State, r5Str ) , ( "negative", negState, nStr ) ] where initStr = [ " " , ">0" , " 1" , " 2" , " 3" , " 4" , " 5" , " 6" , " 7" , " 8" , " 9" , " " ] r5Str = [ " " , " 0" , " 1" , " 2" , " 3" , " 4" , ">5" , " 6" , " 7" , " 8" , " 9" , " " ] nStr = [ " " , " 0" , " 1" , " 2" , " 3" , " 4" , " 5" , " 6" , " 7" , " 8" , " 9" , " " ] r5State = initialState & rungNum .~ 5 negState = initialState & rungNum .~ (-1) beadsSpec :: Spec beadsSpec = describe "beads" $ return () abacusRightSpec :: Spec abacusRightSpec = describe "abacusRight" $ return () --jl