diff options
Diffstat (limited to 'src/test/scala/forge/EvaluationTests.scala')
-rw-r--r-- | src/test/scala/forge/EvaluationTests.scala | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/src/test/scala/forge/EvaluationTests.scala b/src/test/scala/forge/EvaluationTests.scala index cecbf5f1..d80781c0 100644 --- a/src/test/scala/forge/EvaluationTests.scala +++ b/src/test/scala/forge/EvaluationTests.scala @@ -7,30 +7,36 @@ import utest._ object EvaluationTests extends TestSuite{ + val workspace = jnio.Paths.get("target/workspace") val tests = Tests{ - val baseCtx = DefCtx("forge.ForgeTests.tests ", None) - val graphs = new TestUtil.TestGraphs() import graphs._ 'evaluateSingle - { - val evaluator = new Evaluator(jnio.Paths.get("target/workspace"), baseCtx) - def check(target: Target[_], expValue: Any, expEvaled: OSet[Target[_]]) = { - val Evaluator.Results(returnedValues, returnedEvaluated) = evaluator.evaluate(OSet(target)) - assert( - returnedValues == Seq(expValue), - returnedEvaluated == expEvaled - ) - // Second time the value is already cached, so no evaluation needed - val Evaluator.Results(returnedValues2, returnedEvaluated2) = evaluator.evaluate(OSet(target)) - assert( - returnedValues2 == returnedValues, - returnedEvaluated2 == OSet() + + class Checker[T: Discovered](base: T) { + val evaluator = new Evaluator( + workspace, + implicitly[Discovered[T]].apply(base).map(_.swap).toMap ) + def apply(target: Target[_], expValue: Any, expEvaled: OSet[Target[_]]) = { + val Evaluator.Results(returnedValues, returnedEvaluated) = evaluator.evaluate(OSet(target)) + assert( + returnedValues == Seq(expValue), + returnedEvaluated == expEvaled + ) + // Second time the value is already cached, so no evaluation needed + val Evaluator.Results(returnedValues2, returnedEvaluated2) = evaluator.evaluate(OSet(target)) + assert( + returnedValues2 == returnedValues, + returnedEvaluated2 == OSet() + ) + } } 'singleton - { import singleton._ + val check = new Checker(singleton) // First time the target is evaluated check(single, expValue = 0, expEvaled = OSet(single)) @@ -40,16 +46,20 @@ object EvaluationTests extends TestSuite{ } 'pair - { import pair._ + val check = new Checker(pair) check(down, expValue = 0, expEvaled = OSet(up, down)) + println("=" * 20 + "incrementing down.counter" + "=" * 20) down.counter += 1 check(down, expValue = 1, expEvaled = OSet(down)) + println("=" * 20 + "incrementing up.counter" + "=" * 20) up.counter += 1 check(down, expValue = 2, expEvaled = OSet(up, down)) } 'anonTriple - { import anonTriple._ + val check = new Checker(anonTriple) val middle = down.inputs(0) check(down, expValue = 0, expEvaled = OSet(up, middle, down)) @@ -65,6 +75,7 @@ object EvaluationTests extends TestSuite{ } 'diamond - { import diamond._ + val check = new Checker(diamond) check(down, expValue = 0, expEvaled = OSet(up, left, right, down)) down.counter += 1 @@ -82,6 +93,7 @@ object EvaluationTests extends TestSuite{ } 'anonDiamond - { import anonDiamond._ + val check = new Checker(anonDiamond) val left = down.inputs(0).asInstanceOf[Target.Test] val right = down.inputs(1).asInstanceOf[Target.Test] check(down, expValue = 0, expEvaled = OSet(up, left, right, down)) @@ -99,15 +111,6 @@ object EvaluationTests extends TestSuite{ right.counter += 1 check(down, expValue = 5, expEvaled = OSet(left, right, down)) } -// 'anonImpureDiamond - { -// import AnonImpureDiamond._ -// val left = down.inputs(0).asInstanceOf[Target.Test] -// val right = down.inputs(1).asInstanceOf[Target.Test] -// check(down, expValue = 0, expEvaled = Seq(up, left, right, down)) -// -// down.counter += 1 -// check(down, expValue = 1, expEvaled = Seq(left, down)) -// } } |