### Question:
UUIDIterator { public UUIDIterator() { uuids = new ArrayList<UUIDIterator.UUIDItem>(); currentUUID = null; } UUIDIterator();  UUIDIterator(Collection<String> uuids); synchronized void addUUID(String uuid); synchronized void addUUIDs(Collection<String> uuids); synchronized void clear(); synchronized void clearAndAddUUID(String uuid); synchronized void clearAndAddUUIDs(Collection<String> uuids); synchronized String debugString(); synchronized String getUUID(); synchronized void markUUIDAsFailed(String uuid); synchronized void setCurrentUUID(String uuid); synchronized int size();  }### Answer:
@Test public void testUUIDIterator() throws Exception { final String UUID_STRING1 = "uuidstring1"; final String UUID_STRING2 = "uuidstring2"; final String UUID_STRING3 = "uuidstring3"; UUIDIterator uuidIterator = new UUIDIterator(); uuidIterator.addUUID(UUID_STRING1); uuidIterator.addUUID(UUID_STRING2); uuidIterator.addUUID(UUID_STRING3); assertEquals(UUID_STRING1, uuidIterator.getUUID()); assertEquals(UUID_STRING1, uuidIterator.getUUID()); uuidIterator.markUUIDAsFailed(uuidIterator.getUUID()); assertEquals(UUID_STRING2, uuidIterator.getUUID()); uuidIterator.markUUIDAsFailed(uuidIterator.getUUID()); assertEquals(UUID_STRING3, uuidIterator.getUUID()); uuidIterator.markUUIDAsFailed(uuidIterator.getUUID()); assertEquals(UUID_STRING1, uuidIterator.getUUID()); uuidIterator.clear(); try { uuidIterator.getUUID(); fail("UUIDIteratorListIsEmptyExcaption should have been raised"); } catch (UUIDIteratorListIsEmpyException e) { } uuidIterator.clearAndAddUUID(UUID_STRING1); assertEquals(UUID_STRING1, uuidIterator.getUUID()); uuidIterator.markUUIDAsFailed(uuidIterator.getUUID()); assertEquals(UUID_STRING1, uuidIterator.getUUID()); uuidIterator.debugString(); }