diff options
Diffstat (limited to '')
-rw-r--r-- | tests/Properties/View.hs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/Properties/View.hs b/tests/Properties/View.hs new file mode 100644 index 0000000..ef9b58d --- /dev/null +++ b/tests/Properties/View.hs @@ -0,0 +1,47 @@ +{-# LANGUAGE ScopedTypeVariables #-} +module Properties.View where + +import Test.QuickCheck +import Instances +import Utils + +import XMonad.StackSet hiding (filter) + +import Data.List (sortBy) + +-- --------------------------------------------------------------------- +-- viewing workspaces + +-- view sets the current workspace to 'n' +prop_view_current (x :: T) = do + n <- arbitraryTag x + return $ (tag . workspace . current . view n) x == n + +-- view *only* sets the current workspace, and touches Xinerama. +-- no workspace contents will be changed. +prop_view_local (x :: T) = do + n <- arbitraryTag x + return $ workspaces x == workspaces (view n x) + where + workspaces a = sortBy (\s t -> tag s `compare` tag t) $ + workspace (current a) + : map workspace (visible a) ++ hidden a + +-- TODO: Fix this +-- view should result in a visible xinerama screen +-- prop_view_xinerama (x :: T) (n :: NonNegative Int) = i `tagMember` x ==> +-- M.member i (screens (view i x)) +-- where +-- i = fromIntegral n + +-- view is idempotent +prop_view_idem (x :: T) = do + n <- arbitraryTag x + return $ view n (view n x) == (view n x) + +-- view is reversible, though shuffles the order of hidden/visible +prop_view_reversible (x :: T) = do + n <- arbitraryTag x + return $ normal (view n' (view n x)) == normal x + where + n' = currentTag x |