/*
* *************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
* *************************************************************************************
*/
package com.espertech.esper.collection;
import junit.framework.TestCase;
public class TestRefCountedMap extends TestCase
{
private RefCountedMap<String, Integer> refMap;
public void setUp()
{
refMap = new RefCountedMap<String, Integer>();
refMap.put("a", 100);
}
public void testPut()
{
try
{
refMap.put("a", 10);
TestCase.fail();
}
catch (IllegalStateException ex)
{
// Expected exception
}
try
{
refMap.put(null, 10);
TestCase.fail();
}
catch (IllegalArgumentException ex)
{
// Expected exception
}
}
public void testGet()
{
Integer val = refMap.get("b");
assertNull(val);
val = refMap.get("a");
assertEquals(100, (int) val);
}
public void testReference()
{
refMap.reference("a");
try
{
refMap.reference("b");
TestCase.fail();
}
catch (IllegalStateException ex)
{
// Expected exception
}
}
public void testDereference()
{
boolean isLast = refMap.dereference("a");
assertTrue(isLast);
refMap.put("b", 100);
refMap.reference("b");
assertFalse(refMap.dereference("b"));
assertTrue(refMap.dereference("b"));
try
{
refMap.dereference("b");
TestCase.fail();
}
catch (IllegalStateException ex)
{
// Expected exception
}
}
public void testFlow()
{
refMap.put("b", -1);
refMap.reference("b");
assertEquals(-1, (int) refMap.get("b"));
assertFalse(refMap.dereference("b"));
assertEquals(-1, (int) refMap.get("b"));
assertTrue(refMap.dereference("b"));
assertNull(refMap.get("b"));
refMap.put("b", 2);
refMap.reference("b");
refMap.put("c", 3);
refMap.reference("c");
refMap.dereference("b");
refMap.reference("b");
assertEquals(2, (int) refMap.get("b"));
assertFalse(refMap.dereference("b"));
assertTrue(refMap.dereference("b"));
assertNull(refMap.get("b"));
assertEquals(3, (int) refMap.get("c"));
assertFalse(refMap.dereference("c"));
assertEquals(3, (int) refMap.get("c"));
assertTrue(refMap.dereference("c"));
assertNull(refMap.get("c"));
}
}