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

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

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

File size: 1.6 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.extension.RegisterExtension;
11import org.junit.jupiter.api.Test;
12import org.openstreetmap.josm.testutils.JOSMTestRules;
13
14import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
15
16/**
17 * Tests for {@link ListenableWeakReference}
18 * @author Michael Zangl
19 * @since 12181
20 */
21class ListenableWeakReferenceTest {
22 /**
23 * Default test rules.
24 */
25 @RegisterExtension
26 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
27 public JOSMTestRules test = new JOSMTestRules();
28 private Object object;
29 private boolean called;
30
31 /**
32 * Tests that {@link ListenableWeakReference#onDereference()} is called.
33 * @throws InterruptedException never
34 */
35 @Test
36 void testOnDereference() throws InterruptedException {
37 object = new Object();
38 called = false;
39 ListenableWeakReference<Object> weak = new ListenableWeakReference<>(object, () -> called = true);
40 assertFalse(called);
41 assertSame(object, weak.get());
42
43 // now delete it
44 object = null;
45 System.gc();
46 System.runFinalization();
47 // now we wait for the listener thread
48 Thread.sleep(200);
49 assertTrue(called);
50
51 assertNotNull(weak);
52 assertNull(weak.get());
53 }
54
55}
Note: See TracBrowser for help on using the repository browser.