|
1 | 1 | package org.nlogo.models |
2 | 2 |
|
3 | | -import scala.collection.GenIterable |
4 | | -import scala.collection.GenSeq |
5 | | -import scala.util.Try |
6 | | - |
7 | 3 | import org.nlogo.api.Version |
8 | 4 | import org.nlogo.core.Model |
9 | | -import org.scalatest.FunSuite |
10 | 5 |
|
11 | | -trait TestModels extends FunSuite { |
| 6 | +import org.scalatest.{ Args, FunSuite, Status, SucceededStatus } |
| 7 | + |
| 8 | +import scala.collection.{ GenIterable, GenMap, GenSeq } |
| 9 | +import scala.util.Try |
| 10 | + |
| 11 | +abstract class TestModels extends FunSuite { |
| 12 | + |
| 13 | + private var nameFilter: Option[String] = None |
| 14 | + |
| 15 | + override def runTest(name: String, args: Args): Status = { |
| 16 | + nameFilter = args.configMap.get("model").map(_.toString.toLowerCase) |
| 17 | + |
| 18 | + super.runTest(name, args) |
| 19 | + } |
12 | 20 |
|
13 | 21 | def testModels( |
14 | 22 | testName: String, |
15 | 23 | includeTestModels: Boolean = false, |
16 | 24 | includeOtherDimension: Boolean = false, |
17 | 25 | filter: Model => Boolean = _ => true)(testFun: Model => GenIterable[Any]): Unit = { |
18 | 26 | val models = |
19 | | - (if (includeTestModels) allModels else libraryModels) |
20 | | - .filter(includeOtherDimension || _.is3D == Version.is3D) |
21 | | - .filter(filter) |
| 27 | + (if (includeTestModels) allModelsNamed else libraryModelsNamed) |
| 28 | + .filterKeys(includeOtherDimension || _.is3D == Version.is3D) |
| 29 | + .filterKeys(filter) |
22 | 30 | testModels(models, testName)(testFun) |
23 | 31 | } |
24 | 32 |
|
25 | | - def testModels(models: GenIterable[Model], testName: String)(testFun: Model => GenIterable[Any]): Unit = |
| 33 | + def testModels(models: GenMap[Model, String], testName: String)(testFun: Model => GenIterable[Any]): Unit = |
26 | 34 | test(testName) { |
27 | 35 | val allFailures: GenSeq[String] = |
28 | 36 | (for { |
29 | | - model <- models |
| 37 | + model <- models.filterKeys(model => nameFilter.map(models(model).toLowerCase.contains).getOrElse(true)).keys |
30 | 38 | failures <- Try(testFun(model)) |
31 | 39 | .recover { case e => Seq(e.toString + "\n" + e.getStackTrace.mkString("\n")) } |
32 | 40 | .toOption |
|
0 commit comments