summaryrefslogtreecommitdiff
path: root/core/src/test/scala/forge/CacherTests.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-04 13:35:04 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-04 13:35:04 -0700
commitc103d7b024c3b0edce800c0dbd4cfaffd1aabfba (patch)
tree9f05c389e8909ae26cd54245af45d5649c1891e9 /core/src/test/scala/forge/CacherTests.scala
parentabc88346a0e296a44fd9627e2a4fea6d609f7771 (diff)
downloadmill-c103d7b024c3b0edce800c0dbd4cfaffd1aabfba.tar.gz
mill-c103d7b024c3b0edce800c0dbd4cfaffd1aabfba.tar.bz2
mill-c103d7b024c3b0edce800c0dbd4cfaffd1aabfba.zip
Add some tests to verify Cacher happy-paths
Diffstat (limited to 'core/src/test/scala/forge/CacherTests.scala')
-rw-r--r--core/src/test/scala/forge/CacherTests.scala50
1 files changed, 50 insertions, 0 deletions
diff --git a/core/src/test/scala/forge/CacherTests.scala b/core/src/test/scala/forge/CacherTests.scala
new file mode 100644
index 00000000..4c346e5e
--- /dev/null
+++ b/core/src/test/scala/forge/CacherTests.scala
@@ -0,0 +1,50 @@
+package forge
+
+import forge.util.OSet
+import utest._
+import utest.framework.TestPath
+
+object CacherTests extends TestSuite{
+ object Base extends Base
+ trait Base extends Target.Cacher{
+ def value = T{ 1 }
+ }
+ object Middle extends Middle
+ trait Middle extends Base{
+ override def value = T{ super.value() + 2}
+ def overriden = T{ super.value()}
+ }
+ object Terminal extends Terminal
+ trait Terminal extends Middle{
+ override def value = T{ super.value() + 4}
+ }
+
+ val tests = Tests{
+
+
+ def eval[T: Discovered, V](base: T, v: Target[V])(implicit tp: TestPath) = {
+ val workspace = ammonite.ops.pwd / 'target / 'workspace / tp.value
+ val evaluator = new Evaluator(workspace, Discovered.mapping(base))
+ evaluator.evaluate(OSet(v)).values(0)
+ }
+
+ 'simpleDefIsCached - assert(
+ Base.value eq Base.value,
+ eval(Base, Base.value) == 1
+ )
+
+ 'overridingDefIsAlsoCached - assert(
+ eval(Middle, Middle.value) == 3,
+ Middle.value eq Middle.value
+ )
+
+ 'overridenDefRemainsAvailable - assert(
+ eval(Middle, Middle.overriden) == 1
+ )
+
+ 'multipleOverridesWork- assert(
+ eval(Terminal, Terminal.value) == 7,
+ eval(Terminal, Terminal.overriden) == 1
+ )
+ }
+}