1
1
mirror of https://github.com/github/semantic.git synced 2024-12-21 05:41:54 +03:00
semantic/test/Data/Graph/Spec.hs
2018-10-31 12:30:56 -04:00

21 lines
738 B
Haskell

{-# LANGUAGE PackageImports #-}
module Data.Graph.Spec where
import SpecHelpers
import "semantic" Data.Graph
import qualified Algebra.Graph.Class as Class
spec :: Spec
spec = describe "Data.Graph" $
it "has a valid topological sort" $ do
let topo = topologicalSort
topo (Class.path "ab") `shouldBe` "ba"
topo (Class.path "abc") `shouldBe` "cba"
topo ((vertex 'a' `connect` vertex 'b') `connect` vertex 'c') `shouldBe` "cba"
topo (vertex 'a' `connect` (vertex 'b' `connect` vertex 'c')) `shouldBe` "cba"
topo ((vertex 'a' `connect` vertex 'b') <> (vertex 'a' `connect` vertex 'c')) `shouldBe` "cba"
topo (Class.path "abd" <> Class.path "acd") `shouldBe` "dcba"
topo (Class.path "aba") `shouldBe` "ab"