gnu.trove.stack.array.TStackTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
High performance collections for Java
The newest version!
///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2001, Eric D. Friedman All Rights Reserved.
// Copyright (c) 2009, Rob Eden All Rights Reserved.
// Copyright (c) 2009, Jeff Randall All Rights Reserved.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
///////////////////////////////////////////////////////////////////////////////
package gnu.trove.stack.array;
import gnu.trove.list.array.TIntArrayList;
import gnu.trove.stack.TIntStack;
import junit.framework.TestCase;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
*
*/
public class TStackTest extends TestCase {
public TStackTest() {
super();
}
public TStackTest( String string ) {
super( string );
}
public void testConstructors() {
TIntStack stack = new TIntArrayStack();
assertEquals( 0, stack.size() );
stack.push( 10 );
stack.push( 20 );
assertEquals( 2, stack.size() );
TIntStack other = new TIntArrayStack( 20 );
other.push( 10 );
other.push( 20 );
assertEquals( 2, other.size() );
assertTrue( "stacks should be equal: " + stack + ", " + other,
stack.equals( other ) );
TIntStack copy = new TIntArrayStack( stack );
assertTrue( "stacks should be equal: " + stack + ", " + copy,
stack.equals( copy ) );
}
public void testBasic() {
TIntStack stack = new TIntArrayStack();
assertEquals( 0, stack.size() );
stack.push( 10 );
assertEquals( 1, stack.size() );
assertEquals( 10, stack.peek() );
assertEquals( 1, stack.size() );
assertEquals( 10, stack.peek() );
assertEquals( 1, stack.size() );
assertEquals( 10, stack.pop() );
assertEquals( 0, stack.size() );
stack.push( 10 );
stack.push( 20 );
stack.push( 30 );
assertEquals( 3, stack.size() );
assertEquals( 30, stack.pop() );
assertEquals( 20, stack.pop() );
assertEquals( 10, stack.pop() );
}
public void testArrays() {
int no_entry_value = Integer.MIN_VALUE;
TIntStack stack = new TIntArrayStack(10, no_entry_value);
assertEquals( no_entry_value, stack.getNoEntryValue() );
int[] array;
array = stack.toArray();
assertNotNull( array );
assertEquals( 0, array.length );
stack.push( 10 );
stack.push( 20 );
stack.push( 30 );
stack.push( 40 );
array = stack.toArray();
assertNotNull( array );
assertEquals( 4, array.length );
// NOTE: Top element in stack should be first element in array
assertEquals( 40, array[0] );
assertEquals( 30, array[1] );
assertEquals( 20, array[2] );
assertEquals( 10, array[3] );
assertEquals( 4, stack.size() );
int[] array_correct_size = new int[4];
stack.toArray( array_correct_size );
assertEquals( 40, array_correct_size[0] );
assertEquals( 30, array_correct_size[1] );
assertEquals( 20, array_correct_size[2] );
assertEquals( 10, array_correct_size[3] );
int[] array_too_long = new int[6];
stack.toArray( array_too_long );
assertEquals( 40, array_too_long[0] );
assertEquals( 30, array_too_long[1] );
assertEquals( 20, array_too_long[2] );
assertEquals( 10, array_too_long[3] );
assertEquals( stack.getNoEntryValue(), array_too_long[4] );
int[] array_too_short = new int[2];
stack.toArray( array_too_short );
assertEquals( 40, array_too_short[0] );
assertEquals( 30, array_too_short[1] );
}
public void testClear() {
TIntStack stack = new TIntArrayStack();
assertEquals( 0, stack.size() );
stack.push( 10 );
assertEquals( 1, stack.size() );
assertEquals( 10, stack.pop() );
assertEquals( 0, stack.size() );
stack.push( 10 );
stack.push( 20 );
stack.push( 30 );
assertEquals( 3, stack.size() );
stack.clear();
assertEquals( 0, stack.size() );
}
public void testEquals() {
TIntStack stack = new TIntArrayStack();
assertEquals( 0, stack.size() );
stack.push( 10 );
stack.push( 20 );
assertEquals( 2, stack.size() );
TIntStack other = new TIntArrayStack( 20 );
other.push( 10 );
other.push( 20 );
assertEquals( 2, other.size() );
assertTrue( "stacks should equal itself: " + stack,
stack.equals( stack ) );
assertTrue( "stacks should be equal: " + stack + ", " + other,
stack.equals( other ) );
TIntArrayList list = new TIntArrayList( stack.toArray() );
assertFalse( "stack should not equal list: " + stack + ", " + list,
stack.equals( list ) );
}
public void testHashCode() {
TIntStack stack = new TIntArrayStack();
assertEquals( 0, stack.size() );
stack.push( 10 );
stack.push( 20 );
assertEquals( 2, stack.size() );
TIntStack other = new TIntArrayStack( 20 );
other.push( 10 );
other.push( 20 );
assertEquals( 2, other.size() );
assertTrue( "stack hashcode should equal itself: " + stack,
stack.hashCode() == stack.hashCode() );
assertTrue( "stacks should be equal: " + stack + ", " + other,
stack.hashCode() == other.hashCode() );
other.push( 30 );
assertFalse( "stack should not equal list: " + stack + ", " + other,
stack.hashCode() == other.hashCode() );
}
public void testSerialize() throws Exception {
TIntStack stack = new TIntArrayStack();
stack.push( 10 );
stack.push( 20 );
stack.push( 30 );
stack.push( 40 );
stack.push( 50 );
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( stack );
ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );
ObjectInputStream ois = new ObjectInputStream( bais );
TIntStack serialized = (TIntStack) ois.readObject();
assertEquals( stack, serialized );
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy