aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAdam Izraelevitz2020-03-06 18:03:55 -0800
committerGitHub2020-03-07 02:03:55 +0000
commitdd72b24dde5b28aef4a3728fdb770e26f5dbc54d (patch)
tree908ab02e878509a1734562851baa82732cfa8d18 /src/test
parent140a29a851a9e5b0b1cd486cc5ba53c3ff763f27 (diff)
Add firrtl-json serializers (#1430)
* Add firrtl-json serializers * Added support for ports, info. Added docs and tests
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)
+ }
+
+}