diff --git a/src/Abacus/App/Widgets/Internal.hs b/src/Abacus/App/Widgets/Internal.hs index 293d2be..6847b4b 100644 --- a/src/Abacus/App/Widgets/Internal.hs +++ b/src/Abacus/App/Widgets/Internal.hs @@ -62,6 +62,10 @@ beads a = map (rungList a) abacusRight :: AppState -> [String] -abacusRight = undefined +abacusRight a = + " " : map + (\n -> if n == a^.rungNum then "<" else " ") + [0..pred (getNumRungs $ a^.abacus)] + ++ [" "] --jl diff --git a/test/Abacus/App/Widgets/InternalSpec.hs b/test/Abacus/App/Widgets/InternalSpec.hs index 6284b55..e4517bd 100644 --- a/test/Abacus/App/Widgets/InternalSpec.hs +++ b/test/Abacus/App/Widgets/InternalSpec.hs @@ -117,7 +117,20 @@ beadsSpec = describe "beads" $ mapM_ ] abacusRightSpec :: Spec -abacusRightSpec = describe "abacusRight" $ - return () +abacusRightSpec = describe "abacusRight" $ mapM_ + ( \(desc, state, expected) -> context desc $ + it ("should be " ++ show expected) $ + abacusRight state `shouldBe` expected + ) + [ ( "initial state", initialState, initRes ) + , ( "rung 5", r5State, r5Res ) + , ( "negative rung", negState, negRes ) + ] + where + r5State = initialState & rungNum .~ 5 + negState = initialState & rungNum .~ (-1) + initRes = map (:[]) " < " + r5Res = map (:[]) " < " + negRes = map (:[]) " " --jl