module Data.RangeSpec where
import Data.Intersection
import Data.Range
import Test.Hspec
--------------------------------------------------------------------------------
spec :: Spec
spec = do
describe "RangeRange Intersection" $ do
it "openRange cap openrange" $ do
((OpenRange 1 (10 :: Int)) `intersect` (OpenRange 5 (10 :: Int)))
`shouldBe` (coRec $ OpenRange 5 (10 :: Int))
it "disjoint open ranges" $ do
((OpenRange 1 (10 :: Int)) `intersect` (OpenRange 10 (12 :: Int)))
`shouldBe` (coRec NoIntersection)
it "closed cap open, disjoint" $ do
((ClosedRange (1::Int) 10) `intersect` (OpenRange 50 (60 :: Int)))
`shouldBe` (coRec NoIntersection)
it "endpoints overlap but open/closed" $ do
let r1, r2 :: Range Int
r1 = ClosedRange 3 6
r2 = Range (Open 1) (Open 3)
in (r1 `intersects` r2) `shouldBe` False
-- it "closed intersect open" $
-- ((OpenRange 1 (10 :: Int)) `intersect` (ClosedRange 10 (12 :: Int)))
-- `shouldBe` (coRec NoIntersection)
-- it "open rage intersect closed " $ do
-- ((OpenRange 1 (10 :: Int)) `intersect` (ClosedRange 10 (12 :: Int)))
-- `shouldBe` (coRec $ Range (Open 10) (Open (10 :: Int)))
-- (Col Range {_lower = Closed 10, _upper = Open 10})
-- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)
-- it "closed open " $ do
-- ((ClosedRange 1 10) `intersect` (OpenRange 5 10))
-- `shouldBe`
-- (Col (Range (Open 5) (Closed 10)))
-- encode "no-padding!!" `shouldBe` "bm8tcGFkZGluZyEh"
-- |
--
-- >>>
--
-- >>>
-- (Col NoIntersection)
-- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)
-- (Col Range {_lower = Closed 10, _upper = Open 10})
-- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)
-- FALSE