packages feed

nirum-0.2.0: test/Nirum/Constructs/NameSpec.hs

module Nirum.Constructs.NameSpec where

import Test.Hspec.Meta

import Nirum.Constructs.Name (Name(Name), isComplex, isSimple, toCode)

spec :: Spec
spec =
    describe "Name" $ do
        describe "toCode Name" $ do
            it "prints only its facialName if its behindName is the same" $
                toCode (Name "a" "a") `shouldBe` "a"
            it "prints only facialName with behindName if they are not same" $
                toCode (Name "a" "b") `shouldBe` "a/b"
        specify "fromString" $
            ("foo" :: Name) `shouldBe` Name "foo" "foo"
        specify "isSimple" $ do
            Name "foo" "foo" `shouldSatisfy` isSimple
            Name "foo" "bar" `shouldNotSatisfy` isSimple
        specify "isComplex" $ do
            Name "foo" "bar" `shouldSatisfy` isComplex
            Name "foo" "foo" `shouldNotSatisfy` isComplex