package io.katharsis.response.field; import io.katharsis.resource.field.ResourceField; import io.katharsis.resource.information.field.FieldOrderedComparator; import org.junit.Before; import org.junit.Test; import java.util.Set; import java.util.TreeSet; import static org.assertj.core.api.Assertions.assertThat; public class FieldOrderedComparatorTest { ResourceField fieldA; ResourceField fieldB; @Before public void setUp() throws Exception { fieldA = new ResourceField("a", "a", String.class, String.class); fieldB = new ResourceField("b", "b", String.class, String.class); } @Test public void onTwoFieldsShouldSortCorrectly() throws Exception { // GIVEN Set<ResourceField> fields = new TreeSet<>(new FieldOrderedComparator(new String[]{ "b", "a" }, false)); // WHEN fields.add(fieldA); fields.add(fieldB); // THEN assertThat(fields).containsSequence(fieldB, fieldA); } @Test public void onOneFieldShouldSortCorrectly() throws Exception { // GIVEN Set<ResourceField> fields = new TreeSet<>(new FieldOrderedComparator(new String[]{ "b" }, false)); // WHEN fields.add(fieldA); fields.add(fieldB); // THEN assertThat(fields).containsSequence(fieldB, fieldA); } @Test public void onNoOrderShouldPersistInsertionOrder() throws Exception { // GIVEN Set<ResourceField> fields = new TreeSet<>(new FieldOrderedComparator(new String[]{}, false)); // WHEN fields.add(fieldB); fields.add(fieldA); // THEN assertThat(fields).containsSequence(fieldB, fieldA); } @Test public void onAlphabeticOrderShouldSortCorrectly() throws Exception { // GIVEN Set<ResourceField> fields = new TreeSet<>(new FieldOrderedComparator(new String[]{}, true)); // WHEN fields.add(fieldB); fields.add(fieldA); // THEN assertThat(fields).containsSequence(fieldA, fieldB); } }