/* Comp1100 Sem 1, 2006
 * 
 * Supermarket Docket Example Program
 * 
 * A Test class for the supermarket docket example.
 * Construct a sample list of purchases and a sample database.
 *
 * Clem Baker-Finch May 2006
*/

import java.util.ArrayList;

class Test {

    public static void main (String [] args) {
	new Test();
    }

    // The test itself
    Test() {

	// Get the sample DB
	DB sampleDB = testDB();

	// Test with a list of barcodes
	ArrayList<Integer> purchases = testcodes();

	// Pring docket header
	System.out.println(Docket.heading());

	// Sequence through purchases, printing lines of docket and
	// keeping running total of cost
	Integer totalCost = 0;
	for (Integer code: purchases) {
	    Product item = sampleDB.find(code);
	    totalCost = totalCost + item.getPrice();
	    System.out.println(Docket.formatLine(item));
	}
	// Finally, print the total line of docket
	System.out.println(Docket.formatTotal(totalCost));

    }

    // ----- Test data -----
    // Make a list of barcodes for testing
    private ArrayList<Integer> testcodes() {
	ArrayList<Integer> codes = new ArrayList<Integer>();
	codes.add(1234);
	codes.add(3216);
	codes.add(4719);
	codes.add(1112);
	codes.add(1113);
	codes.add(3814);
	codes.add(1234);
	return codes;
    }
    // Make a sample Database for testing
    private DB testDB() {
	DB products = new DB();
	products.add(new Product(4719, "Frozen Pizza", 649));
	products.add(new Product(4756, "Tissues" , 1280));
	products.add(new Product(3814, "Hokkien Noodles", 205));
	products.add(new Product(5823, "Ice Cream" , 579));
	products.add(new Product(6012, "Lettuce (Iceberg)" , 179));
	products.add(new Product(6832, "Rice, 5kg" , 499));
	products.add(new Product(3216, "Ayam Chili Sauce", 350));
	products.add(new Product(1111, "Tim Tams", 379));
	products.add(new Product(3305, "Corn Flakes", 399));
	products.add(new Product(1112, "Mars Bar", 160));
	products.add(new Product(1234, "Chianti, 1lt", 1795));
	return products;
    }

}

