packages feed

graphite-0.0.1.0: test/Data/Graph/TypesSpec.hs

module Data.Graph.TypesSpec where

import Test.Hspec
import Test.QuickCheck

import Data.Graph.Types

spec :: Spec
spec = do
    describe "Undirected Edge" $ do
        it "Satisfies equality for two vertices regardless of their order" $ property $
            \(Edge v1 v2 ()) -> (v1 <-> v2) == ((v2 <-> v1) :: Edge Int ())

    describe "Directed Arc" $ do
        it "Satisfies equality for two vertices when order is preserved" $ property $
            \(Arc v1 v2 ()) -> (v1 --> v2) == ((v1 --> v2) :: Arc Int ())
        it "Fails equality for two vertices when order is reversed" $ property $
            \(Arc v1 v2 ()) -> (v1 /= v2) ==> (v1 --> v2) == ((v1 --> v2) :: Arc Int ())