diff options
Diffstat (limited to 'src/test/scala/chiselTests')
| -rw-r--r-- | src/test/scala/chiselTests/ChiselSpec.scala | 14 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/Counter.scala | 19 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/ChiselSpec.scala b/src/test/scala/chiselTests/ChiselSpec.scala index 7980e772..9518fb5c 100644 --- a/src/test/scala/chiselTests/ChiselSpec.scala +++ b/src/test/scala/chiselTests/ChiselSpec.scala @@ -150,6 +150,20 @@ class ChiselPropSpec extends PropSpec with ChiselRunners with ScalaCheckProperty // Generator for small positive integers. val smallPosInts = Gen.choose(1, 4) + // Generator for positive (ascending or descending) ranges. + def posRange: Gen[Range] = for { + dir <- Gen.oneOf(true, false) + step <- Gen.choose(1, 3) + m <- Gen.choose(1, 10) + n <- Gen.choose(1, 10) + } yield { + if (dir) { + Range(m, (m+n)*step, step) + } else { + Range((m+n)*step, m, -step) + } + } + // Generator for widths considered "safe". val safeUIntWidth = Gen.choose(1, 30) diff --git a/src/test/scala/chiselTests/Counter.scala b/src/test/scala/chiselTests/Counter.scala index 34fdec8e..31bfe7eb 100644 --- a/src/test/scala/chiselTests/Counter.scala +++ b/src/test/scala/chiselTests/Counter.scala @@ -35,6 +35,19 @@ class WrapTester(max: Int) extends BasicTester { } } +class RangeTester(r: Range) extends BasicTester { + val (cnt, wrap) = Counter(r) + val checkWrap = RegInit(false.B) + + when(checkWrap) { + assert(cnt === r.head.U) + stop() + }.elsewhen(wrap) { + assert(cnt === r.last.U) + checkWrap := true.B + } +} + class CounterSpec extends ChiselPropSpec { property("Counter should count up") { forAll(smallPosInts) { (max: Int) => assertTesterPasses{ new CountTester(max) } } @@ -47,4 +60,10 @@ class CounterSpec extends ChiselPropSpec { property("Counter should wrap") { forAll(smallPosInts) { (max: Int) => assertTesterPasses{ new WrapTester(max) } } } + + property("Counter should handle a range") { + forAll(posRange) { (r: Range) => + assertTesterPasses{ new RangeTester(r) } + } + } } |
