blob: 612cba9ecca548ba7f68365da37bcc4d0b460789 (
plain) (
tree)
|
|
{-# LANGUAGE ScopedTypeVariables #-}
module Properties.Workspace where
import Test.QuickCheck
import Instances
import Utils
import XMonad.StackSet hiding (filter)
import Data.Maybe
-- 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
-- looking at a visible tag
prop_lookup_visible = do
-- make sure we have some xinerama screens.
x <- arbitrary `suchThat` \(x' :: T) -> visible x' /= []
let tags = [ tag (workspace y) | y <- visible x ]
scr = last [ screen y | y <- visible x ]
return $ fromJust (lookupWorkspace scr x) `elem` tags
prop_currentTag (x :: T) =
currentTag x == tag (workspace (current x))
-- Rename a given tag if present in the StackSet.
prop_rename1 (x::T) = do
o <- arbitraryTag x
n <- arbitrary `suchThat` \n' -> not $ n' `tagMember` x
-- Rename o to n
let y = renameTag o n x
return $ n `tagMember` y
-- Ensure that a given set of workspace tags is present by renaming
-- existing workspaces and\/or creating new hidden workspaces as
-- necessary.
--
prop_ensure (x :: T) l xs = let y = ensureTags l xs x
in and [ n `tagMember` y | n <- xs ]
-- adding a tag should create a new hidden workspace
prop_ensure_append (x :: T) l = do
n <- arbitrary `suchThat` \n' -> not $ n' `tagMember` x
let ts = tags x
y = ensureTags l (n:ts) x
return $ hidden y /= hidden x -- doesn't append, renames
&& and [ isNothing (stack z) && layout z == l | z <- hidden y, tag z == n ]
prop_mapWorkspaceId (x::T) = x == mapWorkspace id x
prop_mapWorkspaceInverse (x::T) = x == mapWorkspace predTag (mapWorkspace succTag x)
where predTag w = w { tag = pred $ tag w }
succTag w = w { tag = succ $ tag w }
prop_mapLayoutId (x::T) = x == mapLayout id x
prop_mapLayoutInverse (x::T) = x == mapLayout pred (mapLayout succ x)
|