summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/test/scala/forge/CacherTests.scala53
-rw-r--r--core/src/test/scala/forge/MacroErrorTests.scala63
2 files changed, 63 insertions, 53 deletions
diff --git a/core/src/test/scala/forge/CacherTests.scala b/core/src/test/scala/forge/CacherTests.scala
index 11ecdfce..4c346e5e 100644
--- a/core/src/test/scala/forge/CacherTests.scala
+++ b/core/src/test/scala/forge/CacherTests.scala
@@ -46,58 +46,5 @@ object CacherTests extends TestSuite{
eval(Terminal, Terminal.value) == 7,
eval(Terminal, Terminal.overriden) == 1
)
- 'errors{
- val expectedMsg =
- "T{} members defined in a Cacher class/trait/object body must be defs"
-
- val err = compileError("object Foo extends Target.Cacher{ val x = T{1} }")
- assert(err.msg == expectedMsg)
- }
- 'badTmacro - {
- // Make sure we can reference values from outside the T{...} block as part
- // of our `Target#apply()` calls, but we cannot reference any values that
- // come from inside the T{...} block
- 'pos - {
- val a = T{ 1 }
- val arr = Array(a)
- val b = {
- val c = 0
- T{
- arr(c)()
- }
- }
- }
- 'neg - {
-
- val expectedMsg =
- "Target#apply() call cannot use `value n` defined within the T{...} block"
- val err = compileError("""{
- val a = T{ 1 }
- val arr = Array(a)
- val b = {
- T{
- val n = 0
- arr(n)()
- }
- }
- }""")
- assert(err.msg == expectedMsg)
- }
- 'neg2 - {
-
- val expectedMsg =
- "Target#apply() call cannot use `value x` defined within the T{...} block"
- val err = compileError("""{
- val a = T{ 1 }
- val arr = Array(a)
- val b = {
- T{
- arr.map{x => x()}
- }
- }
- }""")
- assert(err.msg == expectedMsg)
- }
- }
}
}
diff --git a/core/src/test/scala/forge/MacroErrorTests.scala b/core/src/test/scala/forge/MacroErrorTests.scala
new file mode 100644
index 00000000..29f68f4d
--- /dev/null
+++ b/core/src/test/scala/forge/MacroErrorTests.scala
@@ -0,0 +1,63 @@
+package forge
+
+import utest._
+
+object MacroErrorTests extends TestSuite{
+
+ val tests = Tests{
+
+ 'errors{
+ val expectedMsg =
+ "T{} members defined in a Cacher class/trait/object body must be defs"
+
+ val err = compileError("object Foo extends Target.Cacher{ val x = T{1} }")
+ assert(err.msg == expectedMsg)
+ }
+ 'badTmacro - {
+ // Make sure we can reference values from outside the T{...} block as part
+ // of our `Target#apply()` calls, but we cannot reference any values that
+ // come from inside the T{...} block
+ 'pos - {
+ val a = T{ 1 }
+ val arr = Array(a)
+ val b = {
+ val c = 0
+ T{
+ arr(c)()
+ }
+ }
+ }
+ 'neg - {
+
+ val expectedMsg =
+ "Target#apply() call cannot use `value n` defined within the T{...} block"
+ val err = compileError("""{
+ val a = T{ 1 }
+ val arr = Array(a)
+ val b = {
+ T{
+ val n = 0
+ arr(n)()
+ }
+ }
+ }""")
+ assert(err.msg == expectedMsg)
+ }
+ 'neg2 - {
+
+ val expectedMsg =
+ "Target#apply() call cannot use `value x` defined within the T{...} block"
+ val err = compileError("""{
+ val a = T{ 1 }
+ val arr = Array(a)
+ val b = {
+ T{
+ arr.map{x => x()}
+ }
+ }
+ }""")
+ assert(err.msg == expectedMsg)
+ }
+ }
+ }
+}