package com.flextrade.jfixture.utility;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertTrue;
public class TestCircularList {
@Test(expected = IllegalArgumentException.class)
public void null_source_list_throws_exception() {
new CircularList<String>(null);
}
@Test(expected = IllegalArgumentException.class)
public void empty_source_list_throws_exception() {
new CircularList<String>(new ArrayList<String>());
}
@Test
public void when_next_called_with_single_item_in_source_always_returns_same_item() {
String item = UUID.randomUUID().toString();
List<String> source = new ArrayList<String>();
source.add(item);
CircularList<String> list = new CircularList<String>(source);
assertTrue(list.next().equals(item));
assertTrue(list.next().equals(item));
assertTrue(list.next().equals(item));
}
@Test
public void when_next_called_with_two_items_in_source_items_are_returned_in_order() {
String item1 = UUID.randomUUID().toString();
String item2 = UUID.randomUUID().toString();
List<String> source = new ArrayList<String>();
source.add(item1);
source.add(item2);
CircularList<String> list = new CircularList<String>(source);
assertTrue(list.next().equals(item1));
assertTrue(list.next().equals(item2));
}
@Test
public void when_next_called_three_times_with_two_items_in_source_list_is_reset() {
String item1 = UUID.randomUUID().toString();
String item2 = UUID.randomUUID().toString();
List<String> source = new ArrayList<String>();
source.add(item1);
source.add(item2);
CircularList<String> list = new CircularList<String>(source);
assertTrue(list.next().equals(item1));
assertTrue(list.next().equals(item2));
assertTrue(list.next().equals(item1));
}
}