package mycollection;

class Test {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out
                    .println("please type some test data on the command line");
            System.exit(1);
        }
        //java.util.List list = new java.util.ArrayList();
        List list = new ArrayList();

        System.out.println("testing add");
        for (int i = 0; i < args.length; i++)
            list.add(args[i]);

        System.out.println("testing size/isEmpty");
        check(list.size() == args.length);
        check(list.isEmpty() == (args.length == 0));

        System.out.println("testing get");
        for (int i = 0; i < args.length; i++)
            check(list.get(i).equals(args[i]));

        System.out.println("testing contains");
        for (int i = 0; i < args.length; i++)
            check(list.contains(args[i]));

        System.out.println("testing set");
        for (int i = 0; i < args.length; i++)
            list.set(i, args[args.length - i - 1]);

        System.out.println("testing get");
        for (int i = 0; i < args.length; i++)
            check(list.get(i).equals(args[args.length - i - 1]));

        System.out.println("testing contains");
        for (int i = 0; i < args.length; i++)
            check(list.contains(args[i]));

        System.out.println("testing remove");
        for (int i = 0; i < args.length; i++)
            check(list.remove(args[i]));

        System.out.println("testing size/isEmpty");
        check(list.size() == 0);
        check(list.isEmpty());

        System.out.println("testing contains");
        for (int i = 0; i < args.length; i++)
            check(!list.contains(args[i]));

        System.out.println("testing add");
        for (int i = 0; i < args.length; i++)
            list.add(args[i]);

        System.out.println("testing iterator");
        // java.util.Iterator it = list.iterator();
        Iterator it = list.iterator();
        for (int i = 0; i < args.length; i++) {
            check(it.hasNext());
            check(it.next().equals(args[i]));
        }

        check(!it.hasNext());

        System.out.println("Tests Succeeded!");
    }

    static void check(boolean test) {
        if (!test) {
            System.out.println("FAILED");
            System.exit(1);
        }
    }
}
