Support App.transform
Apply the transform to a Keyboard. Onwards to the final demonstration!
This commit is contained in:
		
							parent
							
								
									61a2fb108d
								
							
						
					
					
						commit
						244503bba9
					
				
					 5 changed files with 57 additions and 1 deletions
				
			
		|  | @ -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',',','.','/'] | ||||
|                    ] | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue