summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala')
-rw-r--r--src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala b/src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala
new file mode 100644
index 00000000..0bf8741e
--- /dev/null
+++ b/src/test/scala/chiselTests/ScalaIntervalSimulatorTest.scala
@@ -0,0 +1,96 @@
+// See README.md for license details.
+
+package chiselTests
+
+import chisel3._
+import chisel3.experimental._
+import org.scalatest.{FreeSpec, Matchers}
+
+class ScalaIntervalSimulatorSpec extends FreeSpec with Matchers {
+ "clip tests" - {
+ "Should work for closed ranges" in {
+ val sim = ScalaIntervalSimulator(range"[2,4]")
+ sim.clip(BigDecimal(1.0)) should be (2.0)
+ sim.clip(BigDecimal(2.0)) should be (2.0)
+ sim.clip(BigDecimal(3.0)) should be (3.0)
+ sim.clip(BigDecimal(4.0)) should be (4.0)
+ sim.clip(BigDecimal(5.0)) should be (4.0)
+ }
+ "Should work for closed ranges with binary point" in {
+ val sim = ScalaIntervalSimulator(range"[2,6].2")
+ sim.clip(BigDecimal(1.75)) should be (2.0)
+ sim.clip(BigDecimal(2.0)) should be (2.0)
+ sim.clip(BigDecimal(2.25)) should be (2.25)
+ sim.clip(BigDecimal(2.5)) should be (2.5)
+ sim.clip(BigDecimal(5.75)) should be (5.75)
+ sim.clip(BigDecimal(6.0)) should be (6.0)
+ sim.clip(BigDecimal(6.25)) should be (6.0)
+ sim.clip(BigDecimal(6.5)) should be (6.0)
+ sim.clip(BigDecimal(8.5)) should be (6.0)
+ }
+ "Should work for open ranges" in {
+ val sim = ScalaIntervalSimulator(range"(2,4)")
+ sim.clip(BigDecimal(1.0)) should be (3.0)
+ sim.clip(BigDecimal(2.0)) should be (3.0)
+ sim.clip(BigDecimal(3.0)) should be (3.0)
+ sim.clip(BigDecimal(4.0)) should be (3.0)
+ sim.clip(BigDecimal(5.0)) should be (3.0)
+ }
+ "Should work for open ranges with binary point" in {
+ val sim = ScalaIntervalSimulator(range"(2,6).2")
+ sim.clip(BigDecimal(1.75)) should be (2.25)
+ sim.clip(BigDecimal(2.0)) should be (2.25)
+ sim.clip(BigDecimal(2.25)) should be (2.25)
+ sim.clip(BigDecimal(2.5)) should be (2.5)
+ sim.clip(BigDecimal(5.75)) should be (5.75)
+ sim.clip(BigDecimal(6.0)) should be (5.75)
+ sim.clip(BigDecimal(6.25)) should be (5.75)
+ sim.clip(BigDecimal(6.5)) should be (5.75)
+ sim.clip(BigDecimal(8.5)) should be (5.75)
+ }
+ }
+ "wrap tests" - {
+ "Should work for closed ranges" in {
+ val sim = ScalaIntervalSimulator(range"[2,6]")
+ sim.wrap(BigDecimal(1.0)) should be (6.0)
+ sim.wrap(BigDecimal(2.0)) should be (2.0)
+ sim.wrap(BigDecimal(3.0)) should be (3.0)
+ sim.wrap(BigDecimal(4.0)) should be (4.0)
+ sim.wrap(BigDecimal(5.0)) should be (5.0)
+ sim.wrap(BigDecimal(6.0)) should be (6.0)
+ sim.wrap(BigDecimal(7.0)) should be (2.0)
+ }
+ "Should work for closed ranges with binary point" in {
+ val sim = ScalaIntervalSimulator(range"[2,6].2")
+ sim.wrap(BigDecimal(1.75)) should be (6.0)
+ sim.wrap(BigDecimal(2.0)) should be (2.0)
+ sim.wrap(BigDecimal(2.25)) should be (2.25)
+ sim.wrap(BigDecimal(2.5)) should be (2.5)
+ sim.wrap(BigDecimal(5.75)) should be (5.75)
+ sim.wrap(BigDecimal(6.0)) should be (6.0)
+ sim.wrap(BigDecimal(6.25)) should be (2.0)
+ sim.wrap(BigDecimal(6.5)) should be (2.25)
+ }
+ "Should work for open ranges" in {
+ val sim = ScalaIntervalSimulator(range"(2,6)")
+ sim.wrap(BigDecimal(1.0)) should be (4.0)
+ sim.wrap(BigDecimal(2.0)) should be (5.0)
+ sim.wrap(BigDecimal(3.0)) should be (3.0)
+ sim.wrap(BigDecimal(4.0)) should be (4.0)
+ sim.wrap(BigDecimal(5.0)) should be (5.0)
+ sim.wrap(BigDecimal(6.0)) should be (3.0)
+ sim.wrap(BigDecimal(7.0)) should be (4.0)
+ }
+ "Should work for open ranges with binary point" in {
+ val sim = ScalaIntervalSimulator(range"(2,6).2")
+ sim.wrap(BigDecimal(1.75)) should be (5.5)
+ sim.wrap(BigDecimal(2.0)) should be (5.75)
+ sim.wrap(BigDecimal(2.25)) should be (2.25)
+ sim.wrap(BigDecimal(2.5)) should be (2.5)
+ sim.wrap(BigDecimal(5.75)) should be (5.75)
+ sim.wrap(BigDecimal(6.0)) should be (2.25)
+ sim.wrap(BigDecimal(6.25)) should be (2.5)
+ sim.wrap(BigDecimal(7.0)) should be (3.25)
+ }
+ }
+}