test enhc: cll insert after & before - more test scenarios

This commit is contained in:
Václav Přibík
2025-10-18 11:43:17 +02:00
parent ceadbab59e
commit b315a8ea4c

View File

@@ -10,7 +10,6 @@ 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;
@@ -68,7 +67,7 @@ public class CustomLinkedListTest {
assertThat(list.contains(toRemove)).isFalse();
}
private static enum LlGetPosition {
private static enum LlItemPosition {
BEFORE, AFTER
}
@@ -76,16 +75,16 @@ public class CustomLinkedListTest {
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, "O", "MUJ"),
Arguments.of(someBasicDataSet, LlGetPosition.AFTER, "BOZE", null),
Arguments.of(someBasicDataSet, LlGetPosition.BEFORE, "O", null));
Arguments.of(someBasicDataSet, LlItemPosition.BEFORE, "MUJ", "O"),
Arguments.of(someBasicDataSet, LlItemPosition.AFTER, "MUJ", "BOZE"),
Arguments.of(someBasicDataSet, LlItemPosition.AFTER, "O", "MUJ"),
Arguments.of(someBasicDataSet, LlItemPosition.AFTER, "BOZE", null),
Arguments.of(someBasicDataSet, LlItemPosition.BEFORE, "O", null));
}
@ParameterizedTest
@MethodSource("getAfterBeforeData")
void cllGetAfter_shouldReturnCorrectResult(String[] data, LlGetPosition position, String reference,
void cllGetAfter_shouldReturnCorrectResult(String[] data, LlItemPosition position, String reference,
String expectedResult) {
CustomLinkedList<String> list = new CustomLinkedListImpl<>();
@@ -107,4 +106,49 @@ public class CustomLinkedListTest {
}
private static Stream<Arguments> insertBeforeAfterData() {
return Stream.of(
Arguments.of(someBasicDataSet, "DOPRDELE", "BOZE", LlItemPosition.AFTER),
Arguments.of(new String[] { "Ahoj" }, "vole", "Ahoj", LlItemPosition.AFTER),
Arguments.of(new String[] { "ahoj" }, "More", "ahoj", LlItemPosition.BEFORE),
Arguments.of(new String[] { "A", "tak", "se", "pochcal", "posral", "a", "jeste", "nakonec", "serval" },
"vyblil",
"posral", LlItemPosition.BEFORE),
Arguments.of(new String[] { "A", "tak", "se", "pochcal", "posral", "a", "jeste", "nakonec", "serval" },
"vyblil",
"posral", LlItemPosition.AFTER),
Arguments.of(someBasicDataSet, "PREMOCNY", "BOZE", LlItemPosition.BEFORE));
}
@ParameterizedTest
@MethodSource("insertBeforeAfterData")
void cllInsertAfterBefore_shouldInsertItemSuccessfully(String[] initData, String toInsert, String reference,
LlItemPosition position) {
CustomLinkedList<String> list = initPopulaterList(initData);
switch (position) {
case AFTER:
list.insertAfter(reference, toInsert);
assertThat(list.getAfter(reference)).isEqualTo(toInsert);
break;
case BEFORE:
list.insertBefore(reference, toInsert);
assertThat(list.getBefore(reference)).isEqualTo(toInsert);
break;
default:
fail("Incorrect position parameter");
break;
}
}
private CustomLinkedList<String> initPopulaterList(String[] initData) {
CustomLinkedList<String> list = new CustomLinkedListImpl<>();
Stream.of(initData).forEach(list::add);
return list;
}
}