Skip to content

Commit 9d47b52

Browse files
committed
MPP: Heap test for JS
1 parent c0d71dc commit 9d47b52

File tree

2 files changed

+73
-19
lines changed
  • core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal
  • js/kotlinx-coroutines-core-js/src/test/kotlin/kotlinx/coroutines/experimental/internal

2 files changed

+73
-19
lines changed

core/kotlinx-coroutines-core/src/test/kotlin/kotlinx/coroutines/experimental/internal/ThreadSafeHeapTest.kt

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@
1616

1717
package kotlinx.coroutines.experimental.internal
1818

19-
import org.hamcrest.core.IsEqual
20-
import org.hamcrest.core.IsNull
21-
import org.junit.Assert.assertThat
22-
import org.junit.Test
19+
import kotlin.test.*
2320
import java.util.*
2421

2522
class ThreadSafeHeapTest {
@@ -34,33 +31,33 @@ class ThreadSafeHeapTest {
3431
@Test
3532
fun testBasic() {
3633
val h = ThreadSafeHeap<Node>()
37-
assertThat(h.peek(), IsNull())
34+
assertEquals(null, h.peek())
3835
val n1 = Node(1)
3936
h.addLast(n1)
40-
assertThat(h.peek(), IsEqual(n1))
37+
assertEquals(n1, h.peek())
4138
val n2 = Node(2)
4239
h.addLast(n2)
43-
assertThat(h.peek(), IsEqual(n1))
40+
assertEquals(n1, h.peek())
4441
val n3 = Node(3)
4542
h.addLast(n3)
46-
assertThat(h.peek(), IsEqual(n1))
43+
assertEquals(n1, h.peek())
4744
val n4 = Node(4)
4845
h.addLast(n4)
49-
assertThat(h.peek(), IsEqual(n1))
46+
assertEquals(n1, h.peek())
5047
val n5 = Node(5)
5148
h.addLast(n5)
52-
assertThat(h.peek(), IsEqual(n1))
53-
assertThat(h.removeFirstOrNull(), IsEqual(n1))
54-
assertThat(n1.index, IsEqual(-1))
55-
assertThat(h.peek(), IsEqual(n2))
49+
assertEquals(n1, h.peek())
50+
assertEquals(n1, h.removeFirstOrNull())
51+
assertEquals(-1, n1.index)
52+
assertEquals(n2, h.peek())
5653
h.remove(n2)
57-
assertThat(h.peek(), IsEqual(n3))
54+
assertEquals(n3, h.peek())
5855
h.remove(n4)
59-
assertThat(h.peek(), IsEqual(n3))
56+
assertEquals(n3, h.peek())
6057
h.remove(n3)
61-
assertThat(h.peek(), IsEqual(n5))
58+
assertEquals(n5, h.peek())
6259
h.remove(n5)
63-
assertThat(h.peek(), IsNull())
60+
assertEquals(null, h.peek())
6461
}
6562

6663
@Test
@@ -71,7 +68,7 @@ class ThreadSafeHeapTest {
7168
val a = IntArray(n) { r.nextInt() }
7269
repeat(n) { h.addLast(Node(a[it])) }
7370
a.sort()
74-
repeat(n) { assertThat(h.removeFirstOrNull(), IsEqual(Node(a[it]))) }
75-
assertThat(h.peek(), IsNull())
71+
repeat(n) { assertEquals(Node(a[it]), h.removeFirstOrNull()) }
72+
assertEquals(null, h.peek())
7673
}
7774
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package kotlinx.coroutines.experimental.internal
2+
3+
import kotlin.js.Math
4+
import kotlin.test.*
5+
6+
class HeapTest {
7+
class Node(val value: Int) : HeapNode, Comparable<Node> {
8+
override var index = -1
9+
override fun compareTo(other: Node): Int = value.compareTo(other.value)
10+
override fun equals(other: Any?): Boolean = other is Node && other.value == value
11+
override fun hashCode(): Int = value
12+
override fun toString(): String = "$value"
13+
}
14+
15+
@Test
16+
fun testBasic() {
17+
val h = Heap<Node>()
18+
assertEquals(null, h.peek())
19+
val n1 = Node(1)
20+
h.addLast(n1)
21+
assertEquals(n1, h.peek())
22+
val n2 = Node(2)
23+
h.addLast(n2)
24+
assertEquals(n1, h.peek())
25+
val n3 = Node(3)
26+
h.addLast(n3)
27+
assertEquals(n1, h.peek())
28+
val n4 = Node(4)
29+
h.addLast(n4)
30+
assertEquals(n1, h.peek())
31+
val n5 = Node(5)
32+
h.addLast(n5)
33+
assertEquals(n1, h.peek())
34+
assertEquals(n1, h.removeFirstOrNull())
35+
assertEquals(-1, n1.index)
36+
assertEquals(n2, h.peek())
37+
h.remove(n2)
38+
assertEquals(n3, h.peek())
39+
h.remove(n4)
40+
assertEquals(n3, h.peek())
41+
h.remove(n3)
42+
assertEquals(n5, h.peek())
43+
h.remove(n5)
44+
assertEquals(null, h.peek())
45+
}
46+
47+
@Test
48+
fun testRandomSort() {
49+
val n = 1000
50+
val h = Heap<Node>()
51+
val a = IntArray(n) { (Math.random() * 10000).toInt() }
52+
repeat(n) { h.addLast(Node(a[it])) }
53+
a.sort()
54+
repeat(n) { assertEquals(Node(a[it]), h.removeFirstOrNull()) }
55+
assertEquals(null, h.peek())
56+
}
57+
}

0 commit comments

Comments
 (0)