package com.sirhomersimpson.sortalgo;

import java.util.ArrayList;

import com.sirhomersimpson.sortalgo.data.MockData;
import com.sirhomersimpson.utils.SortUtility;
import com.sirhomersimpson.utils.Timer;

public class TestSortAlgo {

	private static int DATASIZE = 10;
	public static void main(String[] args) {
		//Prepare mock data 
		ArrayList<Integer> l = new ArrayList<Integer>();
		new MockData(DATASIZE,l); 
		
		// Copy from ArrayList to Integer
		Integer arr[] = new Integer[l.size()];
		int counter=0; 
		for (int x: l)
		{
			arr[counter++]= x;
		}

		SortFactory sortFactory = new SortFactory();
		SortAlgo sortAlgo = sortFactory.getAlgo("mergesort");

		Timer t = new Timer();
		// Bubble 
//		System.out.println ("Bubble Sort");
//		System.out.println ("Before Sort...");
//		SortUtility.printArray(arr);
//		Timer t = new Timer();
//		sortAlgo.Sort(arr);
//		System.out.println ("After Sort...");
//		SortUtility.printArray(arr);
//		System.out.println("Elapsed time(ms): "+t.elapsedTime());
		
		// Insertion Sort 
//		System.out.println ("Insertion Sort");
//		System.out.println ("Before Sort...");
//		SortUtility.printArray(arr);
//		t.resetTimer();
//		sortAlgo.Sort(arr);
//		System.out.println ("After Sort...");
//		SortUtility.printArray(arr);
//		System.out.println("Elapsed time(ms): "+t.elapsedTime());
		
		// Selection sort
//		System.out.println ("Selection Sort");
//		System.out.println ("Before Sort...");
//		SortUtility.printArray(arr);
//		t.resetTimer();
//		sortAlgo.Sort(arr);
//		System.out.println ("After Sort...");
//		SortUtility.printArray(arr);
//		System.out.println("Elapsed time(ms): "+t.elapsedTime());
		
		// Merge Sort
		System.out.println ("Merge Sort");
		System.out.println ("Before Sort...");
		SortUtility.printArray(arr);
		t.resetTimer();
		sortAlgo.Sort(arr);
		System.out.println ("After Sort...");
		SortUtility.printArray(arr);
		System.out.println("Elapsed time(ms): "+t.elapsedTime());
		
	}
	
	

}
