diff options
Diffstat (limited to 'scratch/brilliant/Spec.hs')
-rw-r--r-- | scratch/brilliant/Spec.hs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/scratch/brilliant/Spec.hs b/scratch/brilliant/Spec.hs index f49a3d3d96a4..c55da72d0c37 100644 --- a/scratch/brilliant/Spec.hs +++ b/scratch/brilliant/Spec.hs @@ -4,10 +4,13 @@ module Spec where import Test.Hspec import Test.QuickCheck import Control.Exception (evaluate) +import Keyboard (Keyboard(..)) import Transforms (Transform(..)) +import qualified App import qualified Keyboard import qualified Transforms +import qualified Utils -------------------------------------------------------------------------------- main :: IO () @@ -35,3 +38,36 @@ main = hspec $ do it "return Nothing when the input is valid except for the end" $ do Transforms.fromString "HVS10potato" == Nothing + + describe "App.transform" $ do + it "flips a keyboard horizontally" $ do + App.transform HorizontalFlip Keyboard.qwerty == do + Keyboard [ reverse ['1','2','3','4','5','6','7','8','9','0'] + , reverse ['Q','W','E','R','T','Y','U','I','O','P'] + , reverse ['A','S','D','F','G','H','J','K','L',';'] + , reverse ['Z','X','C','V','B','N','M',',','.','/'] + ] + + it "flips a keyboard vertically" $ do + App.transform VerticalFlip Keyboard.qwerty == do + Keyboard $ reverse [ ['1','2','3','4','5','6','7','8','9','0'] + , ['Q','W','E','R','T','Y','U','I','O','P'] + , ['A','S','D','F','G','H','J','K','L',';'] + , ['Z','X','C','V','B','N','M',',','.','/'] + ] + + it "shifts a keyboard N times" $ do + App.transform (Shift 2) Keyboard.qwerty == do + Keyboard $ [ Utils.rotate 2 ['1','2','3','4','5','6','7','8','9','0'] + , Utils.rotate 2 ['Q','W','E','R','T','Y','U','I','O','P'] + , Utils.rotate 2 ['A','S','D','F','G','H','J','K','L',';'] + , Utils.rotate 2 ['Z','X','C','V','B','N','M',',','.','/'] + ] + + it "shifts negative amounts" $ do + App.transform (Shift (-3)) Keyboard.qwerty == do + Keyboard $ [ Utils.rotate (-3) ['1','2','3','4','5','6','7','8','9','0'] + , Utils.rotate (-3) ['Q','W','E','R','T','Y','U','I','O','P'] + , Utils.rotate (-3) ['A','S','D','F','G','H','J','K','L',';'] + , Utils.rotate (-3) ['Z','X','C','V','B','N','M',',','.','/'] + ] |