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 "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