Open-source multiplayer game server compatible with the RuneScape client https://www.openrs2.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
openrs2/util/src/test/java/dev/openrs2/util/collect/ForestDisjointSetTest.kt

137 lines
3.1 KiB

package dev.openrs2.util.collect
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals
import kotlin.test.assertNull
object ForestDisjointSetTest {
@Test
fun testAdd() {
val set = ForestDisjointSet<Int>()
assertEquals(0, set.elements)
assertEquals(0, set.partitions)
val set1 = set.add(1)
assertEquals(1, set.elements)
assertEquals(1, set.partitions)
assertEquals(set1, set.add(1))
assertEquals(1, set.elements)
assertEquals(1, set.partitions)
set.add(2)
assertEquals(2, set.elements)
assertEquals(2, set.partitions)
}
@Test
fun testUnionEqualRank() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
val set2 = set.add(2)
set.union(set1, set2)
assertEquals(2, set.elements)
assertEquals(1, set.partitions)
}
@Test
fun testUnionSameRoot() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
val set2 = set.add(2)
set.union(set1, set2)
set.union(set1, set2)
assertEquals(2, set.elements)
assertEquals(1, set.partitions)
}
@Test
fun testUnionXRankGreater() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
val set2 = set.add(2)
val set3 = set.add(3)
set.union(set1, set2)
set.union(set1, set3)
assertEquals(3, set.elements)
assertEquals(1, set.partitions)
}
@Test
fun testUnionYRankGreater() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
val set2 = set.add(2)
val set3 = set.add(3)
set.union(set1, set2)
set.union(set3, set1)
assertEquals(3, set.elements)
assertEquals(1, set.partitions)
}
@Test
fun testPartitionEquals() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
val set2 = set.add(2)
assertEquals(set1, set1)
assertEquals(set2, set2)
assertNotEquals(set1, set2)
assertNotEquals(set2, set1)
}
@Test
fun testPartitionHashCode() {
val set = ForestDisjointSet<Int>()
assertEquals(1.hashCode(), set.add(1).hashCode())
assertEquals(2.hashCode(), set.add(2).hashCode())
}
@Test
fun testPartitionToString() {
val set = ForestDisjointSet<Int>()
assertEquals("1", set.add(1).toString())
}
@Test
fun testPartitionIterator() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
set.union(set1, set.add(2))
set.union(set1, set.add(3))
assertEquals(setOf(1, 2, 3), set1.toSet())
}
@Test
fun testIterator() {
val set = ForestDisjointSet<Int>()
set.add(1)
set.union(set.add(2), set.add(3))
assertEquals(setOf(setOf(1), setOf(2, 3)), set.map { it.toSet() }.toSet())
}
@Test
fun testGet() {
val set = ForestDisjointSet<Int>()
val set1 = set.add(1)
assertEquals(set1, set[1])
assertNull(set[2])
}
}