Skip to content

Commit 9f9eb0c

Browse files
committed
Add tests to scala3doc-js
1 parent d74d05d commit 9f9eb0c

File tree

3 files changed

+117
-3
lines changed

3 files changed

+117
-3
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package dotty.dokka
2+
3+
import org.junit.{Test, Assert}
4+
import org.junit.Assert._
5+
6+
class MatchersTest:
7+
private val kinds = Seq(
8+
"class",
9+
"trait",
10+
"enum",
11+
"object",
12+
"def",
13+
"val",
14+
"var",
15+
"package",
16+
"given",
17+
"type"
18+
)
19+
private val names = Seq(
20+
"NullPointerException",
21+
"NPException",
22+
"Seq",
23+
"SeqOps",
24+
"writeBytes",
25+
"lessOrEqual",
26+
"testFuzzySearch1",
27+
"testF",
28+
"testFS"
29+
)
30+
private val pages = for {
31+
kind <- kinds
32+
name <- names
33+
} yield PageEntry(
34+
s"$kind $name",
35+
"",
36+
"",
37+
s"$name",
38+
StringUtils.createCamelCaseTokens(name)
39+
)
40+
41+
private def result(matchers: List[Matchers]) = {
42+
pages.map { p =>
43+
p -> matchers.map(_(p))
44+
}.filterNot { (page, results) =>
45+
results.exists(_ == -1)
46+
}.map((page, results) => page)
47+
}
48+
49+
@Test
50+
def testByKind = kinds.foreach { kind =>
51+
val res = result(List(ByKind(kind)))
52+
val expected = pages.filter(p => p.fullName.startsWith(kind)).toSet
53+
assertEquals(
54+
s"Matchers test error: for kind: $kind should match $expected but matched $res",
55+
expected,
56+
res.toSet
57+
)
58+
}
59+
60+
private def byNameTestCase(query: String, expectedMatch: String*) = expectedMatch.foreach { expMatch =>
61+
assertTrue(
62+
s"Matchers test error: for query: $query expected $expMatch",
63+
result(List(ByName(query))).exists(p => p.shortName.contains(expMatch))
64+
)
65+
}
66+
67+
@Test
68+
def testByName = {
69+
names.foreach(n => byNameTestCase(n, n))
70+
byNameTestCase("NPE", "NPException", "NullPointerException")
71+
byNameTestCase("NullPE", "NullPointerException")
72+
byNameTestCase("tFuzzS", "testFuzzySearch1")
73+
byNameTestCase("SO", "SeqOps")
74+
byNameTestCase("teFS", "testFS")
75+
byNameTestCase("writeBy", "writeBytes")
76+
byNameTestCase("seQ", "Seq")
77+
byNameTestCase("lOrEqu", "lessOrEqual")
78+
byNameTestCase("teF", "testFS", "testF")
79+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dotty.dokka
2+
3+
import org.junit.{Test, Assert}
4+
import org.junit.Assert._
5+
6+
class QueryParserTest:
7+
val queryParser = QueryParser()
8+
val kinds = Seq(
9+
"class",
10+
"trait",
11+
"enum",
12+
"object",
13+
"def",
14+
"val",
15+
"var",
16+
"package",
17+
"given",
18+
"type"
19+
)
20+
private def testCase(query: String, result: List[Matchers]) = {
21+
val parsed = queryParser.parse(query)
22+
assertEquals(
23+
s"Query parser test error: for query: $query expected $result but found $parsed",
24+
parsed,
25+
result
26+
)
27+
}
28+
29+
@Test
30+
def queryParserTests() = {
31+
kinds.foreach(k => testCase(s"$k ", List(ByKind(k), ByName(""))))
32+
testCase("trait", List(ByName("trait")))
33+
testCase("trait A", List(ByKind("trait"), ByName("A")))
34+
testCase("`trait A`", List(ByName("trait A")))
35+
}

scaladoc-js/src/searchbar/engine/Matchers.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package dotty.tools.scaladoc
22

33
sealed trait Matchers extends Function1[PageEntry, Int]
44

5-
class ByName(query: String) extends Matchers:
5+
case class ByName(query: String) extends Matchers:
66
val tokens = StringUtils.createCamelCaseTokens(query)
77
def apply(p: PageEntry): Int = {
8-
val nameOption = Option(p.shortName)
8+
val nameOption = Option(p.shortName.toLowerCase)
99
//Edge case for empty query string
1010
if query == "" then 1
1111
else {
@@ -20,5 +20,5 @@ class ByName(query: String) extends Matchers:
2020
}
2121
}
2222

23-
class ByKind(kind: String) extends Matchers:
23+
case class ByKind(kind: String) extends Matchers:
2424
def apply(p: PageEntry): Int = p.fullName.split(" ").headOption.filter(_.equalsIgnoreCase(kind)).fold(-1)(_ => 1)

0 commit comments

Comments
 (0)