• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 
5 package kotlinx.atomicfu.test
6 
7 import kotlinx.atomicfu.atomic
8 import kotlin.test.Test
9 
10 class AA(val value: Int) {
11     val b = B(value + 1)
12     val c = C(D(E(value + 1)))
13 
updateToBnull14     fun updateToB(affected: Any): Boolean {
15         (affected as AtomicState).state.compareAndSet(this, b)
16         return (affected.state.value is B && (affected.state.value as B).value == value + 1)
17     }
18 
manyPropertiesnull19     fun manyProperties(affected: Any): Boolean {
20         (affected as AtomicState).state.compareAndSet(this, c.d.e)
21         return (affected.state.value is E && (affected.state.value as E).x == value + 1)
22     }
23 }
24 
25 class B (val value: Int)
26 class C (val d: D)
27 class D (val e: E)
28 class E (val x: Int)
29 
30 
31 class AtomicState(value: Any) {
32     val state = atomic<Any?>(value)
33 }
34 
35 class ScopeTest {
36     @Test
scopeTestnull37     fun scopeTest() {
38         val a = AA(0)
39         val affected: Any = AtomicState(a)
40         check(a.updateToB(affected))
41         val a1 = AA(0)
42         val affected1: Any = AtomicState(a1)
43         check(a1.manyProperties(affected1))
44     }
45 }