Skip to content

Commit 62e1cb2

Browse files
committed
tests: mutable map
1 parent 9cc0676 commit 62e1cb2

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/test/java/UserMapConcurrencyTest.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import org.junit.Test;
22

3-
import java.util.Map;
43
import java.util.concurrent.locks.ReadWriteLock;
54
import java.util.concurrent.locks.ReentrantReadWriteLock;
5+
import java.util.function.Function;
6+
import java.util.stream.Collectors;
7+
import java.util.stream.Stream;
68

79
import static org.hamcrest.CoreMatchers.is;
810
import static org.hamcrest.MatcherAssert.assertThat;
@@ -11,29 +13,35 @@
1113
* Created by mtumilowicz on 2019-01-25.
1214
*/
1315
public class UserMapConcurrencyTest {
14-
15-
private Map<Integer, User> userMap = Map.of(
16-
1, new User(1, 40),
17-
2, new User(2, 33)
18-
);
19-
2016
@Test
2117
public void write_transfer() {
18+
var userMap = Stream.of(
19+
new User(1, 40),
20+
new User(2, 33)
21+
).collect(Collectors.toMap(User::getId, Function.identity()));
22+
2223
ReadWriteLock lock = new ReentrantReadWriteLock();
2324
LockExecutor executor = new LockExecutor(lock);
2425

25-
var transferred = executor.write(() -> {
26+
executor.write(() -> {
2627
var transfer = PositiveInt.of(15);
27-
return Map.of(1, userMap.get(1).outcome(transfer),
28-
2, userMap.get(2).income(transfer));
28+
userMap.replace(1, userMap.get(1).outcome(transfer));
29+
userMap.replace(2, userMap.get(2).income(transfer));
30+
31+
return Void.class;
2932
});
3033

31-
assertThat(transferred.get(1).getBalance(), is(25));
32-
assertThat(transferred.get(2).getBalance(), is(48));
34+
assertThat(userMap.get(1).getBalance(), is(25));
35+
assertThat(userMap.get(2).getBalance(), is(48));
3336
}
3437

3538
@Test
3639
public void read_sum_balance() {
40+
var userMap = Stream.of(
41+
new User(1, 40),
42+
new User(2, 33)
43+
).collect(Collectors.toMap(User::getId, Function.identity()));
44+
3745
ReadWriteLock lock = new ReentrantReadWriteLock();
3846
LockExecutor executor = new LockExecutor(lock);
3947

0 commit comments

Comments
 (0)