/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.support;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
/**
* Test case for {@link freenet.support.ByteArrayWrapper} class.
* @author stuart martin <wavey@freenetproject.org>
*/
public class ByteArrayWrapperTest extends TestCase {
private static final String DATA_STRING_1 = "asldkjaskjdsakdhasdhaskjdhaskjhbkasbhdjkasbduiwbxgdoudgboewuydxbybuewyxbuewyuwe";
private static final String DATA_STRING_2 = "string2";
public void testWrapper() {
byte[] data1 = DATA_STRING_1.getBytes();
byte[] data2 = DATA_STRING_2.getBytes();
ByteArrayWrapper wrapper1 = new ByteArrayWrapper(data1);
ByteArrayWrapper wrapper2 = new ByteArrayWrapper(data1);
ByteArrayWrapper wrapper3 = new ByteArrayWrapper(data2);
assertEquals(wrapper1, wrapper2);
assertTrue(wrapper1.equals(wrapper2));
assertFalse(wrapper2.equals(wrapper3));
assertFalse(wrapper1.equals(""));
Map<ByteArrayWrapper, ByteArrayWrapper> map = new HashMap<ByteArrayWrapper, ByteArrayWrapper>();
map.put(wrapper1, wrapper1);
map.put(wrapper2, wrapper2); // should clobber 1 by hashcode
map.put(wrapper3, wrapper3);
Object o1 = map.get(wrapper1);
Object o2 = map.get(wrapper2);
Object o3 = map.get(wrapper3);
assertEquals(o1, o2); // are wrapper1 and wrapper2 considered equivalent by hashcode?
assertFalse(o1 == wrapper1); // did wrapper1 survive?
assertTrue(o1 == wrapper2); // did wrapper1 get replaced by 2?
assertTrue(o3 == wrapper3); // did wrapper3 get returned by hashcode correctly?
}
}