aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/firrtlTests
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/firrtlTests')
-rw-r--r--src/test/scala/firrtlTests/RenameMapSpec.scala2
-rw-r--r--src/test/scala/firrtlTests/annotationTests/TargetUtilsSpec.scala56
2 files changed, 58 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/RenameMapSpec.scala b/src/test/scala/firrtlTests/RenameMapSpec.scala
index 29466c72..bebeb0bf 100644
--- a/src/test/scala/firrtlTests/RenameMapSpec.scala
+++ b/src/test/scala/firrtlTests/RenameMapSpec.scala
@@ -5,6 +5,8 @@ package firrtlTests
import firrtl.RenameMap
import firrtl.RenameMap.IllegalRenameException
import firrtl.annotations._
+import firrtl.annotations.TargetToken.{Instance, OfModule}
+import firrtl.analyses.InstanceKeyGraph
import firrtl.testutils._
class RenameMapSpec extends FirrtlFlatSpec {
diff --git a/src/test/scala/firrtlTests/annotationTests/TargetUtilsSpec.scala b/src/test/scala/firrtlTests/annotationTests/TargetUtilsSpec.scala
new file mode 100644
index 00000000..38266efe
--- /dev/null
+++ b/src/test/scala/firrtlTests/annotationTests/TargetUtilsSpec.scala
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package firrtlTests.annotationTests
+
+import firrtl.analyses.InstanceKeyGraph.InstanceKey
+import firrtl.annotations._
+import firrtl.annotations.TargetToken._
+import firrtl.annotations.TargetUtils._
+import firrtl.testutils.FirrtlFlatSpec
+
+class TargetUtilsSpec extends FirrtlFlatSpec {
+
+ behavior.of("instKeyPathToTarget")
+
+ it should "create a ModuleTarget for the top module" in {
+ val input = InstanceKey("Top", "Top") :: Nil
+ val expected = ModuleTarget("Top", "Top")
+ instKeyPathToTarget(input) should be(expected)
+ }
+
+ it should "create absolute InstanceTargets" in {
+ val input = InstanceKey("Top", "Top") ::
+ InstanceKey("foo", "Foo") ::
+ InstanceKey("bar", "Bar") ::
+ Nil
+ val expected = InstanceTarget("Top", "Top", Seq((Instance("foo"), OfModule("Foo"))), "bar", "Bar")
+ instKeyPathToTarget(input) should be(expected)
+ }
+
+ it should "support starting somewhere down the path" in {
+ val input = InstanceKey("Top", "Top") ::
+ InstanceKey("foo", "Foo") ::
+ InstanceKey("bar", "Bar") ::
+ InstanceKey("fizz", "Fizz") ::
+ Nil
+ val expected = InstanceTarget("Top", "Bar", Seq(), "fizz", "Fizz")
+ instKeyPathToTarget(input, Some("Bar")) should be(expected)
+ }
+
+ behavior.of("unfoldInstanceTargets")
+
+ it should "return nothing for ModuleTargets" in {
+ val input = ModuleTarget("Top", "Foo")
+ unfoldInstanceTargets(input) should be(Iterable())
+ }
+
+ it should "return all other InstanceTargets to the same instance" in {
+ val input = ModuleTarget("Top", "Top").instOf("foo", "Foo").instOf("bar", "Bar").instOf("fizz", "Fizz")
+ val expected =
+ input ::
+ ModuleTarget("Top", "Foo").instOf("bar", "Bar").instOf("fizz", "Fizz") ::
+ ModuleTarget("Top", "Bar").instOf("fizz", "Fizz") ::
+ Nil
+ unfoldInstanceTargets(input) should be(expected)
+ }
+}