wip: switching from ncurses to brick
This commit is contained in:
@@ -215,7 +215,7 @@ setGameGoalieSpec = describe "setGameGoalie" $ mapM_
|
||||
|
||||
let
|
||||
ps' = setGameGoalie goalieId ps
|
||||
[joe', bob'] = ps'^.database.dbGoalies
|
||||
(joe', bob') = getFirstTwo $ ps'^.database.dbGoalies
|
||||
gStats' = ps'^.progMode.gameStateL.gameGoalieStats
|
||||
|
||||
context "Joe" $ joe' `TS.compareTest` expectedJoe
|
||||
@@ -380,3 +380,7 @@ setGameGoalieSpec = describe "setGameGoalie" $ mapM_
|
||||
incSO = gsShutouts %~ succ
|
||||
incLoss = gsLosses %~ succ
|
||||
incOT = gsTies %~ succ
|
||||
|
||||
getFirstTwo :: [a] -> (a, a)
|
||||
getFirstTwo (x:y:_) = (x, y)
|
||||
getFirstTwo _ = error "insufficient members of list"
|
||||
|
||||
@@ -63,8 +63,6 @@ spec = describe "Mtlstats.Actions" $ do
|
||||
resetCreatePlayerStateSpec
|
||||
resetCreateGoalieStateSpec
|
||||
backHomeSpec
|
||||
scrollUpSpec
|
||||
scrollDownSpec
|
||||
NewGame.spec
|
||||
EditStandings.spec
|
||||
|
||||
@@ -425,7 +423,6 @@ backHomeSpec = describe "backHome" $ do
|
||||
input = newProgState
|
||||
& progMode.gameStateL .~ newGameState
|
||||
& inputBuffer .~ "foo"
|
||||
& scrollOffset .~ 123
|
||||
result = backHome input
|
||||
|
||||
it "should set the program mode back to MainMenu" $
|
||||
@@ -435,33 +432,3 @@ backHomeSpec = describe "backHome" $ do
|
||||
|
||||
it "should clear the input buffer" $
|
||||
result^.inputBuffer `shouldBe` ""
|
||||
|
||||
it "should reset the scroll offset" $
|
||||
result^.scrollOffset `shouldBe` 0
|
||||
|
||||
scrollUpSpec :: Spec
|
||||
scrollUpSpec = describe "scrollUp" $ do
|
||||
|
||||
context "scrolled down" $
|
||||
it "should decrease the scroll offset by one" $ let
|
||||
ps = newProgState & scrollOffset .~ 10
|
||||
ps' = scrollUp ps
|
||||
in ps'^.scrollOffset `shouldBe` 9
|
||||
|
||||
context "at top" $
|
||||
it "should keep the scroll offset at zero" $ let
|
||||
ps = scrollUp newProgState
|
||||
in ps^.scrollOffset `shouldBe` 0
|
||||
|
||||
context "above top" $
|
||||
it "should return the scroll offset to zero" $ let
|
||||
ps = newProgState & scrollOffset .~ (-10)
|
||||
ps' = scrollUp ps
|
||||
in ps'^.scrollOffset `shouldBe` 0
|
||||
|
||||
scrollDownSpec :: Spec
|
||||
scrollDownSpec = describe "scrollDown" $
|
||||
it "should increase the scroll offset" $ let
|
||||
ps = newProgState & scrollOffset .~ 10
|
||||
ps' = scrollDown ps
|
||||
in ps'^.scrollOffset `shouldBe` 11
|
||||
|
||||
@@ -22,7 +22,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
module HandlersSpec (spec) where
|
||||
|
||||
import Test.Hspec (Spec, context, describe, it, shouldBe)
|
||||
import qualified UI.NCurses as C
|
||||
|
||||
import Brick.Types (BrickEvent (VtyEvent))
|
||||
import Graphics.Vty.Input.Events (Event (EvKey, EvResize), Key (KChar))
|
||||
|
||||
import Mtlstats.Handlers
|
||||
|
||||
@@ -37,10 +39,18 @@ ynHandlerSpec = describe "ynHandler" $ mapM_
|
||||
it ("should be " ++ show expected) $
|
||||
ynHandler event `shouldBe` expected)
|
||||
-- description, event, expected
|
||||
[ ( "Y pressed", C.EventCharacter 'Y', Just True )
|
||||
, ( "y pressed", C.EventCharacter 'y', Just True )
|
||||
, ( "N pressed", C.EventCharacter 'N', Just False )
|
||||
, ( "n pressed", C.EventCharacter 'n', Just False )
|
||||
, ( "x pressed", C.EventCharacter 'x', Nothing )
|
||||
, ( "other event", C.EventResized, Nothing )
|
||||
[ ( "Y pressed", capitalY, Just True )
|
||||
, ( "y pressed", lowerY, Just True )
|
||||
, ( "N pressed", capitalN, Just False )
|
||||
, ( "n pressed", lowerN, Just False )
|
||||
, ( "x pressed", lowerX, Nothing )
|
||||
, ( "other event", otherEvent, Nothing )
|
||||
]
|
||||
where
|
||||
capitalY = chE 'Y'
|
||||
lowerY = chE 'y'
|
||||
capitalN = chE 'N'
|
||||
lowerN = chE 'n'
|
||||
lowerX = chE 'x'
|
||||
otherEvent = VtyEvent $ EvResize 0 0
|
||||
chE c = VtyEvent $ EvKey (KChar c) []
|
||||
|
||||
@@ -34,8 +34,8 @@ import Control.Monad (replicateM)
|
||||
import Data.Aeson (FromJSON, ToJSON, decode, encode, toJSON)
|
||||
import Data.Aeson.Types (Value (Object))
|
||||
import qualified Data.Map.Lazy as M
|
||||
import qualified Data.HashMap.Strict as HM
|
||||
import Data.Ratio ((%))
|
||||
import qualified GHC.Exts as HM
|
||||
import Lens.Micro (Lens', (&), (^.), (.~), (?~))
|
||||
import System.Random (randomIO, randomRIO)
|
||||
import Test.Hspec (Spec, context, describe, it, shouldBe)
|
||||
|
||||
Reference in New Issue
Block a user