about summary refs log tree commit diff
path: root/haskell-file/f.hs
blob: 9ddb930ee103985e4912053b30895fc250fc1ca0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
module F
  ( join
  ) where

import System.FilePath.Posix (FilePath)
import qualified System.FilePath.Posix as F

-- TODO: Move this to a misc.hs, prelude.hs, operators.hs; somewhere.
(|>) :: a -> (a -> b) -> b
(|>) a f = f a
infixl 1 |>

-- TODO: Move this to a test_utils.hs or elsewhere.
simpleAssert :: (Eq a) => a -> a -> ()
simpleAssert x y =
  if x == y then
    ()
  else
    error "Assertion error"

--------------------------------------------------------------------------------
-- Library
--------------------------------------------------------------------------------

join :: [FilePath] -> FilePath
join = F.joinPath

--------------------------------------------------------------------------------
-- Tests
--------------------------------------------------------------------------------

expected :: [([FilePath], FilePath)]
expected = [ (["path"], "path")
           , (["/path"], "/path")
           , (["path", "to", "file"], "path/to/file")
           , (["/path", "to", "file"], "/path/to/file")
           , (["/"], "/")
           ]

runTests :: [()]
runTests =
  fmap (\(input, expected) -> simpleAssert (join input) expected) expected

main :: IO ()
main = do
  print runTests
  pure ()