aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/firrtlTests/PassTests.scala
diff options
context:
space:
mode:
authorDavid Biancolin2020-03-17 13:26:40 -0700
committerGitHub2020-03-17 13:26:40 -0700
commitba1f24345ac5ab20c669c73b871920001ac3a8ed (patch)
treea6a55fafd5f68c35e574a34842930165af5631ad /src/test/scala/firrtlTests/PassTests.scala
parentd0500b33167cad060a9325d68b939d41279f6c9c (diff)
[RFC] Factor out common test classes; package them (#1412)
* Pull out common test utilities into a separate package * Project a fat jar for test utilities Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
Diffstat (limited to 'src/test/scala/firrtlTests/PassTests.scala')
-rw-r--r--src/test/scala/firrtlTests/PassTests.scala106
1 files changed, 0 insertions, 106 deletions
diff --git a/src/test/scala/firrtlTests/PassTests.scala b/src/test/scala/firrtlTests/PassTests.scala
deleted file mode 100644
index 3d2bc249..00000000
--- a/src/test/scala/firrtlTests/PassTests.scala
+++ /dev/null
@@ -1,106 +0,0 @@
-// See LICENSE for license details.
-
-package firrtlTests
-
-import org.scalatest.FlatSpec
-import firrtl.ir.Circuit
-import firrtl.passes.{PassExceptions, RemoveEmpty}
-import firrtl.transforms.DedupModules
-import firrtl._
-import firrtl.annotations._
-import logger._
-
-// An example methodology for testing Firrtl Passes
-// Spec class should extend this class
-abstract class SimpleTransformSpec extends FlatSpec with FirrtlMatchers with Compiler with LazyLogging {
- // Utility function
- def squash(c: Circuit): Circuit = RemoveEmpty.run(c)
-
- // Executes the test. Call in tests.
- // annotations cannot have default value because scalatest trait Suite has a default value
- def execute(input: String, check: String, annotations: Seq[Annotation]): CircuitState = {
- val finalState = compileAndEmit(CircuitState(parse(input), ChirrtlForm, annotations))
- val actual = RemoveEmpty.run(parse(finalState.getEmittedCircuit.value)).serialize
- val expected = parse(check).serialize
- logger.debug(actual)
- logger.debug(expected)
- (actual) should be (expected)
- finalState
- }
-
- def executeWithAnnos(input: String, check: String, annotations: Seq[Annotation],
- checkAnnotations: Seq[Annotation]): CircuitState = {
- val finalState = compileAndEmit(CircuitState(parse(input), ChirrtlForm, annotations))
- val actual = RemoveEmpty.run(parse(finalState.getEmittedCircuit.value)).serialize
- val expected = parse(check).serialize
- logger.debug(actual)
- logger.debug(expected)
- (actual) should be (expected)
-
- annotations.foreach { anno =>
- logger.debug(anno.serialize)
- }
-
- finalState.annotations.toSeq.foreach { anno =>
- logger.debug(anno.serialize)
- }
- checkAnnotations.foreach { check =>
- (finalState.annotations.toSeq) should contain (check)
- }
- finalState
- }
- // Executes the test, should throw an error
- // No default to be consistent with execute
- def failingexecute(input: String, annotations: Seq[Annotation]): Exception = {
- intercept[PassExceptions] {
- compile(CircuitState(parse(input), ChirrtlForm, annotations), Seq.empty)
- }
- }
-}
-
-class CustomResolveAndCheck(form: CircuitForm) extends SeqTransform {
- def inputForm = form
- def outputForm = form
- def transforms: Seq[Transform] = Seq[Transform](new ResolveAndCheck)
-}
-
-trait LowTransformSpec extends SimpleTransformSpec {
- def emitter = new LowFirrtlEmitter
- def transform: Transform
- def transforms: Seq[Transform] = Seq(
- new ChirrtlToHighFirrtl(),
- new IRToWorkingIR(),
- new ResolveAndCheck(),
- new DedupModules(),
- new HighFirrtlToMiddleFirrtl(),
- new MiddleFirrtlToLowFirrtl(),
- new CustomResolveAndCheck(LowForm),
- transform
- )
-}
-
-trait MiddleTransformSpec extends SimpleTransformSpec {
- def emitter = new MiddleFirrtlEmitter
- def transform: Transform
- def transforms: Seq[Transform] = Seq(
- new ChirrtlToHighFirrtl(),
- new IRToWorkingIR(),
- new ResolveAndCheck(),
- new DedupModules(),
- new HighFirrtlToMiddleFirrtl(),
- new CustomResolveAndCheck(MidForm),
- transform
- )
-}
-
-trait HighTransformSpec extends SimpleTransformSpec {
- def emitter = new HighFirrtlEmitter
- def transform: Transform
- def transforms = Seq(
- new ChirrtlToHighFirrtl(),
- new IRToWorkingIR(),
- new CustomResolveAndCheck(HighForm),
- new DedupModules(),
- transform
- )
-}