summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-10-22 19:33:59 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2017-10-22 19:33:59 -0700
commitd57ad0b63b54076d9182fdb75df9e38c8b30b58c (patch)
tree2df0a7b201676df1460915023ef48e4b4a0fd9df /src/test
parent3bfac52e0f81dfcdaf892d631ff14d7e9f9190cc (diff)
downloadmill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.tar.gz
mill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.tar.bz2
mill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.zip
Move to caching based on label instead of Target object
`anonTriple` test currently fails, because both `AnonTriple.down` and `AnonTriple.down.inputs(0)` end up picking up the same label...
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/forge/ForgeTests.scala42
1 files changed, 37 insertions, 5 deletions
diff --git a/src/test/scala/forge/ForgeTests.scala b/src/test/scala/forge/ForgeTests.scala
index a869ae4a..07e753c6 100644
--- a/src/test/scala/forge/ForgeTests.scala
+++ b/src/test/scala/forge/ForgeTests.scala
@@ -15,13 +15,17 @@ object ForgeTests extends TestSuite{
val up = test()
val down = test(up)
}
+ object AnonTriple{
+ val up = test()
+ val down = test(test(up))
+ }
object Diamond{
val up = test()
val left = test(up)
val right = test(up)
val down = test(left, right)
}
- object AnonymousDiamond{
+ object AnonDiamond{
val up = test()
val down = test(test(up), test(up))
}
@@ -39,6 +43,10 @@ object ForgeTests extends TestSuite{
targets = Seq(Pair.down),
expected = Seq(Pair.up, Pair.down)
)
+ 'anonTriple - check(
+ targets = Seq(AnonTriple.down),
+ expected = Seq(AnonTriple.up, AnonTriple.down.inputs(0), AnonTriple.down)
+ )
'diamond - check(
targets = Seq(Diamond.down),
expected = Seq(Diamond.up, Diamond.left, Diamond.right, Diamond.down)
@@ -70,15 +78,39 @@ object ForgeTests extends TestSuite{
check(Seq(single), values = Seq(0), evaluated = Seq(single))
// Second time the value is already cached, so no evaluation needed
check(Seq(single), values = Seq(0), evaluated = Seq())
- Singleton.single.counter += 1
+ single.counter += 1
// After incrementing the counter, it forces re-evaluation
check(Seq(single), values = Seq(1), evaluated = Seq(single))
// Then it's cached again
check(Seq(single), values = Seq(1), evaluated = Seq())
}
-// 'pair - {
-//
-// }
+ 'pair - {
+ import Pair._
+ check(Seq(down), values = Seq(0), evaluated = Seq(up, down))
+ check(Seq(down), values = Seq(0), evaluated = Seq())
+
+ down.counter += 1
+ check(Seq(down), values = Seq(1), evaluated = Seq(down))
+ check(Seq(down), values = Seq(1), evaluated = Seq())
+
+ up.counter += 1
+ check(Seq(down), values = Seq(2), evaluated = Seq(up, down))
+ check(Seq(down), values = Seq(2), evaluated = Seq())
+ }
+ 'anonTriple - {
+ import AnonTriple._
+ val middle = down.inputs(0)
+ check(Seq(down), values = Seq(0), evaluated = Seq(up, middle, down))
+ check(Seq(down), values = Seq(0), evaluated = Seq())
+
+ down.counter += 1
+ check(Seq(down), values = Seq(1), evaluated = Seq(middle, down))
+ check(Seq(down), values = Seq(1), evaluated = Seq())
+
+ up.counter += 1
+ check(Seq(down), values = Seq(2), evaluated = Seq(up, middle, down))
+ check(Seq(down), values = Seq(2), evaluated = Seq())
+ }
}
}