232 lines
5.2 KiB
Kotlin
232 lines
5.2 KiB
Kotlin
/*
|
|
* Copyright 2023 dorkbox, llc
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package dorkbox.collections
|
|
|
|
import org.junit.Assert
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Test
|
|
|
|
class ObjectTests {
|
|
private fun map(): ObjectMap<String, Int?> {
|
|
val map = ObjectMap<String, Int?>()
|
|
map["1"] = 1
|
|
map["2"] = 2
|
|
map["3"] = null
|
|
|
|
return map
|
|
}
|
|
|
|
private fun set(): ObjectSet<String> {
|
|
val set = ObjectSet<String>()
|
|
set.add("1")
|
|
set.add("2")
|
|
set.add("3")
|
|
|
|
return set
|
|
}
|
|
|
|
@Test
|
|
fun testObjectMap() {
|
|
val map = map()
|
|
assertTrue(map.size == 3)
|
|
|
|
assertTrue(map.size == 3)
|
|
|
|
assertTrue(map["2"] == 2)
|
|
map.remove("2")
|
|
assertTrue(map.size == 2)
|
|
|
|
assertTrue(map["2"] == null)
|
|
|
|
map.entries.retainAll { it.key == "1"}
|
|
assertTrue(map.size == 1)
|
|
assertTrue(map["1"] == 1)
|
|
|
|
|
|
map.clear()
|
|
|
|
assertTrue(map.isEmpty())
|
|
assertTrue(map.size == 0)
|
|
}
|
|
|
|
@Test
|
|
fun testObjectMapKeys() {
|
|
val map = map()
|
|
assertTrue(map.size == 3)
|
|
|
|
val keys = map.keys()
|
|
assertTrue(keys.size == 3)
|
|
|
|
assertTrue(map["2"] == 2)
|
|
keys.remove("2")
|
|
assertTrue(map.size == 2)
|
|
assertTrue(keys.size == 2)
|
|
|
|
assertTrue(map["2"] == null)
|
|
|
|
val keep = listOf("1")
|
|
keys.retainAll(keep)
|
|
assertTrue(map.size == 1)
|
|
assertTrue(map["1"] == 1)
|
|
|
|
keys.clear()
|
|
|
|
assertTrue(map.isEmpty())
|
|
assertTrue(keys.isEmpty())
|
|
assertTrue(map.size == 0)
|
|
assertTrue(keys.size == 0)
|
|
}
|
|
|
|
@Test
|
|
fun testObjectMapValues() {
|
|
val map = map()
|
|
assertTrue(map.size == 3)
|
|
|
|
val values = map.values()
|
|
assertTrue(values.size == 3)
|
|
|
|
values.remove(2)
|
|
assertTrue(map.size == 2)
|
|
assertTrue(values.size == 2)
|
|
|
|
assertTrue(map["2"] == null)
|
|
|
|
val keep = listOf(1)
|
|
values.retainAll(keep)
|
|
assertTrue(map.size == 1)
|
|
assertTrue(map["1"] == 1)
|
|
|
|
values.clear()
|
|
|
|
assertTrue(map.isEmpty())
|
|
assertTrue(values.isEmpty())
|
|
assertTrue(map.size == 0)
|
|
assertTrue(values.size == 0)
|
|
}
|
|
|
|
@Test
|
|
fun testObjectMapEntries() {
|
|
val map = map()
|
|
assertTrue(map.size == 3)
|
|
|
|
val entries = map.entries()
|
|
assertTrue(entries.size == 3)
|
|
|
|
|
|
var toRemove: ObjectMap.Entry<String, Int?>? = null
|
|
val iter = entries.iterator()
|
|
while (iter.hasNext()) {
|
|
val entry = iter.next()
|
|
if (entry.key == "2") {
|
|
toRemove = entry
|
|
break
|
|
}
|
|
}
|
|
assertTrue(toRemove?.key == "2")
|
|
entries.remove(toRemove)
|
|
assertTrue(map.size == 2)
|
|
assertTrue(entries.size == 2)
|
|
|
|
assertTrue(map["2"] == null)
|
|
|
|
val keepEntry = entries.iterator().next()
|
|
|
|
val keep = listOf(keepEntry)
|
|
entries.retainAll(keep)
|
|
assertTrue(map.size == 1)
|
|
assertTrue(map["1"] == 1)
|
|
|
|
entries.clear()
|
|
|
|
assertTrue(map.isEmpty())
|
|
assertTrue(entries.isEmpty())
|
|
assertTrue(map.size == 0)
|
|
assertTrue(entries.size == 0)
|
|
}
|
|
|
|
@Test
|
|
fun testIdentityMapIterator() {
|
|
val map = IdentityMap<Int, String>()
|
|
repeat(64) {
|
|
map[it] = it.toString()
|
|
}
|
|
|
|
assertEquals(64, map.size)
|
|
|
|
val entries = map.entries()
|
|
entries.forEach { (k,v) ->
|
|
Assert.assertTrue(k.toString() == v)
|
|
}
|
|
|
|
entries.clear()
|
|
|
|
assertTrue(map.isEmpty())
|
|
assertTrue(entries.isEmpty())
|
|
assertTrue(map.size == 0)
|
|
assertTrue(entries.size == 0)
|
|
}
|
|
|
|
|
|
@Test
|
|
fun testObjectSet() {
|
|
val set = set()
|
|
assertTrue(set.size == 3)
|
|
|
|
assertTrue(set.size == 3)
|
|
|
|
assertTrue(set["2"] == "2")
|
|
set.remove("2")
|
|
assertTrue(set.size == 2)
|
|
|
|
assertTrue(set["2"] == null)
|
|
|
|
set.retainAll { it == "1" }
|
|
assertTrue(set.size == 1)
|
|
assertTrue(set["1"] == "1")
|
|
|
|
set.clear()
|
|
|
|
assertTrue(set.isEmpty())
|
|
assertTrue(set.size == 0)
|
|
}
|
|
|
|
@Test
|
|
fun testObjectSet2() {
|
|
val set = set()
|
|
assertTrue(set.size == 3)
|
|
|
|
assertTrue(set.size == 3)
|
|
|
|
assertTrue(set["2"] == "2")
|
|
set.remove("2")
|
|
assertTrue(set.size == 2)
|
|
|
|
assertTrue(set["2"] == null)
|
|
|
|
val keep = listOf("1")
|
|
set.retainAll(keep)
|
|
assertTrue(set.size == 1)
|
|
assertTrue(set["1"] == "1")
|
|
|
|
set.clear()
|
|
|
|
assertTrue(set.isEmpty())
|
|
assertTrue(set.size == 0)
|
|
}
|
|
}
|