From dda0bcd654c8c97193efdeb031e9c1738120df2b Mon Sep 17 00:00:00 2001 From: Oshgnacknak Date: Mon, 30 Aug 2021 15:39:15 +0200 Subject: [PATCH] Implement removeEverySecond --- .../prep/array/FullyUsedArrayProcessor.java | 8 +++++++- test/aud/exam/prep/SequenceProcessorTest.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/aud/exam/prep/array/FullyUsedArrayProcessor.java b/src/aud/exam/prep/array/FullyUsedArrayProcessor.java index 7e5a292..38b63d7 100644 --- a/src/aud/exam/prep/array/FullyUsedArrayProcessor.java +++ b/src/aud/exam/prep/array/FullyUsedArrayProcessor.java @@ -272,7 +272,13 @@ public class FullyUsedArrayProcessor implements SequenceProcessor array) { - throw new UnsupportedOperationException(); + T[] newArray = Arrays.newArray(array.theArray.length - array.theArray.length / 2); + + for (int i = 0; i < newArray.length; i++) { + newArray[i] = array.theArray[2*i]; + } + + array.theArray = newArray; } @Override diff --git a/test/aud/exam/prep/SequenceProcessorTest.java b/test/aud/exam/prep/SequenceProcessorTest.java index 2ce9e1b..9bc9e9a 100644 --- a/test/aud/exam/prep/SequenceProcessorTest.java +++ b/test/aud/exam/prep/SequenceProcessorTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.params.provider.ArgumentsSource; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -404,6 +405,22 @@ public abstract class SequenceProcessorTest { assertIterableEquals(list, processor.iterate(s)); } + @ParameterizedTest + @ArgumentsSource(ListProvider.class) + void testThat_removeEverySecondWorks(List list) { + S s = processor.create(list); + + var everyFirst = IntStream + .iterate(0, i -> i < list.size(), i -> i+2) + .mapToObj(list::get) + .collect(Collectors.toList()); + + processor.removeEverySecond(s); + + assertTrue(processor.check(s)); + assertIterableEquals(everyFirst, processor.iterate(s)); + } + @ParameterizedTest @ArgumentsSource(ListProvider.class) void testThat_doubleAllKeysWorks(List list) {