package io.konik.csv.pdf; import io.konik.harness.FileAppender; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import java.util.Arrays; import java.util.Collections; import java.util.List; import static io.konik.csv.pdf.FileAppenderPriorityComparator.Order; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class FileAppenderPriorityComparatorTest { private FileAppender firstFileAppender = mock(FileAppender.class); private FileAppender secondFileAppender = mock(FileAppender.class); private FileAppender thirdFileAppender = mock(FileAppender.class); @Before public void setup() { when(firstFileAppender.getPriority()).thenReturn(100); when(secondFileAppender.getPriority()).thenReturn(50); when(thirdFileAppender.getPriority()).thenReturn(40); } @Test public void shouldSortFileAppendersByPriorityDesc() { //given: FileAppenderPriorityComparator comparator = new FileAppenderPriorityComparator(Order.DESC); List<FileAppender> appenders = Arrays.asList(thirdFileAppender, firstFileAppender, secondFileAppender); //when: Collections.sort(appenders, comparator); //then: assertThat(appenders.get(0)).isEqualTo(firstFileAppender); //and: assertThat(appenders.get(1)).isEqualTo(secondFileAppender); //and: assertThat(appenders.get(2)).isEqualTo(thirdFileAppender); } @Test public void shouldSortFileAppendersByPriorityAsc() { //given: FileAppenderPriorityComparator comparator = new FileAppenderPriorityComparator(Order.ASC); List<FileAppender> appenders = Arrays.asList(secondFileAppender, firstFileAppender, thirdFileAppender); //when: Collections.sort(appenders, comparator); //then: assertThat(appenders.get(0)).isEqualTo(thirdFileAppender); //and: assertThat(appenders.get(1)).isEqualTo(secondFileAppender); //and: assertThat(appenders.get(2)).isEqualTo(firstFileAppender); } }