@Test
	public void test() {
		Integer[][] rotArr = new Integer[][] { //
		//
				{ 0, 1, 2, 3, 4, 5 },//
				{ 0, 1, 2, 3, 4, 4, 5 },//
				{ 0, 1, 2, 4, 4, 5 },//
				{ 0, 1, 2, 2, 4, 4, 5 },//
				{ 0, 1, 2, 2, 2, 4, 4, 5 },//
				{ 0, 1, 2, 3, 4, 4, 5 },//
				{ 0, 1, 1, 1, 1 },//
				{ 0, 1, 1, 1, 1, 1 },//
				{ 0, 1 },//
				{ 0 },//
				{ 1 },//
				{ 0, 1, 2, 3 },//
				{ 1, 2, 3, 4 },//
				{ 1, 2, 3, 4, 5 },//
		};

		for (Integer[] element : rotArr) {
			// check each array and rotate them.
			Integer[] va = element;
			Mutable<Integer> start = new Mutable<Integer>(), end = new Mutable<Integer>();

			for (int j = 0; j < va.length; j++) {
				// check results
				findStartEndPosition(va, start, end);
				Assert.assertEquals(//
						find(va, 0, start.getValue(), end.getValue()), //
						find2(va, 0));

				// rotate the array
				Integer tmp = va[0];
				for (int k = 0; k < va.length - 1; k++) {
					va[k] = va[k + 1];
				}
				va[va.length - 1] = tmp;
			}
		}
	}