summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/Properties.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/Properties.hs b/tests/Properties.hs
index 8256c45..138924f 100644
--- a/tests/Properties.hs
+++ b/tests/Properties.hs
@@ -11,8 +11,10 @@ import Data.Ratio
import Data.Maybe
import System.Environment
import Control.Exception (assert)
+import qualified Control.Exception as C
import Control.Monad
import Test.QuickCheck hiding (promote)
+import System.IO.Unsafe
import System.IO
import System.Random hiding (next)
import Text.Printf
@@ -544,6 +546,28 @@ prop_differentiate xs =
else focus (fromJust (differentiate xs)) == head xs
where _ = xs :: [Int]
+-- looking up the tag of the current workspace should always produce a tag.
+prop_lookup_current (x :: T) = lookupWorkspace scr x == Just tg
+ where
+ (Screen (Workspace tg _ _) scr _) = current x
+
+-- ---------------------------------------------------------------------
+-- testing for failure
+
+-- and help out hpc
+prop_abort x = unsafePerformIO $ C.catch (abort "fail")
+ (\e -> return $ show e == "xmonad: StackSet: fail" )
+ where
+ _ = x :: Int
+
+-- new should fail with an abort
+prop_new_abort x = unsafePerformIO $ C.catch f
+ (\e -> return $ show e == "xmonad: StackSet: non-positive argument to StackSet.new" )
+ where
+ f = new undefined{-layout-} [] [] `seq` return False
+
+ _ = x :: Int
+
------------------------------------------------------------------------
-- some properties for layouts:
@@ -675,6 +699,11 @@ main = do
,("floating is reversible" , mytest prop_float_reversible)
,("screens includes current", mytest prop_screens)
,("differentiate works", mytest prop_differentiate)
+ ,("lookupTagOnScreen", mytest prop_lookup_current)
+
+ -- testing for failure:
+ ,("abort fails", mytest prop_abort)
+ ,("new fails with abort", mytest prop_new_abort)
{-
,("tile 1 window fullsize", mytest prop_tile_fullscreen)