/** 
    A test of the constructors and the methods add and toArray,
    as defined in the first draft of the class ArrayBag.
    @author Frank M. Carrano
    @version 4.0
*/
public class ArrayBagDemo1
{
	public static void main(String[] args) 
	{
      // Adding to an initially empty bag with sufficient capacity
      System.out.println("Testing an initially empty bag with " +
                         " the capacity to hold at least 6 strings:");
		BagInterface<String> aBag = new ArrayBag1<>();
		String[] contentsOfBag1 = {"A", "A", "B", "A", "C", "A"};
		testAdd(aBag, contentsOfBag1);
      // Filling an initially empty bag to capacity
      System.out.println("\nTesting an initially empty bag that " +
                         " will be filled to capacity:");
		aBag = new ArrayBag1<>(7);
		String[] contentsOfBag2 = {"A", "B", "A", "C", "B", "C", "D",
                                 "another string"};
		testAdd(aBag, contentsOfBag2);
	} // end main
	
   // Tests the method add.
	private static void testAdd(BagInterface<String> aBag,
                               String[] content)
	{
		System.out.print("Adding the following " + content.length +
                       " strings to the bag: ");
		for (int index = 0; index < content.length; index++)
		{
			if (aBag.add(content[index]))
            System.out.print(content[index] + " ");
         else
            System.out.print("\nUnable to add " + content[index] +
                             " to the bag.");
		} // end for
      System.out.println();
      
		displayBag(aBag);
	} // end testAdd
   // Tests the method toArray while displaying the bag.
	private static void displayBag(BagInterface<String> aBag)
	{
		System.out.println("The bag contains the following string(s):");		
		Object[] bagArray = aBag.toArray();
		for (int index = 0; index < bagArray.length; index++)
		{
			System.out.print(bagArray[index] + " ");
		} // end for
		
		System.out.println();
	} // end displayBag
} // end ArrayBagDemo1
/*
 Testing an initially empty bag with sufficient capacity:
 Adding the following 6 strings to the bag: A A B A C A
 The bag contains the following string(s):
 A A B A C A
 
 Testing an initially empty bag that will be filled to capacity:
 Adding the following 8 strings to the bag: A B A C B C D
 Unable to add another string to the bag.
 The bag contains the following string(s):
 A B A C B C D
*/