aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala
new file mode 100644
index 00000000..2dce89db
--- /dev/null
+++ b/src/test/scala/firrtlTests/annotationTests/JsonProtocolSpec.scala
@@ -0,0 +1,42 @@
+// See LICENSE for license details.
+
+package firrtlTests.annotationTests
+
+import firrtl.Parser
+import firrtl.annotations.{Annotation, JsonProtocol, NoTargetAnnotation}
+import firrtl.ir._
+import org.scalatest.{FlatSpec, Matchers, PropSpec}
+
+case class AnAnnotation(
+ info: Info,
+ cir: Circuit,
+ mod: DefModule,
+ port: Port,
+ statement: Statement,
+ expr: Expression,
+ tpe: Type
+) extends NoTargetAnnotation
+
+class JsonProtocolSpec extends FlatSpec with Matchers {
+ "JsonProtocol" should "serialize and deserialize FIRRTL types" in {
+
+ val circuit =
+ """circuit Top: @[FPU.scala 509:25]
+ | module Top:
+ | input x: UInt
+ | output y: UInt
+ | y <= add(x, x)
+ |""".stripMargin
+ val cir = Parser.parse(circuit)
+ val mod = cir.modules.head
+ val port = mod.ports.head
+ val stmt = mod.asInstanceOf[Module].body
+ val expr = stmt.asInstanceOf[Block].stmts.head.asInstanceOf[Connect].expr
+ val tpe = port.tpe
+ val inputAnnos = Seq(AnAnnotation(cir.info, cir, mod, port, stmt, expr, tpe))
+ val annosString = JsonProtocol.serialize(inputAnnos)
+ val outputAnnos = JsonProtocol.deserialize(annosString)
+ inputAnnos should be (outputAnnos)
+ }
+
+}