source: josm/trunk/test/unit/org/openstreetmap/josm/tools/ListenableWeakReferenceTest.java

Last change on this file was 18037, checked in by Don-vip, 3 years ago

fix #21064 - Add JUnit 5 extension for preferences (patch by taylor.smock)

File size: 1.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import static org.junit.jupiter.api.Assertions.assertFalse;
5import static org.junit.jupiter.api.Assertions.assertNotNull;
6import static org.junit.jupiter.api.Assertions.assertNull;
7import static org.junit.jupiter.api.Assertions.assertSame;
8import static org.junit.jupiter.api.Assertions.assertTrue;
9
10import org.junit.jupiter.api.Test;
11
12/**
13 * Tests for {@link ListenableWeakReference}
14 * @author Michael Zangl
15 * @since 12181
16 */
17class ListenableWeakReferenceTest {
18 private Object object;
19 private boolean called;
20
21 /**
22 * Tests that {@link ListenableWeakReference#onDereference()} is called.
23 * @throws InterruptedException never
24 */
25 @Test
26 void testOnDereference() throws InterruptedException {
27 object = new Object();
28 called = false;
29 ListenableWeakReference<Object> weak = new ListenableWeakReference<>(object, () -> called = true);
30 assertFalse(called);
31 assertSame(object, weak.get());
32
33 // now delete it
34 object = null;
35 System.gc();
36 System.runFinalization();
37 // now we wait for the listener thread
38 Thread.sleep(200);
39 assertTrue(called);
40
41 assertNotNull(weak);
42 assertNull(weak.get());
43 }
44
45}
Note: See TracBrowser for help on using the repository browser.