Also available as ColTest.java

/**
 * ColTest is a sample class that include a main that
 * tests a PIMCollection object by adding a number of 
 * various PIMEntity objects to the PIMCollection,
 * then test some of the PIMCollection methods.
 *
 * This is not an exhaustive test, just some sample 
 * code that might be helpful!
 */

import java.util.*;

class ColTest {

  /**
   * main creates some PIMEntity objects and adds them to
   * a PIMCollection. Then it extracts Collections of the 
   * various types of PIMEntitys to make sure the PIMCollection
   * works right
   */

  static public void main(String args[]) {
        PIMCollection pc = new PIMCollection();
        PIMNote note;
        PIMAppointment appt;
        PIMTodo todo;
        PIMContact contact;

        // add 5 PIMNotes to the collection
        for (int i=1;i<6;i++) {
          note = new PIMNote();
          note.setPriority("Note "+ i);
          pc.add(note);
        }
        
        // add 4 appointments
        for (int i=1;i<5;i++) {
          appt = new PIMAppointment();
          appt.setPriority("Appointment "+ i);
          pc.add(appt);
        }

        // add 3 todos
        for (int i=1;i<4;i++) {
          todo = new PIMTodo();
          todo.setPriority("Todo "+ i);
          pc.add(todo);
        }
        
        // add 2 Contacts
        for (int i=1;i<3;i++) {
          contact = new PIMContact();
          contact.setPriority("Contact "+ i);
          pc.add(contact);
        }

        // check getNotes

        if (!checkCollection(pc.getNotes(),"PIMNote","Note",5)) {
          System.out.println("Error - notes don't check out");
        } else {
          System.out.println("Notes looks good");
        }

        // check getAppointments

        if (!checkCollection(pc.getAppointments(),"PIMAppointment","Appointment",4)) {
          System.out.println("Error - Appointments don't check out");
        } else {
          System.out.println("Appointments looks good");
        }

        // check getTodos

        if (!checkCollection(pc.getTodos(),"PIMTodo","Todo",3)) {
          System.out.println("Error - todos don't check out");
        } else {
          System.out.println("Todos looks good");
        }

        // check getContacts
	// changed to call getContact() since that is what the hw
	// assignment says the method name should be.
	// during grading will will try both (so don't worry 
	// about which name you use).

        if (!checkCollection(pc.getContact(),"PIMContact","Contact",2)) {
          System.out.println("Error - Contacts don't check out");
        } else {
          System.out.println("Contacts looks good");
        }

        // make sure getItemsForDate does something (this should compile!)
        Collection cd = pc.getItemsForDate(new Date());
        
  }


  /** checkCollection is used to check a collection. This method makes
   * sure that the collection c contains items of the class ClassName,
   * and that each has a valid priority string (one created above) and
   * that the number of items in the Collection is as expected.
   */

  static boolean checkCollection( Collection c, 
                                                                  String ClassName, 
                                                                  String PriorityPrefix,
                                                                  int expectednumber) {

        Iterator i = c.iterator();

        // check each object in the Collection
        while (i.hasNext()) {
          Object x = i.next();

          // make sure the object in the collection is the right class
          if (! x.getClass().getName().equals(ClassName)) {
                // not the right type!
                System.out.println("Invalid object type: expected " +
                                                   ClassName + " but found " + x.getClass().getName());
                return false;

          }

          // now check the priority and see if it looks right
          String prio = ((PIMEntity) x).getPriority();
          if ( ! prio.startsWith(PriorityPrefix)) {
                System.out.println("Invalid priority string " + prio);
                return false;
          }        

        }

        // all the objects check out - make sure the number is right
        return(expectednumber == c.size());
  }
}