Coverage Report - org.apache.commons.collections.primitives.IntStack
 
Classes in this File Line Coverage Branch Coverage Complexity
IntStack
85%
23/27
91%
11/12
1.909
 
 1  
 /*
 2  
  * Licensed to the Apache Software Foundation (ASF) under one or more
 3  
  * contributor license agreements.  See the NOTICE file distributed with
 4  
  * this work for additional information regarding copyright ownership.
 5  
  * The ASF licenses this file to You under the Apache License, Version 2.0
 6  
  * (the "License"); you may not use this file except in compliance with
 7  
  * the License.  You may obtain a copy of the License at
 8  
  *
 9  
  *     http://www.apache.org/licenses/LICENSE-2.0
 10  
  *
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  */
 17  
 package org.apache.commons.collections.primitives;
 18  
 
 19  
 import java.util.EmptyStackException;
 20  
 
 21  
 import org.apache.commons.collections.primitives.ArrayIntList;
 22  
 
 23  
 /**
 24  
  * A primitive int based Stack.
 25  
  *
 26  
  * @author Apache Directory Project
 27  
  * @since Commons Primitives 1.1
 28  
  * @version $Revision: 480460 $ $Date: 2006-11-29 03:14:21 -0500 (Wed, 29 Nov 2006) $
 29  
  */
 30  
 public class IntStack
 31  
 {
 32  
     /** the underlying dynamic primitive backing store */
 33  9
     private ArrayIntList list = new ArrayIntList() ;
 34  
     
 35  
     
 36  
     public IntStack()
 37  7
     {
 38  7
     }
 39  
     
 40  
     
 41  
     public IntStack( int[] numbas )
 42  2
     {
 43  10
         for ( int ii = 0; ii < numbas.length; ii++ )
 44  
         {    
 45  8
             list.add( numbas[ii] ) ;
 46  
         }
 47  2
     }
 48  
     
 49  
 
 50  
     /**
 51  
      * Tests if this stack is empty.
 52  
      * 
 53  
      * @return true if and only if this stack contains no ints; false otherwise
 54  
      */
 55  
     public boolean empty()
 56  
     {
 57  4
         return list.isEmpty() ;
 58  
     }
 59  
 
 60  
     
 61  
     /**
 62  
      * Looks at the int at the top of this stack without removing it from 
 63  
      * the stack.
 64  
      * 
 65  
      * @return int at the top of this stack (last int in ArrayIntList)
 66  
      * @throws EmptyStackException if this stack is empty
 67  
      */
 68  
     public int peek()
 69  
     {
 70  11
         if ( list.isEmpty() )
 71  
         {
 72  1
             throw new EmptyStackException() ;
 73  
         }
 74  
         
 75  10
         return list.get( list.size() - 1 ) ;
 76  
     }
 77  
 
 78  
     
 79  
     /**
 80  
      * Return the n'th int down the stack, where 0 is the top element and
 81  
      * [size()-1] is the bottom element.
 82  
      *
 83  
      * @param n the element index
 84  
      * @return the element at the index
 85  
      * @throws EmptyStackException if the stack is empty
 86  
      * @throws IndexOutOfBoundsException if the index is out of bounds
 87  
      */
 88  
     public int peek( int n )
 89  
     {
 90  4
         if ( list.isEmpty() )
 91  
         {
 92  0
             throw new EmptyStackException() ;
 93  
         }
 94  
 
 95  4
         return list.get( list.size() - n - 1 ) ;
 96  
     }
 97  
 
 98  
 
 99  
     /**
 100  
      * Removes the int at the top of this stack and returns that object as the 
 101  
      * value of this function.
 102  
      * 
 103  
      * @return int at the top of this stack (last int in ArrayIntList)
 104  
      * @throws EmptyStackException if this stack is empty
 105  
      */
 106  
     public int pop()
 107  
     {
 108  18
         if ( list.isEmpty() )
 109  
         {
 110  1
             throw new EmptyStackException() ;
 111  
         }
 112  
         
 113  17
         return list.removeElementAt( list.size() - 1 ) ;
 114  
     }
 115  
 
 116  
     
 117  
     /**
 118  
      * Pushes an int item onto the top of this stack.
 119  
      * 
 120  
      * @param item the int item to push onto this stack
 121  
      * @return the item argument for call chaining
 122  
      */
 123  
     public int push( int item )
 124  
     {
 125  37
         list.add( item ) ;
 126  37
         return item ;
 127  
     }
 128  
     
 129  
 
 130  
     /**
 131  
      * Returns the 1-based position where an int is on this stack. If the int 
 132  
      * occurs as an item in this stack, this method returns the distance from 
 133  
      * the top of the stack of the occurrence nearest the top of the stack; the 
 134  
      * topmost item on the stack is considered to be at distance 1. 
 135  
      * 
 136  
      * @param item the int to search for from the top down
 137  
      * @return the 1-based position from the top of the stack where the int is 
 138  
      *  located; the return value -1 indicates that the int is not on the stack
 139  
      */
 140  
     public int search( int item )
 141  
     {
 142  11
         for ( int ii = list.size() - 1; ii >= 0; ii-- )
 143  
         {
 144  10
             if ( list.get( ii ) == item )
 145  
             {
 146  3
                 return list.size() - ii ;
 147  
             }
 148  
         }
 149  
         
 150  
         
 151  1
         return -1 ;
 152  
     }
 153  
     
 154  
     
 155  
     /**
 156  
      * Gets items from the stack where the index is zero based and the top of
 157  
      * the stack is at an index of size()-1 with the bottom of the stack at an
 158  
      * index of 0.
 159  
      * 
 160  
      * @param index the index into the stack treated as a list
 161  
      * @return the int value at the index
 162  
      */
 163  
     public int get( int index )
 164  
     {
 165  0
         return list.get( index ) ;
 166  
     }
 167  
     
 168  
     
 169  
     /**
 170  
      * Gets the size of this stack.
 171  
      * 
 172  
      * @return the size of this stack
 173  
      */
 174  
     public int size()
 175  
     {
 176  1
         return list.size() ;
 177  
     }
 178  
     
 179  
 
 180  
     /**
 181  
      * Empties the contents of the stack.
 182  
      */
 183  
     public void clear()
 184  
     {
 185  0
         list.clear() ;
 186  0
     }
 187  
 }