@Test
 public void testNextAtEnd() {
   faValIt = new FAValueIterator(singleInput);
   try {
     assertNotNull("next() returns null, when it has one value left", faValIt.next());
   } catch (Exception e) {
     fail("next() throws an exception, when it has one value left");
   }
 }
 @Test
 public void testNextWithValidInput() {
   faValIt = new FAValueIterator(nonEmptyInput);
   try {
     assertNotNull("next() returns null, when it has more values", faValIt.next());
   } catch (Exception e) {
     fail("next() throws an exception, when it has more values");
   }
 }
 @Test
 public void testNextEmptyInput() {
   faValIt = new FAValueIterator(emptyInput);
   boolean exceptionWhenEmpty = false;
   try {
     faValIt.next();
   } catch (Exception e) {
     exceptionWhenEmpty = true;
   }
   assertTrue("next() does not throw an Exception when input is of length 0", exceptionWhenEmpty);
 }
 @Test
 public void testNextNullInput() {
   faValIt = new FAValueIterator(nullInput);
   boolean exceptionWhenNull = false;
   try {
     faValIt.next();
   } catch (Exception e) {
     exceptionWhenNull = true;
   }
   assertTrue("next() does not throw an Exception when input is null", exceptionWhenNull);
 }
 @Test
 public void testHasNextAtEnd() {
   faValIt = new FAValueIterator(singleInput);
   assertTrue("hasNext() returns false, when it has one value left", faValIt.hasNext());
 }
 @Test
 public void testHasNextWithValidInput() {
   faValIt = new FAValueIterator(nonEmptyInput);
   assertTrue("hasNext() returns false, when it has more values", faValIt.hasNext());
 }
 @Test
 public void testHasNextEmptyInput() {
   faValIt = new FAValueIterator(emptyInput);
   assertFalse("hasNext() returns true for input of zero length", faValIt.hasNext());
 }
 @Test
 public void testHasNextNullInput() {
   faValIt = new FAValueIterator(nullInput);
   assertFalse("hasNext() returns true for null input", faValIt.hasNext());
 }