blob: 59f3b71f0879bd513f091e7ad2c4194b18a4a9d7 [file] [log] [blame]
package kotlinx.atomicfu.test
import kotlinx.atomicfu.AtomicBooleanArray
import kotlinx.atomicfu.AtomicIntArray
import kotlinx.atomicfu.atomicArrayOfNulls
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class SetArrayElementTest {
@Test
fun testGetArrayField() {
val aes = ArrayElementSetters()
assertTrue(aes.setInt(2, 5))
assertFalse(aes.setInt(2, 10))
assertTrue(aes.setBoolean(1, true))
assertTrue(aes.setRef(1, IntBox(29472395)))
assertFalse(aes.setRef(1, IntBox(81397)))
}
@Test
fun testTransformInMethod() {
val holder = AtomicArrayWithMethod()
holder.set("Hello", 0)
}
}
class ArrayElementSetters {
private val intArr = AtomicIntArray(3)
private val booleanArr = AtomicBooleanArray(4)
private val refArr = atomicArrayOfNulls<IntBox>(5)
fun setInt(index: Int, data: Int) = intArr[index].compareAndSet(0, data)
fun setBoolean(index: Int, data: Boolean) = booleanArr[index].compareAndSet(false, data)
fun setRef(index: Int, data: IntBox) = refArr[index].compareAndSet(null, data)
}
class AtomicArrayWithMethod {
val refArray = atomicArrayOfNulls<String>(5)
fun set(data: String, index: Int) {
val result = refArray[index].compareAndSet(null, data)
if (!result) error("Double set")
}
}