/
ObjectTest.scala
102 lines (83 loc) · 3.21 KB
/
ObjectTest.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* Scala.js (https://www.scala-js.org/)
*
* Copyright EPFL.
*
* Licensed under Apache License 2.0
* (https://www.apache.org/licenses/LICENSE-2.0).
*
* See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*/
package org.scalajs.testsuite.javalib.lang
import org.junit.Test
import org.junit.Assert._
import org.scalajs.testsuite.utils.AssertThrows._
// scalastyle:off disallow.space.before.token
class ObjectTest {
@Test def testGetClass(): Unit = {
class Foo
val foo = new Foo
@noinline def fooAny: Any = foo
assertSame(classOf[Foo], foo.getClass)
assertSame(classOf[Foo], fooAny.getClass)
}
@Test def equals(): Unit = {
case class XY(x: Int, y: Int)
val l = List(XY(1, 2), XY(2, 1))
val xy12 = XY(1, 2)
assertTrue(l.contains(xy12))
assertTrue(l.exists(_ == xy12)) // the workaround
}
@Test def everything_but_null_should_be_an_Object(): Unit = {
assertTrue((() : Any).isInstanceOf[Object])
assertTrue((true : Any).isInstanceOf[Object])
assertTrue(('a' : Any).isInstanceOf[Object])
assertTrue((1.toByte : Any).isInstanceOf[Object])
assertTrue((658.toShort : Any).isInstanceOf[Object])
assertTrue((60000 : Any).isInstanceOf[Object])
assertTrue((12345678910112L: Any).isInstanceOf[Object])
assertTrue((6.5f : Any).isInstanceOf[Object])
assertTrue((12.4 : Any).isInstanceOf[Object])
assertTrue((new Object : Any).isInstanceOf[Object])
assertTrue(("hello" : Any).isInstanceOf[Object])
assertTrue((List(1) : Any).isInstanceOf[Object])
assertTrue((Array(1) : Any).isInstanceOf[Object])
assertTrue((Array(Nil) : Any).isInstanceOf[Object])
}
@Test def null_should_not_be_an_Object(): Unit = {
assertFalse((null: Any).isInstanceOf[Object])
}
@Test def everything_should_cast_to_Object_successfully_including_null(): Unit = {
(() : Any).asInstanceOf[Object]
(true : Any).asInstanceOf[Object]
('a' : Any).asInstanceOf[Object]
(1.toByte : Any).asInstanceOf[Object]
(658.toShort : Any).asInstanceOf[Object]
(60000 : Any).asInstanceOf[Object]
(12345678910112L: Any).asInstanceOf[Object]
(6.5f : Any).asInstanceOf[Object]
(12.4 : Any).asInstanceOf[Object]
(new Object : Any).asInstanceOf[Object]
("hello" : Any).asInstanceOf[Object]
(List(1) : Any).asInstanceOf[Object]
(Array(1) : Any).asInstanceOf[Object]
(Array(Nil) : Any).asInstanceOf[Object]
(null : Any).asInstanceOf[Object]
}
@Test def cloneCtorSideEffects_issue_3192(): Unit = {
var ctorInvokeCount = 0
// This class has an inlineable init
class CloneCtorSideEffectsBug(val x: Int) extends java.lang.Cloneable {
ctorInvokeCount += 1
override def clone(): CloneCtorSideEffectsBug =
super.clone().asInstanceOf[CloneCtorSideEffectsBug]
}
val o = new CloneCtorSideEffectsBug(54)
assertEquals(54, o.x)
assertEquals(1, ctorInvokeCount)
val o2 = o.clone()
assertEquals(54, o2.x)
assertEquals(1, ctorInvokeCount)
}
}