{-# LANGUAGE CPP #-} module CaseSplitSpec where import GhcMod import Test.Hspec import TestUtils import Dir main :: IO () main = do hspec spec spec :: Spec spec = do describe "case split" $ do #if __GLASGOW_HASKELL__ >= 708 it "does not blow up on HsWithBndrs panic" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect.hs" 24 10 res `shouldBe` "24 1 24 30"++ " \"mlAppend Nil y = _mlAppend_body\NUL"++ "mlAppend (Cons x1 x2) y = _mlAppend_body\"\n" it "works with case expressions" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect.hs" 28 20 res `shouldBe` "28 19 28 39"++ " \"Nil -> _mlAppend_body\NUL"++ " (Cons x'1 x'2) -> _mlAppend_body\"\n" it "works with where clauses" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect.hs" 34 17 res `shouldBe` "34 5 34 43"++ " \"mlReverse' Nil accum = _mlReverse_body\NUL"++ " mlReverse' (Cons xs'1 xs'2) accum = _mlReverse_body\"\n" it "works with let bindings" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect.hs" 38 33 res `shouldBe` "38 21 38 59"++ " \"mlReverse' Nil accum = _mlReverse_body\NUL"++ " mlReverse' (Cons xs'1 xs'2) accum = _mlReverse_body\"\n" #else it "does not blow up on HsWithBndrs panic" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect706.hs" 24 10 res `shouldBe` "24 1 24 25"++ " \"mlAppend Nil y = undefined\NUL"++ "mlAppend (Cons x1 x2) y = undefined\"\n" it "works with case expressions" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect706.hs" 28 20 res `shouldBe` "28 19 28 34"++ " \"Nil -> undefined\NUL"++ " (Cons x'1 x'2) -> undefined\"\n" it "works with where clauses" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect706.hs" 34 17 res `shouldBe` "34 5 34 37"++ " \"mlReverse' Nil accum = undefined\NUL"++ " mlReverse' (Cons xs'1 xs'2) accum = undefined\"\n" it "works with let bindings" $ do withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Vect706.hs" 38 33 res `shouldBe` "38 21 38 53"++ " \"mlReverse' Nil accum = undefined\NUL"++ " mlReverse' (Cons xs'1 xs'2) accum = undefined\"\n" #endif it "doesn't crash when source doesn't make sense" $ withDirectory_ "test/data/case-split" $ do res <- runD $ splits "Crash.hs" 4 6 #if __GLASGOW_HASKELL__ < 710 res `shouldBe` "4 1 4 19 \"test x = undefined\"\n" #else res `shouldBe` "" #endif