aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/firrtlTests/options/RegistrationSpec.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-09-28 12:39:01 -0400
committerSchuyler Eldridge2018-11-07 13:26:09 -0500
commit27c1b366ce58e93434e77e964365474f5e7aa8d7 (patch)
treee54301b8019d17cce4448ce9d09589815a7315d5 /src/test/scala/firrtlTests/options/RegistrationSpec.scala
parente0951fef346c4e3e2d19a57b396012e9800b69b6 (diff)
Add firrtl.options tests
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/test/scala/firrtlTests/options/RegistrationSpec.scala')
-rw-r--r--src/test/scala/firrtlTests/options/RegistrationSpec.scala54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/options/RegistrationSpec.scala b/src/test/scala/firrtlTests/options/RegistrationSpec.scala
new file mode 100644
index 00000000..c060341d
--- /dev/null
+++ b/src/test/scala/firrtlTests/options/RegistrationSpec.scala
@@ -0,0 +1,54 @@
+// See LICENSE for license details.
+
+package firrtlTests.options
+
+import org.scalatest.{FlatSpec, Matchers}
+import scopt.OptionParser
+import java.util.ServiceLoader
+
+import firrtl.options.{RegisteredTransform, RegisteredLibrary}
+import firrtl.passes.Pass
+import firrtl.ir.Circuit
+import firrtl.annotations.NoTargetAnnotation
+import firrtl.AnnotationSeq
+
+case object HelloAnnotation extends NoTargetAnnotation
+
+class FooTransform extends Pass with RegisteredTransform {
+ def run(c: Circuit): Circuit = c
+ def addOptions(p: OptionParser[AnnotationSeq]): Unit =
+ p.opt[Unit]("hello")
+ .action( (_, c) => HelloAnnotation +: c )
+}
+
+class BarLibrary extends RegisteredLibrary {
+ def name: String = "Bar"
+ def addOptions(p: OptionParser[AnnotationSeq]): Unit =
+ p.opt[Unit]("world")
+ .action( (_, c) => HelloAnnotation +: c )
+}
+
+class RegistrationSpec extends FlatSpec with Matchers {
+
+ behavior of "RegisteredTransform"
+
+ it should "FooTransform should be discovered by Java.util.ServiceLoader" in {
+ val iter = ServiceLoader.load(classOf[RegisteredTransform]).iterator()
+ val transforms = scala.collection.mutable.ArrayBuffer[RegisteredTransform]()
+ while (iter.hasNext) {
+ transforms += iter.next()
+ }
+ transforms.map(_.getClass.getName) should contain ("firrtlTests.options.FooTransform")
+ }
+
+ behavior of "RegisteredLibrary"
+
+ it should "BarLibrary be discovered by Java.util.ServiceLoader" in {
+ val iter = ServiceLoader.load(classOf[RegisteredLibrary]).iterator()
+ val transforms = scala.collection.mutable.ArrayBuffer[RegisteredLibrary]()
+ while (iter.hasNext) {
+ transforms += iter.next()
+ }
+ transforms.map(_.getClass.getName) should contain ("firrtlTests.options.BarLibrary")
+ }
+}