// run this with 'java -classpath ".;D:/hak/hlt/classes" ArrayListTest'

// this will not work with java.util.ArrayList (method secureSet does not exist):
// import java.util.ArrayList;
import hlt.language.util.ArrayList;

public class ArrayListTest
{
  // comment out if using java.util.ArrayList
  final public static void secureSetting ()
  {
    System.out.println("------------------------------------------------------------------------");
    System.out.println("SECURE SETTING TEST:\n");

    ArrayList a = new ArrayList(20);

    a.add("0");
    a.add("1");
    a.add("2");
    System.out.println("size = "+a.size());
    a.secureSet(8,"8");
    a.secureSet(9,"9");
    System.out.println("size = "+a.size());
    a.secureSet(99,"99");
    System.out.println("size = "+a.size());
  }

  final public static void insecureSetting ()
  {
    System.out.println("------------------------------------------------------------------------");
    System.out.println("INSECURE SETTING TEST:\n");

    ArrayList a = new ArrayList(20);

    a.add("0");
    a.add("1");
    a.add("2");
    System.out.println("size = "+a.size());
    a.ensureCapacity(15); // should be ok since capacity is 20
    System.out.println("So capacity is more than 15");
    // java.util.ArrayList bug: the following gives an out-of-bound exception
    // even though the initial capacity is 20 whether or not ensureCapacity(15)
    // was called!!!
    a.set(8,"8");
    a.set(9,"9");
    System.out.println("capacity = "+a.size());
    // a.ensureCapacity(100);	// must be 1 plus the index we wish to set:
    a.set(99,"99"); // if the ensureCapacity is commented out, will raise an exception
    System.out.println("size = "+a.size());
  }

  final public static void main (String args[])
  {
    secureSetting(); // comment out if using java.util.ArrayList
    insecureSetting();
  }

}
