10000 Add tests for the `nameString` method of names. · scala-js/scala-js@53ecbe3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 53ecbe3

Browse files
committed
Add tests for the nameString method of names.
This also serves as a test that there is no deadlock between `Names` and `Types` anymore. Without that fix, the addtion of `NamesTest` triggered a deadlock in virtually every run of `ir2_12/test`.
1 parent 82910a0 commit 53ecbe3

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* Scala.js (https://www.scala-js.org/)
3+
*
4+
* Copyright EPFL.
5+
*
6+
* Licensed under Apache License 2.0
7+
* (https://www.apache.org/licenses/LICENSE-2.0).
8+
*
9+
* See the NOTICE file distributed with this work for
10+
* additional information regarding copyright ownership.
11+
*/
12+
13+
package org.scalajs.ir
14+
15+
import org.junit.Test
16+
import org.junit.Assert._
17+
18+
import Names._
19+
import Types._
20+
import WellKnownNames._
21+
22+
class NamesTest {
23+
@Test def nameStringLocalName(): Unit = {
24+
assertEquals("foo", LocalName("foo").nameString)
25+
assertEquals(".this", LocalName.This.nameString)
26+
}
27+
28+
@Test def nameStringLabelName(): Unit = {
29+
assertEquals("foo", LabelName("foo").nameString)
30+
}
31+
32+
@Test def nameStringSimpleFieldName(): Unit = {
33+
assertEquals("foo", SimpleFieldName("foo").nameString)
34+
}
35+
36+
@Test def nameStringFieldName(): Unit = {
37+
assertEquals("a.B::foo",
38+
FieldName(ClassName("a.B"), SimpleFieldName("foo")).nameString)
39+
}
40+
41+
@Test def nameStringSimpleMethodName(): Unit = {
42+
assertEquals("foo", SimpleMethodName("foo").nameString)
43+
assertEquals("<init>", SimpleMethodName.Constructor.nameString)
44+
assertEquals("<stinit>", SimpleMethodName.StaticInitializer.nameString)
45+
assertEquals("<clinit>", SimpleMethodName.ClassInitializer.nameString)
46+
}
47+
48+
@Test def nameStringMethodName(): Unit = {
49+
assertEquals("foo;I", MethodName("foo", Nil, IntRef).nameString)
50+
assertEquals("foo;Z;I", MethodName("foo", List(BooleanRef), IntRef).nameString)
51+
assertEquals("foo;Z;V", MethodName("foo", List(BooleanRef), VoidRef).nameString)
52+
53+
assertEquals("foo;S;Ljava.io.Serializable;V",
54+
MethodName("foo", List(ShortRef, ClassRef(SerializableClass)), VoidRef).nameString)
55+
56+
assertEquals("<init>;I;V", MethodName.constructor(List(IntRef)).nameString)
57+
58+
assertEquals("foo;Z;R", MethodName.reflectiveProxy("foo", List(BooleanRef)).nameString)
59+
60+
val refAndNameStrings: List[(TypeRef, String)] = List(
61+
ClassRef(ObjectClass) -> "Ljava.lang.Object",
62+
ClassRef(SerializableClass) -> "Ljava.io.Serializable",
63+
ClassRef(BoxedStringClass) -> "Ljava.lang.String",
64+
ArrayTypeRef(ClassRef(ObjectClass), 2) -> "[[Ljava.lang.Object",
65+
ArrayTypeRef(ShortRef, 1) -> "[S"
66+
)
67+
for ((ref, nameString) <- refAndNameStrings) {
68+
assertEquals(s"foo;$nameString;V",
69+
MethodName("foo", List(ref), VoidRef).nameString)
70+
}
71+
}
72+
73+
@Test def nameStringClassName(): Unit = {
74+
assertEquals("a.B", ClassName("a.B").nameString)
75+
}
76+
}

0 commit comments

Comments
 (0)
0