
import java.util.Scanner;

/**
 * A program to test the TextItems class.
 *
 * @author Mark Young (A00000000)
 */
public class TestMyTextItems {
    
    public static final Scanner KBD = new Scanner(System.in);

    public static void main(String[] args) {

        // One Item File
        TextItems ti = new TextItems("OneItem.txt", KBD);
        System.out.println("---Displaying only item from OneItem---");
        ti.displayItem("Only Item");
        System.out.println("---End of item---");
        pause();

        // Two Item File
        ti = new TextItems("MiniItems.txt", KBD);
        System.out.println("---Displaying First Item from MiniItems---");
        ti.displayItem("First Item");
        System.out.println("---End of item---");
        pause();
        System.out.println("---Displaying Second Item from MiniItems---");
        ti.displayItem("Second Item");
        System.out.println("---End of item---");
        pause();

        // Many Item File
        ti = new TextItems("ManyItems.txt", KBD);
        System.out.println("---Displaying many items from ManyItems---");
        for (int i = 1; i <= 1000; i += 100) {
            ti.displayItem("Item #" + i);
        }
        System.out.println("---End of items from ManyItems---");
        pause();

        // Item fail
        System.out.println("---Displaying No Such Item from ManyItems---");
        try {
            ti.displayItem("No Such Item");
            System.out.println("---End of non-existent item---");
        } catch (Exception e) {
            System.err.println("Threw " + e);
        }
        pause();

        // With pauses in
        ti = new TextItems("WithPauses.txt", KBD);
        System.out.println("---Displaying First Item With Pauses---");
        ti.displayItem("First Item");
        System.out.println("---End of item---");
        pause();
        System.out.println("---Displaying Second Item from WithPauses---");
        ti.displayItem("Second Item");
        System.out.println("---End of item---");
        System.out.println("---Displaying null from WithPauses---");
        try {
            ti.displayItem(null);
            System.out.println("---End of item---");
        } catch (Exception e) {
            System.err.println("Threw " + e);
        }
        pause();

        // Creation fail #1
        System.out.println("---Creation Fail #1---");
        try {
            ti = new TextItems("NoSuchFile.txt", KBD);
            System.out.println("---Displaying No Such from NoSuchFile---");
            ti.displayItem("No Such");
            System.out.println("---End of item---");
        } catch (Exception e) {
            System.err.println("Threw " + e);
        }
        pause();

        // Creation fail #2
        System.out.println("---Creation Fail #2---");
        try {
            ti = new TextItems("Truncated.txt", KBD);
            System.out.println("---Displaying First Item from Truncated---");
            ti.displayItem("First Item");
            System.out.println("---End of item---");
            System.out.println("---Displaying Second Item from Truncated---");
            ti.displayItem("Second Item");
            System.out.println("---End of item---");
            System.out.println("---Displaying Third Item from Truncated---");
            ti.displayItem("Third Item");
            System.out.println("---End of item---");
        } catch (Exception e) {
            System.err.println("Threw " + e);
        }
        pause();

        System.out.println("\nThis is the end of the program\n");
    }

    /**
     * Prompt the user and wait for them to press enter. DELIBERATELY different
     * from the standard pause "...press enter...".
     */
    public static void pause() {
        Scanner kbd = new Scanner(System.in);
        System.out.print("\n..........PRESS ENTER TO CONTINUE..........");
        kbd.nextLine();
        System.out.println();
    }

}
