aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Stewart <dons@galois.com>2007-09-29 01:32:30 +0200
committerDon Stewart <dons@galois.com>2007-09-29 01:32:30 +0200
commit4ed2a4258d7c633706190eaf81abcf7ccdd67c2a (patch)
tree93149fb584bec7d0116d63a2be70ca86c39e64ee
parent894f2ddf28e2540e62c529c9955660d131f47594 (diff)
downloadxmonad-4ed2a4258d7c633706190eaf81abcf7ccdd67c2a.tar.gz
xmonad-4ed2a4258d7c633706190eaf81abcf7ccdd67c2a.tar.xz
xmonad-4ed2a4258d7c633706190eaf81abcf7ccdd67c2a.zip
add some more properties for failure cases
darcs-hash:20070928233230-cba2c-291d995afedb1c3d1cf1ac4f8e69170b24029551.gz
-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)