test: custom linked list get before, after

This commit is contained in:
Václav Přibík
2025-10-16 16:48:53 +02:00
parent e0eba95a1d
commit 97dee74229

View File

@@ -7,7 +7,10 @@ import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.converter.ConvertWith;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.MethodSources;
import appointmentplanner.StringArrayConverter;
import appointmentplanner.customlist.CustomLinkedListImpl;
@@ -61,4 +64,42 @@ public class CustomLinkedListTest {
assertThat(list.contains(toRemove)).isFalse();
}
private static enum LlGetPosition {
BEFORE, AFTER
}
private static String[] someBasicDataSet = new String[] { "O", "MUJ", "BOZE" };
private static Stream<Arguments> getAfterBeforeData() {
return Stream.of(
Arguments.of(someBasicDataSet, LlGetPosition.BEFORE, "MUJ", "O"),
Arguments.of(someBasicDataSet, LlGetPosition.AFTER, "MUJ", "BOZE"),
Arguments.of(someBasicDataSet, LlGetPosition.AFTER, "BOZE", null),
Arguments.of(someBasicDataSet, LlGetPosition.BEFORE, "O", null));
}
@ParameterizedTest
@MethodSource("getAfterBeforeData")
void cllGetAfter_shouldReturnCorrectResult(String[] data, LlGetPosition position, String reference,
String expectedResult) {
CustomLinkedList<String> list = new CustomLinkedListImpl<>();
Stream.of(data).forEach(list::add);
switch (position) {
case BEFORE:
assertThat(list.getBefore(reference)).isEqualTo(expectedResult);
break;
case AFTER:
assertThat(list.getAfter(reference)).isEqualTo(expectedResult);
break;
default:
fail("Incorrect parameters");
break;
}
}
}