/* Glazed Lists                                                 (c) 2012       */
/* http://glazedlists.com/                                                     */
package ca.odell.glazedlists.impl.adt;

import org.junit.Test;

import static org.junit.Assert.*;


/**
 * @author <a href="mailto:rob@starlight-systems.com">Rob Eden</a>
 */
public class IntArrayListTest {

	@Test
	public void testSimpleUsage() {
		IntArrayList list = new IntArrayList( 10 );

		// 0-9
		for( int i = 0; i < 10; i++ ) {
			list.add( i );
		}
		assertEquals( 10, list.size() );
		assertEquals( false, list.isEmpty() );
		for( int i = 0; i < 10; i++ ) {
			assertEquals( i, list.get( i ) );
		}
		for( int i = 0; i < 10; i++ ) {
			list.set( i, list.get( i ) + 1 );
		}
		for( int i = 0; i < 10; i++ ) {
			assertEquals( i + 1, list.get( i ) );
		}


		list.clear();
		assertEquals( 0, list.size() );
		assertEquals( true, list.isEmpty() );


		// 0-99
		for( int i = 0; i < 100; i++ ) {
			assertEquals( i, list.size() );
			list.add( i * 3 );
			assertEquals( i + 1, list.size() );
		}
		for( int i = 0; i < 100; i++ ) {
			assertEquals( i * 3, list.get( i ) );
		}


		// Out of bounds get
		try {
			list.get( 100 );
			fail( "Shouldn't get here" );
		}
		catch( IndexOutOfBoundsException ex ) {
			// this is good
		}

		// Out of bounds set
		try {
			list.set( 100, 0 );
			fail( "Shouldn't get here" );
		}
		catch( IndexOutOfBoundsException ex ) {
			// this is good
		}
	}
}
