diff options
author | Max Rabkin <max.rabkin@gmail.com> | 2009-09-29 18:31:39 +0200 |
---|---|---|
committer | Max Rabkin <max.rabkin@gmail.com> | 2009-09-29 18:31:39 +0200 |
commit | 73bbe88dde8488da220a6f4bb01612c94396cda6 (patch) | |
tree | 1d3a775f6a677a361003148bc1cca7924cdc1dd6 | |
parent | 4b3ac1ac0388f7220a5e533c375632a1af2bba9d (diff) | |
download | XMonadContrib-73bbe88dde8488da220a6f4bb01612c94396cda6.tar.gz XMonadContrib-73bbe88dde8488da220a6f4bb01612c94396cda6.tar.xz XMonadContrib-73bbe88dde8488da220a6f4bb01612c94396cda6.zip |
Test that update preserves invariants of Selection
Ignore-this: 340b2a1465b9fc98cdc386b511ce26bb
darcs-hash:20090929163139-a5338-41aff4fdfbefe3c50a528bdf1a0c798a90b80381.gz
Diffstat (limited to '')
-rw-r--r-- | XMonad/Layout/Selective.hs | 2 | ||||
-rw-r--r-- | tests/test_Selective.hs | 17 |
2 files changed, 10 insertions, 9 deletions
diff --git a/XMonad/Layout/Selective.hs b/XMonad/Layout/Selective.hs index 415a69f..5853c56 100644 --- a/XMonad/Layout/Selective.hs +++ b/XMonad/Layout/Selective.hs @@ -25,7 +25,7 @@ import XMonad.StackSet import XMonad.Layout.LayoutModifier import Control.Applicative ((<$>)) --- invariant: 0 <= nMaster <= start; 0 <= nRest +-- invariant: 0 <= nMaster <= start; 1 <= nRest data Selection = Sel { nMaster :: Int, start :: Int, nRest :: Int } deriving (Read, Show, Eq) diff --git a/tests/test_Selective.hs b/tests/test_Selective.hs index 790ce14..4de4632 100644 --- a/tests/test_Selective.hs +++ b/tests/test_Selective.hs @@ -28,13 +28,11 @@ arbPos = (+1) . abs <$> arbitrary -- (when the selection is normalized) prop_select_length sel (stk :: Stack Int) = (length . integrate $ select sel' stk) == ((nMaster sel' + nRest sel') `min` length (integrate stk)) - where - sel' = update sel stk + where sel' = update sel stk -- update normalizes selections (is idempotent) prop_update_idem sel (stk :: Stack Int) = sel' == update sel' stk - where - sel' = update sel stk + where sel' = update sel stk -- select selects the master pane prop_select_master sel (stk :: Stack Int) = @@ -42,8 +40,7 @@ prop_select_master sel (stk :: Stack Int) = -- the focus should always be selected in normalized selections prop_select_focus sel (stk :: Stack Int) = focus stk == (focus $ select sel' stk) - where - sel' = update sel stk + where sel' = update sel stk -- select doesn't change order (or duplicate elements) -- relies on the Arbitrary instance for Stack Int generating increasing stacks @@ -51,6 +48,12 @@ prop_select_increasing sel (stk :: Stack Int) = let res = integrate $ select sel stk in and . zipWith (<) res $ tail res +-- update preserves invariants on selections +prop_update_nm sel (stk :: Stack Int) = nMaster (update sel stk) >= 0 +prop_update_start sel (stk :: Stack Int) = nMaster sel' <= start sel' + where sel' = update sel stk +prop_update_nr sel (stk :: Stack Int) = nRest (update sel stk) >= 0 + -- moving the focus to a window that's already selected doesn't change the selection prop_update_focus_up sel (stk :: Stack Int) x' = (length (up stk) >= x) && ((up stk !! (x-1)) `elem` integrate stk') ==> @@ -68,7 +71,5 @@ prop_update_focus_down sel (stk :: Stack Int) x' = sel' = update sel stk stk' = select sel' stk -upSel sel stk = let sel' = update sel stk in (sel', select sel' stk) - focusUp stk = stk { up=tail (up stk), focus=head (up stk), down=focus stk:down stk } focusDown stk = stk { down=tail (down stk), focus=head (down stk), up=focus stk:up stk } |