public static void unit_test( final int ARRAY_SIZE ) {
		SortAlgorithm[] algorithms = { 
				new InsertionSort(),
				new BubbleSortForLoop(),
				new BubbleSortUntilLoop(),
				new SelectionSort(),
				new MergeSort(),
				new InPlaceQuickSort( new LastElementAsPivot() )
		};
		
		for( SortAlgorithm algo : algorithms ) {
			System.out.print("Launching " + algo.toString() + "... ");
			int[] list = Utils.generate(ARRAY_SIZE);
			int[] copy = list.clone();
			
			long begin = System.currentTimeMillis();
			algo.sort( list );
			System.out.println("Finished in " + (System.currentTimeMillis() - begin) + "ms.");
			
			if( !Utils.sameValues(list, copy) ) {
				System.out.println("Error at this point: the input and output arrays are not the same.");
				System.out.println("Original:");
				for(int i = 0; i < copy.length; ++i) System.out.print(copy[i] + ",");
				System.out.println("\nSorted:");
				for(int i = 0; i < list.length; ++i) System.out.print(list[i] + ",");
				return;
			}
			
			if( !Utils.checkSorted( list ) ) {
				for(int i = 0; i < list.length; ++i) System.out.print(list[i] + ",");
				System.out.println("Error at this point: array not sorted");
				return;
			}
		}
		System.out.println("Everything worked :)");
	}