mirror of
https://github.com/xmonad/xmonad.git
synced 2025-05-19 08:30:21 -07:00
* use quickcheck2 * run them using cabal's test-suite field * split up Properties into separate files
48 lines
1.4 KiB
Haskell
48 lines
1.4 KiB
Haskell
{-# 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
|