package org.testory.common;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.testory.common.Collections.flip;
import static org.testory.testing.Fakes.newObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
public class TestCollectionsFlip {
private List<Object> list, flipped, original;
private Object a, b, c;
@Before
public void before() {
a = newObject("a");
b = newObject("b");
c = newObject("c");
}
@Test
public void flips_list() {
list = asList(a, b, c);
flipped = flip(list);
assertEquals(asList(c, b, a), flipped);
}
@Test
public void flips_empty_list() {
list = asList();
flipped = flip(list);
assertEquals(asList(), flipped);
}
@Test
public void does_not_change_original_list() {
list = asList(a, b, c);
original = new ArrayList<>(list);
flip(list);
assertEquals(original, list);
}
@Test
public void infers_type_from_generic() {
class Foo {}
List<Foo> foos = Arrays.asList(new Foo());
@SuppressWarnings("unused")
List<Foo> inferred = flip(foos);
}
@Test
public void fails_for_null_list() {
try {
flip(null);
fail();
} catch (NullPointerException e) {}
}
}