module Language.Futhark.SemanticTests (tests) where

import Language.Futhark (ImportName (..))
import Language.Futhark.Semantic
import Test.Tasty
import Test.Tasty.HUnit

tests :: TestTree
tests :: TestTree
tests =
  TestName -> [TestTree] -> TestTree
testGroup
    TestName
"Semantic objects"
    [ TestName -> Assertion -> TestTree
testCase TestName
"a" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        TestName -> ImportName
mkInitialImport TestName
"a" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"a",
      TestName -> Assertion -> TestTree
testCase TestName
"./a" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        TestName -> ImportName
mkInitialImport TestName
"./a" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"a",
      TestName -> Assertion -> TestTree
testCase TestName
"a/b -> ../c" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        ImportName -> TestName -> ImportName
mkImportFrom (TestName -> ImportName
mkInitialImport TestName
"a/b") TestName
"../c" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"c",
      TestName -> Assertion -> TestTree
testCase TestName
"a/b -> ../../c" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        ImportName -> TestName -> ImportName
mkImportFrom (TestName -> ImportName
mkInitialImport TestName
"a/b") TestName
"../../c" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"../c",
      TestName -> Assertion -> TestTree
testCase TestName
"../a -> b" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        ImportName -> TestName -> ImportName
mkImportFrom (TestName -> ImportName
mkInitialImport TestName
"../a") TestName
"b" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"../b",
      TestName -> Assertion -> TestTree
testCase TestName
"../a -> ../b" (Assertion -> TestTree) -> Assertion -> TestTree
forall a b. (a -> b) -> a -> b
$
        ImportName -> TestName -> ImportName
mkImportFrom (TestName -> ImportName
mkInitialImport TestName
"../a") TestName
"../b" ImportName -> ImportName -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= TestName -> ImportName
ImportName TestName
"../../b"
    ]