blob: c4f065a34f6e19bbb4ea41e152ead7258f12c1f3 (
plain) (
blame)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
/* __ *\
** ________ ___ / / ___ __ ____ Scala.js Test Suite **
** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
** /____/\___/_/ |_/____/_/ | |__/ /____/ **
** |/____/ **
\* */
package scala.scalajs.testsuite.javalib
import scala.language.implicitConversions
import scala.scalajs.js
import org.scalajs.jasminetest.JasmineTest
object AtomicTest extends JasmineTest {
describe("java.util.concurrent.AtomicLong") {
it("Should have all the normal operations") {
val atomic = new java.util.concurrent.atomic.AtomicLong(10)
expect(atomic.get()).toEqual(10)
atomic.set(20)
expect(atomic.get()).toEqual(20)
expect(atomic.getAndIncrement()).toEqual(20)
expect(atomic.get()).toEqual(21)
expect(atomic.getAndDecrement()).toEqual(21)
expect(atomic.get()).toEqual(20)
expect(atomic.getAndSet(0)).toEqual(20)
expect(atomic.get()).toEqual(0)
expect(atomic.incrementAndGet()).toEqual(1)
expect(atomic.get()).toEqual(1)
expect(atomic.decrementAndGet()).toEqual(0)
expect(atomic.get()).toEqual(0)
expect(atomic.addAndGet(10)).toEqual(10)
expect(atomic.get()).toEqual(10)
expect(atomic.intValue).toEqual(10)
expect(atomic.longValue).toEqual(10L)
expect(atomic.floatValue).toEqual(10.0f)
expect(atomic.doubleValue).toEqual(10)
expect(atomic.compareAndSet(1, 20)).toEqual(false)
expect(atomic.get()).toEqual(10)
expect(atomic.compareAndSet(10, 20)).toEqual(true)
expect(atomic.get()).toEqual(20)
}
}
describe("java.util.concurrent.AtomicInteger") {
it("Should have all the normal operations") {
val atomic = new java.util.concurrent.atomic.AtomicInteger(10)
expect(atomic.get()).toEqual(10)
atomic.set(20)
expect(atomic.get()).toEqual(20)
expect(atomic.getAndIncrement()).toEqual(20)
expect(atomic.get()).toEqual(21)
expect(atomic.getAndDecrement()).toEqual(21)
expect(atomic.get()).toEqual(20)
expect(atomic.getAndSet(0)).toEqual(20)
expect(atomic.get()).toEqual(0)
expect(atomic.incrementAndGet()).toEqual(1)
expect(atomic.get()).toEqual(1)
expect(atomic.decrementAndGet()).toEqual(0)
expect(atomic.get()).toEqual(0)
expect(atomic.addAndGet(10)).toEqual(10)
expect(atomic.get()).toEqual(10)
expect(atomic.intValue).toEqual(10)
expect(atomic.longValue).toEqual(10L)
expect(atomic.floatValue).toEqual(10.0f)
expect(atomic.doubleValue).toEqual(10)
expect(atomic.compareAndSet(1, 20)).toEqual(false)
expect(atomic.get()).toEqual(10)
expect(atomic.compareAndSet(10, 20)).toEqual(true)
expect(atomic.get()).toEqual(20)
}
}
describe("java.util.concurrent.AtomicBoolean") {
it("Should have all the normal operations") {
val atomic = new java.util.concurrent.atomic.AtomicBoolean(true)
expect(atomic.get()).toEqual(true)
atomic.set(false)
expect(atomic.get()).toEqual(false)
expect(atomic.compareAndSet(true, true)).toEqual(false)
expect(atomic.get()).toEqual(false)
expect(atomic.compareAndSet(false, true)).toEqual(true)
expect(atomic.get()).toEqual(true)
expect(atomic.getAndSet(false)).toEqual(true)
expect(atomic.get()).toEqual(false)
}
}
describe("java.util.concurrent.AtomicReference") {
it("Should have all the normal operations") {
val thing1 = Foo(5)
val thing1bis = Foo(5) // equals(), but not the same reference
val thing2 = Foo(10)
implicit def foo2js(foo: Foo): js.Any = foo.asInstanceOf[js.Any]
// sanity
expect(thing1 == thing1bis).toBeTruthy
expect(thing1 == thing2).toBeFalsy
expect(thing1).toBe(thing1)
expect(thing1).not.toBe(thing1bis)
// actual test
val atomic = new java.util.concurrent.atomic.AtomicReference(thing1)
expect(atomic.get()).toBe(thing1)
atomic.set(thing2)
expect(atomic.get()).toBe(thing2)
expect(atomic.compareAndSet(thing1, thing1)).toEqual(false)
expect(atomic.get()).toBe(thing2)
expect(atomic.compareAndSet(thing2, thing1)).toEqual(true)
expect(atomic.get()).toBe(thing1)
expect(atomic.compareAndSet(thing1bis, thing2)).toEqual(false)
expect(atomic.getAndSet(thing2)).toBe(thing1)
expect(atomic.get()).toBe(thing2)
}
}
case class Foo(i: Int)
}
|