package playingWithLists;

public class SchemeListUtilTest {

	public static void main(String[] args) {
		
		MySchemeList<Integer> aList =
			new MySchemeList<Integer>().cons(4).cons(3).cons(2).cons(1);

		MySchemeList<Integer> anotherList = 
			new MySchemeList<Integer>().cons(8).cons(7).cons(6).cons(5);
				
		/* TEST 1: append */	
		System.out.println("TEST 1: append [5,6,7,8] to [1,2,3,4] ");
		System.out.println(SchemeListUtil.concat(aList,anotherList));
		
		/* TEST 2: square */
		
		System.out.println("Test 2: square [1,2,3,4]");
		System.out.println(SchemeListUtil.square(aList));
		
		/* TEST 3: sum */
		
		System.out.println("Test 3: sum [1,2,3,4]");
		System.out.println(SchemeListUtil.sum(aList));
		
		
		/* TEST 4: iterativeLength */
		
		System.out.println("TEST 4: iterativeLength of [1,2,3,4]");
		System.out.println(SchemeListUtil.iterativeLength(aList));
		

		/* TEST 5: iterativeReverse */
		
		System.out.println("TEST 5: iterativeReverse of [1,2,3,4]");
		System.out.println(SchemeListUtil.iterativeReverse(aList));
		
		/* TEST 6: appendAll */
		
		System.out.println("TEST 6: concatAll, concatonate all elements in [[],[1,2,3,4],[5,6,7,8]]");
		SchemeList<SchemeList<Integer>> emptyListList = new MySchemeList<SchemeList<Integer>>();
		
		SchemeList<SchemeList<Integer>> aListList =
			emptyListList.cons(anotherList).cons(aList);
		System.out.println(SchemeListUtil.concatAll(aListList));
		
	}

}
