1 19 20 package org.netbeans.spi.project.support.ant; 21 22 import java.lang.ref.Reference ; 23 import java.lang.ref.WeakReference ; 24 import java.util.Collections ; 25 import java.util.HashMap ; 26 import org.netbeans.junit.NbTestCase; 27 28 31 public class FilterPropertyProviderTest extends NbTestCase { 32 33 public FilterPropertyProviderTest(String name) { 34 super(name); 35 } 36 37 public void testDelegatingPropertyProvider() throws Exception { 38 AntBasedTestUtil.TestMutablePropertyProvider mpp = new AntBasedTestUtil.TestMutablePropertyProvider(new HashMap <String ,String >()); 39 DPP dpp = new DPP(mpp); 40 AntBasedTestUtil.TestCL l = new AntBasedTestUtil.TestCL(); 41 dpp.addChangeListener(l); 42 assertEquals("initially empty", Collections.emptyMap(), dpp.getProperties()); 43 mpp.defs.put("foo", "bar"); 44 mpp.mutated(); 45 assertTrue("got a change", l.expect()); 46 assertEquals("now right contents", Collections.singletonMap("foo", "bar"), dpp.getProperties()); 47 AntBasedTestUtil.TestMutablePropertyProvider mpp2 = new AntBasedTestUtil.TestMutablePropertyProvider(new HashMap <String ,String >()); 48 mpp2.defs.put("foo", "bar2"); 49 dpp.setDelegate_(mpp2); 50 assertTrue("got a change from new delegate", l.expect()); 51 assertEquals("right contents from new delegate", Collections.singletonMap("foo", "bar2"), dpp.getProperties()); 52 mpp2.defs.put("foo", "bar3"); 53 mpp2.mutated(); 54 assertTrue("got a change in new delegate", l.expect()); 55 assertEquals("right contents", Collections.singletonMap("foo", "bar3"), dpp.getProperties()); 56 Reference <?> r = new WeakReference <Object >(mpp); 57 mpp = null; 58 assertGC("old delegates can be collected", r); 59 r = new WeakReference <Object >(dpp); 60 dpp = null; assertGC("delegating PP can be collected when delegate is not", r); } 63 64 private static final class DPP extends FilterPropertyProvider { 65 public DPP(PropertyProvider pp) { 66 super(pp); 67 } 68 public void setDelegate_(PropertyProvider pp) { 69 setDelegate(pp); 70 } 71 } 72 73 } 74 | Popular Tags |