/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.utils.servicemanager; import static org.junit.Assert.*; import org.junit.Test; /** * Tests the ability of a provider holder to release a reference correctly * * @author Aaron Zeckoski (azeckoski @ gmail.com) */ public class ProviderHolderTest { public class Thing { public String stuff; } @Test public void testHolder() { ProviderHolder<Thing> holder = new ProviderHolder<Thing>(); assertNull(holder.getProvider()); Thing t = new Thing(); holder.setProvider( t ); Thing t2 = holder.getProvider(); assertNotNull(t2); assertEquals(t, t2); //trash the references t = t2 = null; } @Test public void testHolderRelease() { ProviderHolder<Thing> holder = new ProviderHolder<Thing>(); Thing t = new Thing(); holder.setProvider( t ); Thing t2 = holder.getProvider(); assertNotNull(t2); assertEquals(t, t2); // trash the references t = null; t2 = null; System.gc(); // yuck but it works Thing t3 = holder.getProvider(); assertNull(t3); t3 = null; } @Test public void testHolderException() { ProviderHolder<Thing> holder = new ProviderHolder<Thing>(); try { holder.getProviderOrFail(); fail("Should have died"); } catch (ProviderNotFoundException e) { assertNotNull(e.getMessage()); } Thing t = new Thing(); holder.setProvider( t ); Thing t2 = holder.getProviderOrFail(); assertNotNull(t2); assertEquals(t, t2); //trash the references t = t2 = null; } @Test public void testHolderHashEqualsString() { ProviderHolder<Thing> holder = new ProviderHolder<Thing>(); assertNotNull( holder.hashCode() ); assertFalse( holder.equals(null) ); assertNotNull( holder.toString() ); holder.setProvider( new Thing() ); assertNotNull( holder.hashCode() ); assertFalse( holder.equals(null) ); assertNotNull( holder.toString() ); holder = null; } }