stylish-haskell-0.5.4.0: tests/Language/Haskell/Stylish/Step/Imports/Tests.hs
--------------------------------------------------------------------------------
module Language.Haskell.Stylish.Step.Imports.Tests
( tests
) where
--------------------------------------------------------------------------------
import Test.Framework (Test, testGroup)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit (Assertion, (@=?))
--------------------------------------------------------------------------------
import Language.Haskell.Stylish.Step.Imports
import Language.Haskell.Stylish.Tests.Util
--------------------------------------------------------------------------------
tests :: Test
tests = testGroup "Language.Haskell.Stylish.Step.Imports.Tests"
[ testCase "case 01" case01
, testCase "case 02" case02
, testCase "case 03" case03
, testCase "case 04" case04
, testCase "case 05" case05
, testCase "case 06" case06
, testCase "case 07" case07
]
--------------------------------------------------------------------------------
input :: String
input = unlines
[ "module Herp where"
, ""
, "import qualified Data.Map as M"
, "import Control.Monad"
, "import Only.Instances()"
, "import Data.Map (lookup, (!), insert, Map)"
, ""
, "import Herp.Derp.Internals hiding (foo)"
, "import Foo (Bar (..))"
, ""
, "herp = putStrLn \"import Hello world\""
]
--------------------------------------------------------------------------------
case01 :: Assertion
case01 = expected @=? testStep (step 80 Global) input
where
expected = unlines
[ "module Herp where"
, ""
, "import Control.Monad"
, "import Data.Map (Map, insert, lookup, (!))"
, "import qualified Data.Map as M"
, "import Only.Instances ()"
, ""
, "import Foo (Bar (..))"
, "import Herp.Derp.Internals hiding (foo)"
, ""
, "herp = putStrLn \"import Hello world\""
]
--------------------------------------------------------------------------------
case02 :: Assertion
case02 = expected @=? testStep (step 80 Group) input
where
expected = unlines
[ "module Herp where"
, ""
, "import Control.Monad"
, "import Data.Map (Map, insert, lookup, (!))"
, "import qualified Data.Map as M"
, "import Only.Instances ()"
, ""
, "import Foo (Bar (..))"
, "import Herp.Derp.Internals hiding (foo)"
, ""
, "herp = putStrLn \"import Hello world\""
]
--------------------------------------------------------------------------------
case03 :: Assertion
case03 = expected @=? testStep (step 80 None) input
where
expected = unlines
[ "module Herp where"
, ""
, "import Control.Monad"
, "import Data.Map (Map, insert, lookup, (!))"
, "import qualified Data.Map as M"
, "import Only.Instances ()"
, ""
, "import Foo (Bar (..))"
, "import Herp.Derp.Internals hiding (foo)"
, ""
, "herp = putStrLn \"import Hello world\""
]
--------------------------------------------------------------------------------
case04 :: Assertion
case04 = expected @=? testStep (step 80 Global) input'
where
input' =
"import Data.Aeson.Types (object, typeMismatch, FromJSON(..)," ++
"ToJSON(..), Value(..), parseEither, (.!=), (.:), (.:?), (.=))"
expected = unlines
[ "import Data.Aeson.Types (FromJSON (..), ToJSON (..), Value (..),"
, " object, parseEither, typeMismatch, (.!=),"
, " (.:), (.:?), (.=))"
]
--------------------------------------------------------------------------------
case05 :: Assertion
case05 = input' @=? testStep (step 80 Group) input'
where
input' = "import Distribution.PackageDescription.Configuration " ++
"(finalizePackageDescription)\n"
--------------------------------------------------------------------------------
case06 :: Assertion
case06 = input' @=? testStep (step 80 File) input'
where
input' = unlines
[ "import Bar.Qux"
, "import Foo.Bar"
]
--------------------------------------------------------------------------------
case07 :: Assertion
case07 = expected @=? testStep (step 80 File) input'
where
input' = unlines
[ "import Bar.Qux"
, ""
, "import qualified Foo.Bar"
]
expected = unlines
[ "import Bar.Qux"
, ""
, "import qualified Foo.Bar"
]