diff options
author | Will Thompson <will@willthompson.co.uk> | 2012-01-13 16:23:53 +0000 |
---|---|---|
committer | Will Thompson <will@willthompson.co.uk> | 2012-01-13 16:23:53 +0000 |
commit | b66df308ac873a0b645977122a587e95df6b1a0d (patch) | |
tree | f3d080c5175664e149b43a511b180c3a71f14a79 | |
parent | 8166e01496aa61b08466d821d7b77e0f87b83012 (diff) |
Add regionSelectionFlatten
-rw-r--r-- | Bustle/Regions.hs | 6 | ||||
-rw-r--r-- | Test/Regions.hs | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/Bustle/Regions.hs b/Bustle/Regions.hs index 9774b83..33392ff 100644 --- a/Bustle/Regions.hs +++ b/Bustle/Regions.hs @@ -11,6 +11,7 @@ module Bustle.Regions , RegionSelection (..) , regionSelectionNew , regionSelectionAppend + , regionSelectionFlatten , regionSelectionUpdate , regionSelectionSelect , regionSelectionUp @@ -80,6 +81,11 @@ regionSelectionNew rs where sorted = sort (map fst rs) +regionSelectionFlatten :: RegionSelection a + -> Regions a +regionSelectionFlatten rs = + reverse (rsBefore rs) ++ maybeToList (rsCurrent rs) ++ rsAfter rs + regionSelectionAppend :: Regions a -> RegionSelection a -> RegionSelection a diff --git a/Test/Regions.hs b/Test/Regions.hs index 383fb57..c9aca2c 100644 --- a/Test/Regions.hs +++ b/Test/Regions.hs @@ -157,6 +157,14 @@ prop_Append vr@(ValidRegions regions) = bs = drop i regions in regionSelectionAppend bs (regionSelectionNew as) == regionSelectionNew regions +prop_FlattenThenNewIsIdempotent + :: (Eq a, Show a) + => ValidRegions a + -> Property +prop_FlattenThenNewIsIdempotent vr@(ValidRegions regions) = + withRegions vr $ \rs -> property $ + regionSelectionNew (regionSelectionFlatten rs) == rs + runTests = $quickCheckAll main = do |