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