All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.unimi.dsi.fastutil.objects.Object2ObjectArrayMapTest Maven / Gradle / Ivy

Go to download

fastutil extends the Java Collections Framework by providing type-specific maps, sets, lists, and queues with a small memory footprint and fast access and insertion; it provides also big (64-bit) arrays, sets and lists, sorting algorithms, fast, practical I/O classes for binary and text files, and facilities for memory mapping large files. Note that if you have both this jar and fastutil-core.jar in your dependencies, fastutil-core.jar should be excluded.

There is a newer version: 8.5.15
Show newest version
package it.unimi.dsi.fastutil.objects;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import it.unimi.dsi.fastutil.io.BinIO;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Map.Entry;

import org.junit.Test;

public class Object2ObjectArrayMapTest  {


	@SuppressWarnings("boxing")
	@Test
	public void testContainsNull() {
		Object2ObjectArrayMap m = new Object2ObjectArrayMap( new Integer[] { 1, 2, 3 },  new Integer[] { 1, 2, 3 } );
		assertFalse( m.containsKey( null ) );
		assertTrue( m.get( null ) == null );
	}

	@SuppressWarnings("boxing")
	@Test
	public void testEquals() {
		Object2ObjectArrayMap a1 = new Object2ObjectArrayMap();
		a1.put(0,  1);
		a1.put(1000, -1);
		a1.put(2000, 3);

		Object2ObjectArrayMap a2 = new Object2ObjectArrayMap();
		a2.put(0,  1);
		a2.put(1000, -1);
		a2.put(2000, 3);

		assertEquals(a1, a2);

		Object2ObjectArrayMap m = new Object2ObjectArrayMap( new Integer[] { 1, 2 },  new Integer[] { 1, 2 } );
		assertFalse( m.equals( new Object2ObjectOpenHashMap( new Integer[] { 1, null }, new Integer[] { 1, 1 } ) ) );
	}

	@SuppressWarnings({ "boxing" })
	@Test
	public void testMap() {
		for( int i = 0; i <= 1; i++ ) {
			Object2ObjectArrayMap m = i == 0 ? new Object2ObjectArrayMap() : new Object2ObjectArrayMap( new Integer[] { 0 }, new Integer[] { 0 } );
			assertEquals( null, m.put( 1, 1 ) );
			assertEquals( 1 + i, m.size() );
			assertTrue( m.containsKey( 1 ) );
			assertTrue( m.containsValue( 1 ) );
			assertEquals( null, m.put(  2, 2  ) );
			assertTrue( m.containsKey( 2 ) );
			assertTrue( m.containsValue( 2 ) );
			assertEquals( 2 + i, m.size() );
			assertEquals(  Integer.valueOf( 1 ), m.put( 1, 3 ) );
			assertTrue( m.containsValue( 3 ) );
			assertEquals( null, m.remove( 3 ) );
			assertEquals( null, m.put(  3, 3  ) );
			assertTrue( m.containsKey( 3 ) );
			assertTrue( m.containsValue( 3 ) );
			assertEquals( 3 + i, m.size() );
			assertEquals( Integer.valueOf( 3 ), m.get( 1 ) );
			assertEquals( Integer.valueOf( 2 ), m.get( 2 ) );
			assertEquals( Integer.valueOf( 3 ), m.get( 3 ) );
			assertEquals( new ObjectOpenHashSet( i == 0 ? new Integer[] { 1, 2, 3 } : new Integer[] { 0, 1, 2, 3 } ), new ObjectOpenHashSet( m.keySet().iterator() ) );
			assertEquals( new ObjectOpenHashSet( i == 0 ? new Integer[] { 3, 2, 3 } : new Integer[] { 0, 3, 2, 3 } ), new ObjectOpenHashSet( m.values().iterator() ) );

			for( Entry e: m.entrySet() ) assertEquals( e.getValue(), m.get( e.getKey() ) );

			assertTrue( i != 0 == m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 0, 0 ) ) );
			assertTrue( m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 1, 3 ) ) );
			assertTrue( m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 2, 2 ) ) );
			assertTrue( m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 3, 3 ) ) );
			assertFalse( m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 1, 2 ) ) );
			assertFalse( m.entrySet().contains( new AbstractObject2ObjectMap.BasicEntry( 2, 1 ) ) );

			assertEquals( Integer.valueOf( 3 ), m.remove( 3 ) );
			assertEquals( 2 + i, m.size() );
			assertEquals( Integer.valueOf( 3 ), m.remove( 1 ) );
			assertEquals( 1 + i, m.size() );
			assertFalse( m.containsKey( 1 ) );
			assertEquals( Integer.valueOf( 2 ), m.remove( 2 ) );
			assertEquals( 0 + i, m.size() );
			assertFalse( m.containsKey( 1 ) );
		}
	}
	
	@SuppressWarnings("boxing")
	@Test
	public void testClone() {
		Object2ObjectArrayMap m = new Object2ObjectArrayMap();
		assertEquals( m, m.clone() );
		m.put( 0, 1 );
		assertEquals( m, m.clone() );
		m.put( 0, 2 );
		assertEquals( m, m.clone() );
		m.put( 1, 2 );
		assertEquals( m, m.clone() );
		m.remove( 1 );
		assertEquals( m, m.clone() );
	}

	@SuppressWarnings("boxing")
	@Test
	public void testSerialisation() throws IOException, ClassNotFoundException {
		Object2ObjectArrayMap m = new Object2ObjectArrayMap();
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream( baos );
		oos.writeObject( m );
		oos.close();
		assertEquals( m, BinIO.loadObject( new ByteArrayInputStream( baos.toByteArray() ) ) );
		
		m.put( 0, 1 );
		m.put( 1, 2 );

		baos.reset();
		oos = new ObjectOutputStream( baos );
		oos.writeObject( m );
		oos.close();
		assertEquals( m, BinIO.loadObject( new ByteArrayInputStream( baos.toByteArray() ) ) );
	}
	
	@SuppressWarnings("boxing")
	@Test
	public void testIteratorRemove() {
		Object2ObjectArrayMap m = new Object2ObjectArrayMap( new Integer[] { 1, 2, 3 },  new Integer[] { 1, 2, 3 } );
		ObjectIterator> keySet = m.entrySet().iterator();
		keySet.next();
		keySet.next();
		keySet.remove();
		assertTrue( keySet.hasNext() );
		Entry next = keySet.next();
		assertEquals( Integer.valueOf( 3 ), next.getKey() );
		assertEquals( Integer.valueOf( 3 ), next.getValue() );
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy