Skip to content

Commit 14b6821

Browse files
committed
Initial conversion
1 parent e31d8d6 commit 14b6821

11 files changed

Lines changed: 96 additions & 95 deletions

File tree

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
lazy val netLogoVersion = "7.0.0-beta0"
22

3-
scalaVersion := "2.13.16"
3+
scalaVersion := "3.7.0"
44

55
scalacOptions ++= Seq("-feature", "-unchecked", "-deprecation", "-Xfatal-warnings")
66

src/main/scala/org/nlogo/models/LegalInfo.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ case class LegalInfo(model: Model) {
3636
val infoTabParts = model.infoTabParts
3737

3838
val (year: Int, year2: Option[Int], keywords: List[String], cite: String) = {
39-
val Some(pattern(y1, y2, keys, _, cite)) = infoTabParts.legalSnippet
39+
val(y1, y2, keys, cite) = infoTabParts.legalSnippet match {
40+
case Some(pattern(y1, y2, keys, _, cite)) => (y1, y2, keys, cite)
41+
case _ => throw new IllegalStateException
42+
}
4043
(y1.toInt,
4144
if (y2 == null) None else Some(y2.trim.toInt),
4245
if (keys == null) List() else keys.split("""\s""").map(_.trim).filter(!_.isEmpty).toList,
@@ -94,9 +97,9 @@ case class LegalInfo(model: Model) {
9497
val authors = cite match {
9598
case "" if keywords.contains("Stroup") =>
9699
"Wilensky, U. and Stroup, W."
97-
case "" => "Wilensky, U."
98-
case _ if cite contains "Wilensky" => cite
99-
case _ => cite + " and Wilensky, U."
100+
case "" => "Wilensky, U."
101+
case _ if cite.contains("Wilensky") => cite
102+
case _ => cite + " and Wilensky, U."
100103
}
101104
builder.append(authors)
102105
builder.append(" (" + year + "). NetLogo " + model.name + " model. ")

src/main/scala/org/nlogo/models/ModelResaver.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ object ModelResaver {
6565
}
6666

6767
def resaveAllModels(): Unit = {
68-
traverseModels(Paths.get(modelsRoot), resaveModel _)
68+
traverseModels(Paths.get(modelsRoot), resaveModel)
6969
}
7070

7171
lazy val literalParser =
@@ -76,7 +76,7 @@ object ModelResaver {
7676
try {
7777
val converter =
7878
FileFormat.converter(ws.getExtensionManager, ws.getLibraryManager, ws.getCompilationEnvironment,
79-
literalParser, FileFormat.defaultAutoConvertables :+ SDMAutoConvertable) _
79+
literalParser, FileFormat.defaultAutoConvertables :+ SDMAutoConvertable)
8080
val modelLoader =
8181
FileFormat.standardAnyLoader(false, ws.compiler.utilities)
8282
.addSerializer[Array[String], NLogoFormat](new NLogoGuiSDMFormat())

src/main/scala/org/nlogo/models/Stats.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ object Stats {
3232
}
3333
}.groupBy(_._1).view.mapValues(_.size).toSeq.sortBy(t => (0 - t._2, t._1)).foreach {
3434
case (name, count) => data.addValue(count, "", name)
35-
case _ =>
3635
}
3736

3837
val chart = ChartFactory.createBarChart("Usage of primitives in the Models Library", null, "Number of models",

src/main/scala/org/nlogo/models/package.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ package object models {
9393
!(neverCompilable.contains(name) || (!onLocal && notCompilableOnTestServer.contains(name)))
9494
}
9595
def protocols: Seq[LabProtocol] = model
96-
.optionalSectionValue("org.nlogo.modelsection.behaviorspace")
97-
.getOrElse(Seq.empty)
96+
.optionalSectionValue("org.nlogo.modelsection.behaviorspace").map(_.asInstanceOf[Seq[LabProtocol]])
97+
.getOrElse(Seq())
9898
def previewCommands: PreviewCommands = model
9999
.optionalSectionValue[PreviewCommands]("org.nlogo.modelsection.previewcommands")
100100
.get // let it crash if preview commands are not loaded

src/test/scala/org/nlogo/models/InfoTabUrlTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ class InfoTabUrlTests extends AnyFunSuite with ScalaFutures with BeforeAndAfterA
142142
success
143143
case sc if sc >= 500 && sc < 600 =>
144144
request(link, timeout)
145-
case sc if exceptions.get(sc).filter(_.exists(link startsWith _)).isDefined =>
145+
case sc if exceptions.get(sc).filter(_.exists(link.startsWith)).isDefined =>
146146
success
147147
case sc => failure(
148148
"Got response status code " + sc + ". Headers:\n" +

src/test/scala/org/nlogo/models/ModelCompilationTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.nlogo.models
22

33
import scala.annotation.migration
4-
import scala.collection.JavaConverters.mapAsScalaMapConverter
4+
import scala.jdk.CollectionConverters.MapHasAsScala
55
import scala.util.Failure
66
import scala.util.Success
77
import scala.util.Try

src/test/scala/org/nlogo/models/ModelFileTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package org.nlogo.models
33
class ModelFileTests extends TestModels {
44

55
testModels("Models should not use tab characters anywhere") {
6-
testLines(_.content, _ contains "\t", _ => "")
6+
testLines(_.content, _.contains("\t"), _ => "")
77
}
88

99
testModels("Models should not contain trailing whitespace") {

src/test/scala/org/nlogo/models/NLWTests.scala

Lines changed: 79 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -4,92 +4,91 @@ import org.nlogo.core.TokenType
44
import org.nlogo.core.TokenType.Command
55

66
class NLWTests extends TestModels {
7+
val unsupportedPrimitives = Set(
8+
// This is sort of a lie as of 2020-11-18
9+
// but we leave it for simplicity.
10+
"extensions",
11+
// Inspect in progress
12+
"inspect",
713

8-
val unsupportedPrimitives = Set(
9-
// This is sort of a lie as of 2020-11-18
10-
// but we leave it for simplicity.
11-
"extensions",
12-
// Inspect in progress
13-
"inspect",
14+
"__set-line-thickness",
1415

15-
"__set-line-thickness",
16+
// HubNet Prims
17+
"hubnet-broadcast",
18+
"hubnet-broadcast-clear-output",
19+
"hubnet-broadcast-message",
20+
"hubnet-clear-override",
21+
"hubnet-clear-overrides",
22+
"hubnet-clients-list",
23+
"hubnet-enter-message?",
24+
"hubnet-exit-message?",
25+
"hubnet-fetch-message",
26+
"hubnet-kick-all-clients",
27+
"hubnet-kick-client",
28+
"hubnet-message",
29+
"hubnet-message-source",
30+
"hubnet-message-tag",
31+
"hubnet-message-waiting?",
32+
"hubnet-reset",
33+
"hubnet-reset-perspective",
34+
"hubnet-send",
35+
"hubnet-send-clear-output",
36+
"hubnet-send-follow",
37+
"hubnet-send-message",
38+
"hubnet-send-override",
39+
"hubnet-send-watch",
1640

17-
// HubNet Prims
18-
"hubnet-broadcast",
19-
"hubnet-broadcast-clear-output",
20-
"hubnet-broadcast-message",
21-
"hubnet-clear-override",
22-
"hubnet-clear-overrides",
23-
"hubnet-clients-list",
24-
"hubnet-enter-message?",
25-
"hubnet-exit-message?",
26-
"hubnet-fetch-message",
27-
"hubnet-kick-all-clients",
28-
"hubnet-kick-client",
29-
"hubnet-message",
30-
"hubnet-message-source",
31-
"hubnet-message-tag",
32-
"hubnet-message-waiting?",
33-
"hubnet-reset",
34-
"hubnet-reset-perspective",
35-
"hubnet-send",
36-
"hubnet-send-clear-output",
37-
"hubnet-send-follow",
38-
"hubnet-send-message",
39-
"hubnet-send-override",
40-
"hubnet-send-watch",
41+
// Synchrony Plagued
42+
"import-pcolors",
43+
"import-pcolors-rgb",
44+
"import-world",
45+
"display",
46+
"no-display",
47+
"wait",
48+
"user-one-of",
49+
"export-interface",
4150

42-
// Synchrony Plagued
43-
"import-pcolors",
44-
"import-pcolors-rgb",
45-
"import-world",
46-
"display",
47-
"no-display",
48-
"wait",
49-
"user-one-of",
50-
"export-interface",
51+
// Ask Concurrent (s)
52+
"ask-concurrent",
53+
"without-interruption",
5154

52-
// Ask Concurrent (s)
53-
"ask-concurrent",
54-
"without-interruption",
55-
56-
// File
57-
"file-at-end?",
58-
"file-close",
59-
"file-close-all",
60-
"file-delete",
61-
"file-exists?",
62-
"file-flush",
63-
"file-open",
64-
"file-print",
65-
"file-read",
66-
"file-read-characters",
67-
"file-read-line",
68-
"file-show",
69-
"file-type",
70-
"file-write",
71-
"set-current-directory",
72-
"user-directory",
73-
"user-file",
74-
"user-new-file"
75-
)
55+
// File
56+
"file-at-end?",
57+
"file-close",
58+
"file-close-all",
59+
"file-delete",
60+
"file-exists?",
61+
"file-flush",
62+
"file-open",
63+
"file-print",
64+
"file-read",
65+
"file-read-characters",
66+
"file-read-line",
67+
"file-show",
68+
"file-type",
69+
"file-write",
70+
"set-current-directory",
71+
"user-directory",
72+
"user-file",
73+
"user-new-file"
74+
)
7675

7776
if (onLocal) {
78-
/* This is really just a placeholder for more advanced tests that
79-
* determine the viability of a library model for NLW. Right now,
80-
* we just check for prims that have yet to be implemented in
81-
* NLW. On run on local since it's not a helpful failure. Update these
82-
* occasionally from some authoritative source. I'v been using
83-
* https://github.com/NetLogo/Tortoise/wiki/Unimplemented-Primitives
84-
*
85-
* CB 2020-11-17.
86-
*/
87-
testModels("All primitives are supported by NLW") { model =>
88-
val tokenNames = new Tokens(model).primitiveTokenNames.toSet
89-
for {
90-
prim <- unsupportedPrimitives
91-
if tokenNames.contains(prim)
92-
} yield "uses " + prim
93-
}
77+
/* This is really just a placeholder for more advanced tests that
78+
* determine the viability of a library model for NLW. Right now,
79+
* we just check for prims that have yet to be implemented in
80+
* NLW. On run on local since it's not a helpful failure. Update these
81+
* occasionally from some authoritative source. I'v been using
82+
* https://github.com/NetLogo/Tortoise/wiki/Unimplemented-Primitives
83+
*
84+
* CB 2020-11-17.
85+
*/
86+
testModels("All primitives are supported by NLW") { model =>
87+
val tokenNames = new Tokens(model).primitiveTokenNames.toSet
88+
for {
89+
prim <- unsupportedPrimitives
90+
if tokenNames.contains(prim)
91+
} yield "uses " + prim
92+
}
9493
}
9594
}

src/test/scala/org/nlogo/models/SpellCheckTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class SpellCheckTests extends TestModels with BeforeAndAfterAll {
5959
Files.readAllLines(outFile)
6060
.asScala
6161
.distinct
62-
.map(typo => typo -> lines.filter(_._1 contains typo).map(_._2 + 1))
62+
.map(typo => typo -> lines.filter(_._1.contains(typo)).map(_._2 + 1))
6363
.sortBy(_._2.head) // sort by line number of first occurrence
6464
.map { case (t, ns) => s" $t (${ns.mkString(", ")})" }
6565
}

0 commit comments

Comments
 (0)