diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/AnalyzerTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/AnalyzerTest.scala index 989647382..a7b02d97b 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/AnalyzerTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/AnalyzerTest.scala @@ -1,6 +1,7 @@ package com.avsystem.commons package analyzer +import com.avsystem.commons.analyzer.AnalyzerTest.ScalaInterpolator import org.scalactic.source.Position import org.scalatest.Assertions @@ -25,11 +26,6 @@ trait AnalyzerTest { this: Assertions => run.compileSources(List(new BatchSourceFile("test.scala", source))) } - def assertErrors(source: String)(implicit pos: Position): Unit = { - compile(source) - assert(compiler.reporter.hasErrors) - } - def assertErrors(errors: Int, source: String)(implicit pos: Position): Unit = { compile(source) assert(compiler.reporter.errorCount == errors) @@ -39,4 +35,12 @@ trait AnalyzerTest { this: Assertions => compile(source) assert(!compiler.reporter.hasErrors) } + + implicit final def stringContextToScalaInterpolator(sc: StringContext): ScalaInterpolator = new ScalaInterpolator(sc) +} + +object AnalyzerTest { + final class ScalaInterpolator(private val sc: StringContext) extends AnyVal { + def scala(args: Any*): String = s"object TopLevel {${sc.s(args *)}}" + } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/Any2StringAddTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/Any2StringAddTest.scala index 0da8b89c1..9727170c1 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/Any2StringAddTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/Any2StringAddTest.scala @@ -3,34 +3,29 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class Any2StringAddTest extends AnyFunSuite with AnalyzerTest { +final class Any2StringAddTest extends AnyFunSuite with AnalyzerTest { test("any2stringadd should be rejected") { - assertErrors( - """ - |object whatever { - | whatever + "fag" - |} - """.stripMargin - ) + assertErrors(1, + scala""" + |val any: Any = ??? + |any + "fag" + |""".stripMargin) } test("toString should not be rejected") { assertNoErrors( - """ - |object whatever { - | whatever.toString + "fag" - |} - """.stripMargin + scala""" + |val any: Any = ??? + |any.toString + "fag" + |""".stripMargin ) } test("string interpolation should not be rejected") { assertNoErrors( - """ - |object whatever { - | s"${whatever}fag" - |} - """.stripMargin - ) + scala""" + |val any: Any = ??? + |s"$${any}fag" + |""".stripMargin) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/BadSingletonComponentTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/BadSingletonComponentTest.scala index d6e5c1037..a8c4bf51a 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/BadSingletonComponentTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/BadSingletonComponentTest.scala @@ -3,27 +3,27 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class BadSingletonComponentTest extends AnyFunSuite with AnalyzerTest { +final class BadSingletonComponentTest extends AnyFunSuite with AnalyzerTest { test("general") { assertErrors(5, - """ - |import com.avsystem.commons.di._ - | - |object test extends Components { - | singleton(123) - | val notDef = singleton(123) - | def hasParams(param: Int) = singleton(param) - | def hasTypeParams[T]: Component[T] = singleton(???) - | def outerMethod: Component[Int] = { - | def innerMethod = singleton(123) - | innerMethod - | } - | - | def good: Component[Int] = singleton(123) - | def alsoGood: Component[Int] = { singleton(123) } - | def goodAsWell: Component[Int] = singleton(123).dependsOn(good) - |} - """.stripMargin + scala""" + |import com.avsystem.commons.di._ + | + |object test extends Components { + | singleton(123) + | val notDef = singleton(123) + | def hasParams(param: Int) = singleton(param) + | def hasTypeParams[T]: Component[T] = singleton(???) + | def outerMethod: Component[Int] = { + | def innerMethod = singleton(123) + | innerMethod + | } + | + | def good: Component[Int] = singleton(123) + | def alsoGood: Component[Int] = { singleton(123) } + | def goodAsWell: Component[Int] = singleton(123).dependsOn(good) + |} + |""".stripMargin ) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/BasePackageTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/BasePackageTest.scala index 1d6a03009..357a2ab79 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/BasePackageTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/BasePackageTest.scala @@ -3,10 +3,11 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class BasePackageTest extends AnyFunSuite with AnalyzerTest { +final class BasePackageTest extends AnyFunSuite with AnalyzerTest { settings.pluginOptions.value ++= List("AVSystemAnalyzer:+basePackage:com.avsystem.commons") test("base package only") { + //language=Scala assertNoErrors( """ |package com.avsystem.commons @@ -17,6 +18,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("chained base package") { assertNoErrors( + //language=Scala """ |package com.avsystem |package commons @@ -27,6 +29,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("base package with chained subpackage") { assertNoErrors( + //language=Scala """ |package com.avsystem.commons |package core @@ -37,6 +40,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("base package object") { assertNoErrors( + //language=Scala """ |package com.avsystem | @@ -46,6 +50,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("base package object with imports") { assertNoErrors( + //language=Scala """ |package com.avsystem | @@ -58,6 +63,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("no base package") { assertErrors(1, + //language=Scala """ |object bar |""".stripMargin) @@ -65,6 +71,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("no base package with imports") { assertErrors(1, + //language=Scala """ |import scala.collection.mutable.Seq |import scala.collection.mutable.Set @@ -76,6 +83,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("wrong base package") { assertErrors(1, + //language=Scala """ |package com.avsystem.kommons | @@ -85,6 +93,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("unchained subpackage") { assertErrors(1, + //language=Scala """ |package com.avsystem.commons.core | @@ -94,6 +103,7 @@ class BasePackageTest extends AnyFunSuite with AnalyzerTest { test("unchained subpackage with imports") { assertErrors(1, + //language=Scala """ |package com.avsystem.commons.core | diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckBincompatTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckBincompatTest.scala index 94d9946b3..90016987e 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckBincompatTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckBincompatTest.scala @@ -3,40 +3,40 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class CheckBincompatTest extends AnyFunSuite with AnalyzerTest { +final class CheckBincompatTest extends AnyFunSuite with AnalyzerTest { test("definitions of @bincompat annotated symbols should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.annotation.bincompat - | - |@bincompat class klass - | - |@bincompat object objekt { - | @bincompat def method: Int = 42 - |} - """.stripMargin + scala""" + |import com.avsystem.commons.annotation.bincompat + | + |@bincompat class klass + | + |@bincompat object objekt { + | @bincompat def method: Int = 42 + |} + |""".stripMargin ) } test("usage of @bincompat annotated symbols should be rejected") { assertErrors(3, - """ - |import com.avsystem.commons.annotation.bincompat - | - |@bincompat class klass - | - |@bincompat object objekt - | - |object outer { - | @bincompat def method: Int = 42 - |} - | - |object test { - | println(objekt) - | println(new klass) - | println(outer.method) - |} - """.stripMargin + scala""" + |import com.avsystem.commons.annotation.bincompat + | + |@bincompat class klass + | + |@bincompat object objekt + | + |object outer { + | @bincompat def method: Int = 42 + |} + | + |object test { + | println(objekt) + | println(new klass) + | println(outer.method) + |} + |""".stripMargin ) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckMacroPrivateTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckMacroPrivateTest.scala index dd5765c62..7ecdcaf7c 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckMacroPrivateTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/CheckMacroPrivateTest.scala @@ -1,59 +1,60 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class CheckMacroPrivateTest extends AnyFunSuite with AnalyzerTest { +final class CheckMacroPrivateTest extends AnyFunSuite with AnalyzerTest { test("macro private method invoked directly should be rejected") { - assertErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object test { - | TestUtils.macroPrivateMethod - |} - """.stripMargin + assertErrors(1, + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |object test { + | TestUtils.macroPrivateMethod + |} + |""".stripMargin ) } test("macro private extractor used directly should be rejected") { - assertErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object test { - | 123 match { - | case TestUtils.Extractor(_) => - | } - |} - """.stripMargin + assertErrors(1, + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |object test { + | 123 match { + | case TestUtils.Extractor(_) => + | } + |} + |""".stripMargin ) } test("macro private method invoked by macro-generated code should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object test { - | TestUtils.invokeMacroPrivateMethod - |} - """.stripMargin + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |object test { + | TestUtils.invokeMacroPrivateMethod + |} + |""".stripMargin ) } test("definitions of macro private symbols themselves should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.annotation.macroPrivate - | - |object test { - | @macroPrivate def macroPrivateMethod = { println("whatever"); 5 } - | @macroPrivate object macroPrivateObject { - | final val X = 42 - | } - |} - """.stripMargin + scala""" + |import com.avsystem.commons.annotation.macroPrivate + | + |object test { + | @macroPrivate def macroPrivateMethod = { println("whatever"); 5 } + | @macroPrivate object macroPrivateObject { + | final val X = 42 + | } + |} + |""".stripMargin ) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ConstantDeclarationsTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ConstantDeclarationsTest.scala index a4e52edd4..6624b9f38 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ConstantDeclarationsTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ConstantDeclarationsTest.scala @@ -1,83 +1,78 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class ConstantDeclarationsTest extends AnyFunSuite with AnalyzerTest { +final class ConstantDeclarationsTest extends AnyFunSuite with AnalyzerTest { test("literal-valued constants should be non-lazy final vals with UpperCamelCase and no type annotation") { assertErrors(4, - """ - |object Whatever { - | // bad - | val a = 10 - | val B = 10 - | final val c = 10 - | final val D: Int = 10 - | - | // good - | final val E = 10 - |} - """.stripMargin) + scala""" + |// bad + |val a = 10 + |val B = 10 + |final val c = 10 + |final val D: Int = 10 + | + |// good + |final val E = 10 + |""".stripMargin) } test("effectively final, non-literal UpperCamelCase vals should be final") { assertErrors(1, - """ - |object Whatever { - | // bad - | val A = "foo".trim - | - | // good - | final val B = "foo".trim - | val c = "foo".trim - |} - """.stripMargin) + scala""" + |// bad + |val A = "foo".trim + | + |// good + |final val B = "foo".trim + |val c = "foo".trim + |""".stripMargin) } test("no constant checking in traits or non-final classes") { assertNoErrors( - """ - |trait Whatever { - | val a = 10 - | val B = 10 - | final val c = 10 - | final val D: Int = 10 - | val A = "foo".trim - |} - | - |class Stuff { - | val a = 10 - | val B = 10 - | final val c = 10 - | final val D: Int = 10 - | val A = "foo".trim - |} - """.stripMargin) + scala""" + |trait Whatever { + | val a = 10 + | val B = 10 + | final val c = 10 + | final val D: Int = 10 + | val A = "foo".trim + |} + | + |class Stuff { + | val a = 10 + | val B = 10 + | final val c = 10 + | final val D: Int = 10 + | val A = "foo".trim + |} + |""".stripMargin) } test("no constant checking for overrides") { assertNoErrors( - """ - |trait Whatever { - | def a: Int - |} - | - |object Stuff extends Whatever { - | val a: Int = 42 - |} - """.stripMargin) + scala""" + |trait Whatever { + | def a: Int + |} + | + |object Stuff extends Whatever { + | val a: Int = 42 + |} + |""".stripMargin) } test("no constant checking for privates") { assertNoErrors( - """ - |object Whatever { - | private val a = 10 - | private val B = 10 - | private final val c = 10 - | private final val D: Int = 10 - | private val A = "foo".trim - |} - """.stripMargin) + scala""" + |private val a = 10 + |private val B = 10 + |private final val c = 10 + |private final val D: Int = 10 + |private val A = "foo".trim + |""".stripMargin) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/DiscardedMonixTaskTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/DiscardedMonixTaskTest.scala index 61fc5df95..f08d8aed3 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/DiscardedMonixTaskTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/DiscardedMonixTaskTest.scala @@ -1,37 +1,36 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class DiscardedMonixTaskTest extends AnyFunSuite with AnalyzerTest { +final class DiscardedMonixTaskTest extends AnyFunSuite with AnalyzerTest { test("simple") { assertErrors(10, - """ - |import monix.eval.Task - | - |object whatever { - | def task: Task[String] = ??? - | - | // errors from these - | task - | - | { println(""); task } - | - | if(true) task else task - | - | try task catch { case _: Exception => task } finally task - | - | Seq(1,2,3).foreach(_ => task) - | - | while(true) task - | - | do task while(true) - | - | // no errors from these - | Seq(1,2,3).map(_ => task) - | val tsk = task - |} - """.stripMargin + scala""" + |import monix.eval.Task + | + |def task: Task[String] = ??? + | + |// errors from these + |task + | + |{ println(""); task } + | + |if(true) task else task + | + |try task catch { case _: Exception => task } finally task + | + |Seq(1,2,3).foreach(_ => task) + | + |while(true) task + | + |do task while(true) + | + |// no errors from these + |Seq(1,2,3).map(_ => task) + |val tsk = task + |""".stripMargin ) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ExplicitGenericsTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ExplicitGenericsTest.scala index aa6e0417a..575bbce51 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ExplicitGenericsTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ExplicitGenericsTest.scala @@ -1,55 +1,44 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class ExplicitGenericsTest extends AnyFunSuite with AnalyzerTest { +final class ExplicitGenericsTest extends AnyFunSuite with AnalyzerTest { test("inferred generic should be rejected") { - assertErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | val x = TestUtils.genericMethod(123) - |} - """.stripMargin - ) + assertErrors(1, + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |val x = TestUtils.genericMethod(123) + |""".stripMargin) } test("inferred generic in macro should be rejected") { - assertErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | val x = TestUtils.genericMacro(123) - |} - """.stripMargin - ) + assertErrors(1, + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |val x = TestUtils.genericMacro(123) + |""".stripMargin) } test("explicit generic should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | val x = TestUtils.genericMethod[Int](123) - |} - """.stripMargin - ) + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |val x = TestUtils.genericMethod[Int](123) + |""".stripMargin) } test("explicit generic in macro should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | val x = TestUtils.genericMacro[Int](123) - |} - """.stripMargin - ) + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |val x = TestUtils.genericMacro[Int](123) + |""".stripMargin) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/FindUsagesTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/FindUsagesTest.scala index f1a7fd471..75972ebea 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/FindUsagesTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/FindUsagesTest.scala @@ -1,18 +1,13 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class FindUsagesTest extends AnyFunSuite with AnalyzerTest { +final class FindUsagesTest extends AnyFunSuite with AnalyzerTest { settings.pluginOptions.value ++= List("AVSystemAnalyzer:+findUsages:java.lang.String") test("java.lang.String usages should be found") { - assertErrors(2, - """ - |object whatever { - | val x: String = String.valueOf(123) - |} - """.stripMargin - ) + assertErrors(2, scala"val x: String = String.valueOf(123)") } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImplicitTypesTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImplicitTypesTest.scala index f7d07a83f..6d148b23b 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImplicitTypesTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImplicitTypesTest.scala @@ -1,20 +1,19 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class ImplicitTypesTest extends AnyFunSuite with AnalyzerTest { +final class ImplicitTypesTest extends AnyFunSuite with AnalyzerTest { test("implicit definitions without explicit types should be rejected") { assertErrors(2, - """ - |object whatever { - | implicit val x = 5 - | implicit val y: Int = 5 - | implicit def conv(x: Int) = x.toString - | implicit def conv2(x: Int): String = x.toString - | implicit object objekt - | implicit class wtf(x: Int) - |} - """.stripMargin) + scala""" + |implicit val x = 5 + |implicit val y: Int = 5 + |implicit def conv(x: Int) = x.toString + |implicit def conv2(x: Int): String = x.toString + |implicit object objekt + |implicit class wtf(x: Int) + |""".stripMargin) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImportJavaUtilTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImportJavaUtilTest.scala index 162179c8d..5bf4874b8 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImportJavaUtilTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ImportJavaUtilTest.scala @@ -1,16 +1,11 @@ package com.avsystem.commons package analyzer + import org.scalatest.funsuite.AnyFunSuite -class ImportJavaUtilTest extends AnyFunSuite with AnalyzerTest { +final class ImportJavaUtilTest extends AnyFunSuite with AnalyzerTest { test("import java.util should be rejected") { - assertErrors( - """ - |import java.util - | - |object whatever - """.stripMargin - ) + assertErrors(1, scala"import java.util") } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ThrowableObjectsTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ThrowableObjectsTest.scala index 32f365927..851c1e658 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ThrowableObjectsTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ThrowableObjectsTest.scala @@ -3,12 +3,12 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class ThrowableObjectsTest extends AnyFunSuite with AnalyzerTest { +final class ThrowableObjectsTest extends AnyFunSuite with AnalyzerTest { test("throwable objects with stack trace should be rejected") { assertErrors(1, - """ - |object throwableObject extends Throwable - |object noStackTraceThrowableObject extends Throwable with scala.util.control.NoStackTrace - """.stripMargin) + scala""" + |object throwableObject extends Throwable + |object noStackTraceThrowableObject extends Throwable with scala.util.control.NoStackTrace + |""".stripMargin) } } diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ValueEnumExhaustiveMatchTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ValueEnumExhaustiveMatchTest.scala index 5b1512c09..3584dc09c 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/ValueEnumExhaustiveMatchTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/ValueEnumExhaustiveMatchTest.scala @@ -3,27 +3,27 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class ValueEnumExhaustiveMatchTest extends AnyFunSuite with AnalyzerTest { +final class ValueEnumExhaustiveMatchTest extends AnyFunSuite with AnalyzerTest { def source(caseDefs: String): String = - s""" - |import com.avsystem.commons.misc._ - | - |final class Enumz(implicit enumCtx: EnumCtx) extends AbstractValueEnum - |object Enumz extends AbstractValueEnumCompanion[Enumz] { - | final val One, Two, Three: Value = new Enumz - |} - | - |object Main { - | val enum: Enumz = Enumz.One - | import Enumz._ - | enum match { - | $caseDefs - | } - |} - """.stripMargin + scala""" + |import com.avsystem.commons.misc._ + | + |final class Enumz(implicit enumCtx: EnumCtx) extends AbstractValueEnum + |object Enumz extends AbstractValueEnumCompanion[Enumz] { + | final val One, Two, Three: Value = new Enumz + |} + | + |object Main { + | val enum: Enumz = Enumz.One + | import Enumz._ + | enum match { + | $caseDefs + | } + |} + |""".stripMargin test("should report two unmatched enum values") { - assertErrors(source( + assertErrors(1, source( """ |case Enumz.One => |case null => @@ -32,7 +32,7 @@ class ValueEnumExhaustiveMatchTest extends AnyFunSuite with AnalyzerTest { } test("should report one unmatched enum value") { - assertErrors(source( + assertErrors(1, source( """ |case Enumz.One => |case Enumz.Two => @@ -41,7 +41,7 @@ class ValueEnumExhaustiveMatchTest extends AnyFunSuite with AnalyzerTest { } test("should report one unmatched by alternative enum value") { - assertErrors(source( + assertErrors(1, source( """ |case One | Two => """.stripMargin diff --git a/analyzer/src/test/scala/com/avsystem/commons/analyzer/VarargsAtLeastTest.scala b/analyzer/src/test/scala/com/avsystem/commons/analyzer/VarargsAtLeastTest.scala index f6604398d..e50d4a1c4 100644 --- a/analyzer/src/test/scala/com/avsystem/commons/analyzer/VarargsAtLeastTest.scala +++ b/analyzer/src/test/scala/com/avsystem/commons/analyzer/VarargsAtLeastTest.scala @@ -3,41 +3,35 @@ package analyzer import org.scalatest.funsuite.AnyFunSuite -class VarargsAtLeastTest extends AnyFunSuite with AnalyzerTest { +final class VarargsAtLeastTest extends AnyFunSuite with AnalyzerTest { test("too few varargs parameters should be rejected") { - assertErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | TestUtils.need3Params(1, 2) - |} - """.stripMargin + assertErrors(1, + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |TestUtils.need3Params(1, 2) + |""".stripMargin ) } test("enough varargs parameters should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | TestUtils.need3Params(1, 2, 3) - | TestUtils.need3Params(1, 2, 3, 4) - |} - """.stripMargin + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |TestUtils.need3Params(1, 2, 3) + |TestUtils.need3Params(1, 2, 3, 4) + |""".stripMargin ) } test("collection passed as varargs parameter should not be rejected") { assertNoErrors( - """ - |import com.avsystem.commons.analyzer.TestUtils - | - |object whatever { - | TestUtils.need3Params(List(1,2): _*) - |} - """.stripMargin + scala""" + |import com.avsystem.commons.analyzer.TestUtils + | + |TestUtils.need3Params(List(1,2): _*) + |""".stripMargin ) } }