@Test
	public void testRecursion() {
		Recursion recursion = new Recursion();
		assertTrue(recursion.nthFibonacci(0) == 0);
		assertTrue(recursion.nthFibonacci(1)==1);
		assertTrue(recursion.nthFibonacci(2)==1);
		assertTrue(recursion.nthFibonacci(3)==2);
		assertTrue(recursion.nthFibonacci(10)==55);
		
		Set<String> stringPermutations = recursion.getPermutations("", "Tes");
		assertTrue(stringPermutations.contains("Tes"));
		assertTrue(stringPermutations.contains("seT"));
		assertTrue(stringPermutations.contains("Tse"));
		assertTrue(stringPermutations.contains("sTe"));
		assertTrue(stringPermutations.contains("esT"));
		assertTrue(stringPermutations.contains("eTs"));
		
		 Set<String> set = new HashSet<String>();
	     set.add("hi");
	     set.add("bye");
	     set.add("lol");
	     Set<Set<String>> setSet = recursion.getSubsets(set); //6 sets. Hi, Bye, Lol, Hi-Bye, Bye-Lol, Hi-Lol
	     Set<String> set1 = new HashSet<String>();
	     set1.add("hi");
	     set1.add("bye");
	     Set<String> set2 = new HashSet<String>();
	     set2.add("hi");
	     set2.add("lol");
	     Set<String> set3 = new HashSet<String>();
	     set3.add("bye");
	     set3.add("lol");
	     Set<String> set4 = new HashSet<String>();
	     set4.add("hi");
	     Set<String> set5 = new HashSet<String>();
	     set5.add("bye");
	     Set<String> set6 = new HashSet<String>();
	     set6.add("lol");
	     assertTrue(setSet.contains(set1));
	     assertTrue(setSet.contains(set2));
	     assertTrue(setSet.contains(set3));
	     assertTrue(setSet.contains(set4));
	     assertTrue(setSet.contains(set5));
	     assertTrue(setSet.contains(set6));
	     
	     Set<String> parenthesis = recursion.printParenthesis(3);
	     assertTrue(parenthesis.contains("()()()"));
	     assertTrue(parenthesis.contains("((()))"));
	     assertTrue(parenthesis.contains("(()())"));
	     assertTrue(parenthesis.contains("()(())"));
	     assertTrue(parenthesis.contains("(())()"));
	     
	     
	     Integer[][] grid = new Integer[5][5];
	     
	     for(int i=0; i<5; i++){
	    	 for(int j=0; j<5; j++){
	    	     grid[i][j] = Recursion.COLOR_BLUE;
	    	 }
	     }
	     for(int i=0; i<5; i++){
	    	 grid[0][i] = Recursion.COLOR_RED;
	    	 grid[4][i] = Recursion.COLOR_RED;
	    	 grid[i][0] = Recursion.COLOR_RED;
	    	 grid[i][4] = Recursion.COLOR_RED;
	     }
	     recursion.paintFill(3, 2, Recursion.COLOR_RED, grid);
	     for(int i=0; i<5; i++){
	    	 for(int j=0; j<5; j++){
	    		 assertTrue(grid[i][j] == Recursion.COLOR_RED);
	    	 }
	     }
	     
	     assertTrue(recursion.waysToCreateAmount(1)==1);
	     assertTrue(recursion.waysToCreateAmount(5)==2);
	     assertTrue(recursion.waysToCreateAmount(10)==4);
	     
	     
	     assertTrue(recursion.printQueens(8));
	     //Commenting out because it takes forever to compute false
	     //assertFalse(recursion.printQueens(9));
	     
	     
	}