From 13fc27f35e85026c002e644b61c32268bd258d78 Mon Sep 17 00:00:00 2001 From: Albert Magyar Date: Sun, 26 Feb 2017 16:11:37 -0800 Subject: Add utilites for digraphs and netlist analyses --- .../scala/firrtlTests/graph/DiGraphTests.scala | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/test/scala/firrtlTests/graph/DiGraphTests.scala (limited to 'src/test') diff --git a/src/test/scala/firrtlTests/graph/DiGraphTests.scala b/src/test/scala/firrtlTests/graph/DiGraphTests.scala new file mode 100644 index 00000000..6546e147 --- /dev/null +++ b/src/test/scala/firrtlTests/graph/DiGraphTests.scala @@ -0,0 +1,38 @@ +package firrtlTests.graph + +import java.io._ +import org.scalatest._ +import org.scalatest.prop._ +import org.scalatest.Matchers._ +import firrtl.graph._ +import firrtlTests._ + +class DiGraphTests extends FirrtlFlatSpec { + + val acyclicGraph = DiGraph(Map( + "a" -> Set("b","c"), + "b" -> Set("d"), + "c" -> Set("d"), + "d" -> Set("e"), + "e" -> Set.empty[String])) + + val cyclicGraph = DiGraph(Map( + "a" -> Set("b","c"), + "b" -> Set("d"), + "c" -> Set("d"), + "d" -> Set("a"))) + + + acyclicGraph.findSCCs.filter(_.length > 1) shouldBe empty + + cyclicGraph.findSCCs.filter(_.length > 1) should not be empty + + acyclicGraph.path("a","e") should not be empty + + an [acyclicGraph.PathNotFoundException] should be thrownBy acyclicGraph.path("e","a") + + acyclicGraph.linearize.head should equal ("a") + + a [cyclicGraph.CyclicException] should be thrownBy cyclicGraph.linearize + +} -- cgit v1.2.3