This is an automated email from the ASF dual-hosted git repository. dwysakowicz pushed a commit to branch release-1.10 in repository https://gitbox.apache.org/repos/asf/flink.git
commit f4c25df707571f60724c8516dfb7a1055b0fa63c Author: Dawid Wysakowicz <dwysakow...@apache.org> AuthorDate: Tue Feb 4 14:36:33 2020 +0100 [FLINK-15706][table-planner-blink] Reorder and split into sections classes in aggfunctions tests. --- .../FirstValueAggFunctionWithOrderTest.java | 192 ++++++++++---------- .../FirstValueAggFunctionWithoutOrderTest.java | 138 +++++++------- ...stValueWithRetractAggFunctionWithOrderTest.java | 201 ++++++++++---------- ...alueWithRetractAggFunctionWithoutOrderTest.java | 151 ++++++++------- .../LastValueAggFunctionWithOrderTest.java | 190 +++++++++---------- .../LastValueAggFunctionWithoutOrderTest.java | 138 +++++++------- ...stValueWithRetractAggFunctionWithOrderTest.java | 202 +++++++++++---------- ...alueWithRetractAggFunctionWithoutOrderTest.java | 151 ++++++++------- .../ListAggWithRetractAggFunctionTest.java | 2 +- .../ListAggWsWithRetractAggFunctionTest.java | 2 +- .../MaxWithRetractAggFunctionTest.java | 177 +++++++++--------- .../MinWithRetractAggFunctionTest.java | 177 +++++++++--------- 12 files changed, 922 insertions(+), 799 deletions(-) diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithOrderTest.java index 658541c..23de255 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithOrderTest.java @@ -44,93 +44,20 @@ import java.util.List; * This class tests `accumulate` method with order argument. */ @RunWith(Enclosed.class) -public class FirstValueAggFunctionWithOrderTest { +public final class FirstValueAggFunctionWithOrderTest { - /** - * The base test class for FirstValueAggFunction with order. - */ - public abstract static class FirstValueAggFunctionWithOrderTestBase<T> - extends FirstLastValueAggFunctionWithOrderTestBase<T> { - - } - - /** - * Test FirstValueAggFunction for number type. - */ - public abstract static class NumberFirstValueAggFunctionWithOrderTestBase<T> - extends FirstValueAggFunctionWithOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null, - getValue("3"), - getValue("2"), - getValue("-99") - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("5") - ) - ); - } - - @Override - protected List<List<Long>> getInputOrderSets() { - return Arrays.asList( - Arrays.asList( - 10L, - 2L, - 5L, - 6L, - 11L, - 3L, - 7L, - 5L - ), - Arrays.asList( - 8L, - 6L, - 9L, - 5L - ), - Arrays.asList( - null, - 6L, - 4L, - 3L - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("3"), - null, - getValue("5") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - FirstLastValueAggFunctionWithOrderTestBase -> tests specific for FirstValue and LastValue + // - AggFunctionTestBase -> tests that apply to all aggregate functions + // -------------------------------------------------------------------------------------------- /** * Test for ByteFirstValueAggFunction. */ - public static class ByteFirstValueAggFunctionWithOrderTest + public static final class ByteFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Byte> { @Override @@ -147,7 +74,7 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for ShortFirstValueAggFunction. */ - public static class ShortFirstValueAggFunctionWithOrderTest + public static final class ShortFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Short> { @Override @@ -164,7 +91,7 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for IntFirstValueAggFunction. */ - public static class IntFirstValueAggFunctionWithOrderTest + public static final class IntFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Integer> { @Override @@ -181,7 +108,7 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for LongFirstValueAggFunction. */ - public static class LongFirstValueAggFunctionWithOrderTest + public static final class LongFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Long> { @Override @@ -198,7 +125,7 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for FloatFirstValueAggFunction. */ - public static class FloatFirstValueAggFunctionWithOrderTest + public static final class FloatFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Float> { @Override @@ -215,7 +142,7 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for DoubleFirstValueAggFunction. */ - public static class DoubleFirstValueAggFunctionWithOrderTest + public static final class DoubleFirstValueAggFunctionWithOrderTest extends NumberFirstValueAggFunctionWithOrderTestBase<Double> { @Override @@ -232,8 +159,8 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for BooleanFirstValueAggFunction. */ - public static class BooleanFirstValueAggFunctionWithOrderTest - extends FirstValueAggFunctionWithOrderTestBase<Boolean> { + public static final class BooleanFirstValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<Boolean> { @Override protected List<List<Boolean>> getInputValueSets() { @@ -322,8 +249,8 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for DecimalFirstValueAggFunction. */ - public static class DecimalFirstValueAggFunctionWithOrderTest - extends FirstValueAggFunctionWithOrderTestBase<Decimal> { + public static final class DecimalFirstValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<Decimal> { private int precision = 20; private int scale = 6; @@ -402,8 +329,8 @@ public class FirstValueAggFunctionWithOrderTest { /** * Test for StringFirstValueAggFunction. */ - public static class StringFirstValueAggFunctionWithOrderTest - extends FirstValueAggFunctionWithOrderTestBase<BinaryString> { + public static final class StringFirstValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<BinaryString> { @Override protected List<List<BinaryString>> getInputValueSets() { @@ -476,4 +403,83 @@ public class FirstValueAggFunctionWithOrderTest { return new StringFirstValueAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide: + // - common inputs + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * Test FirstValueAggFunction for number type. + */ + public abstract static class NumberFirstValueAggFunctionWithOrderTestBase<T> + extends FirstLastValueAggFunctionWithOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null, + getValue("3"), + getValue("2"), + getValue("-99") + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("5") + ) + ); + } + + @Override + protected List<List<Long>> getInputOrderSets() { + return Arrays.asList( + Arrays.asList( + 10L, + 2L, + 5L, + 6L, + 11L, + 3L, + 7L, + 5L + ), + Arrays.asList( + 8L, + 6L, + 9L, + 5L + ), + Arrays.asList( + null, + 6L, + 4L, + 3L + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("3"), + null, + getValue("5") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithoutOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithoutOrderTest.java index 62be99c..8348251 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithoutOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueAggFunctionWithoutOrderTest.java @@ -44,65 +44,19 @@ import java.util.List; * This class tests `accumulate` method without order argument. */ @RunWith(Enclosed.class) -public class FirstValueAggFunctionWithoutOrderTest { +public final class FirstValueAggFunctionWithoutOrderTest { - /** - * The base test class for FirstValueAggFunction without order. - */ - public abstract static class FirstValueAggFunctionWithoutOrderTestBase<T> - extends AggFunctionTestBase<T, GenericRow> { - @Override - protected Class<?> getAccClass() { - return GenericRow.class; - } - } - - /** - * Test FirstValueAggFunction for number type. - */ - public abstract static class NumberFirstValueAggFunctionWithoutOrderTest<T> - extends FirstValueAggFunctionWithoutOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("3") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("1"), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteFirstValueAggFunction. */ - public static class ByteFirstValueAggFunctionWithoutOrderTest + public static final class ByteFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Byte> { @Override @@ -119,7 +73,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for ShortFirstValueAggFunction. */ - public static class ShortFirstValueAggFunctionWithoutOrderTest + public static final class ShortFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Short> { @Override @@ -136,7 +90,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for IntFirstValueAggFunction. */ - public static class IntFirstValueAggFunctionWithoutOrderTest + public static final class IntFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Integer> { @Override @@ -153,7 +107,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for LongFirstValueAggFunction. */ - public static class LongFirstValueAggFunctionWithoutOrderTest + public static final class LongFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Long> { @Override @@ -170,7 +124,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for FloatFirstValueAggFunction. */ - public static class FloatFirstValueAggFunctionWithoutOrderTest + public static final class FloatFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Float> { @Override @@ -187,7 +141,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for DoubleFirstValueAggFunction. */ - public static class DoubleFirstValueAggFunctionWithoutOrderTest + public static final class DoubleFirstValueAggFunctionWithoutOrderTest extends NumberFirstValueAggFunctionWithoutOrderTest<Double> { @Override @@ -204,7 +158,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for BooleanFirstValueAggFunction. */ - public static class BooleanFirstValueAggFunctionWithoutOrderTest extends + public static final class BooleanFirstValueAggFunctionWithoutOrderTest extends FirstValueAggFunctionWithoutOrderTestBase<Boolean> { @Override @@ -260,7 +214,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for DecimalFirstValueAggFunction. */ - public static class DecimalFirstValueAggFunctionWithoutOrderTest extends + public static final class DecimalFirstValueAggFunctionWithoutOrderTest extends FirstValueAggFunctionWithoutOrderTestBase<Decimal> { private int precision = 20; @@ -312,7 +266,7 @@ public class FirstValueAggFunctionWithoutOrderTest { /** * Test for StringFirstValueAggFunction. */ - public static class StringFirstValueAggFunctionWithoutOrderTest extends + public static final class StringFirstValueAggFunctionWithoutOrderTest extends FirstValueAggFunctionWithoutOrderTestBase<BinaryString> { @Override @@ -358,4 +312,64 @@ public class FirstValueAggFunctionWithoutOrderTest { return new StringFirstValueAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide: + // - common inputs + // - accumulator class + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for FirstValueAggFunction without order. + */ + public abstract static class FirstValueAggFunctionWithoutOrderTestBase<T> + extends AggFunctionTestBase<T, GenericRow> { + @Override + protected Class<?> getAccClass() { + return GenericRow.class; + } + } + + /** + * Test FirstValueAggFunction for number type. + */ + public abstract static class NumberFirstValueAggFunctionWithoutOrderTest<T> + extends FirstValueAggFunctionWithoutOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("3") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("1"), + null, + getValue("10") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithOrderTest.java index 770f75a..ef8fa23 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithOrderTest.java @@ -45,97 +45,20 @@ import java.util.List; * This class tests `accumulate` method with order argument. */ @RunWith(Enclosed.class) -public class FirstValueWithRetractAggFunctionWithOrderTest { +public final class FirstValueWithRetractAggFunctionWithOrderTest { - /** - * The base test class for FirstValueWithRetractAggFunction with order. - */ - public abstract static class FirstValueWithRetractAggFunctionWithOrderTestBase<T> - extends FirstLastValueAggFunctionWithOrderTestBase<T> { - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class, Long.class); - } - } - - /** - * Test FirstValueWithRetractAggFunction for number type. - */ - public abstract static class NumberFirstValueWithRetractAggFunctionWithOrderTestBase<T> - extends FirstValueWithRetractAggFunctionWithOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null, - getValue("3"), - getValue("2"), - getValue("-99") - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("5") - ) - ); - } - - @Override - protected List<List<Long>> getInputOrderSets() { - return Arrays.asList( - Arrays.asList( - 10L, - 2L, - 5L, - 6L, - 11L, - 3L, - 7L, - 5L - ), - Arrays.asList( - 8L, - 6L, - 9L, - 5L - ), - Arrays.asList( - null, - 6L, - 4L, - 3L - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("3"), - null, - getValue("5") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - FirstLastValueAggFunctionWithOrderTestBase -> tests specific for FirstValue and LastValue + // - AggFunctionTestBase -> tests that apply to all aggregate functions + // -------------------------------------------------------------------------------------------- /** * Test for ByteFirstValueWithRetractAggFunction. */ - public static class ByteFirstValueWithRetractAggFunctionWithOrderTest + public static final class ByteFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Byte> { @Override @@ -152,7 +75,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for ShortFirstValueWithRetractAggFunction. */ - public static class ShortFirstValueWithRetractAggFunctionWithOrderTest + public static final class ShortFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Short> { @Override @@ -169,7 +92,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for IntFirstValueWithRetractAggFunction. */ - public static class IntFirstValueWithRetractAggFunctionWithOrderTest + public static final class IntFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Integer> { @Override @@ -186,7 +109,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for LongFirstValueWithRetractAggFunction. */ - public static class LongFirstValueWithRetractAggFunctionWithOrderTest + public static final class LongFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Long> { @Override @@ -203,7 +126,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for FloatFirstValueWithRetractAggFunction. */ - public static class FloatFirstValueWithRetractAggFunctionWithOrderTest + public static final class FloatFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Float> { @Override @@ -220,7 +143,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for DoubleFirstValueWithRetractAggFunction. */ - public static class DoubleFirstValueWithRetractAggFunctionWithOrderTest + public static final class DoubleFirstValueWithRetractAggFunctionWithOrderTest extends NumberFirstValueWithRetractAggFunctionWithOrderTestBase<Double> { @Override @@ -237,7 +160,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for BooleanFirstValueWithRetractAggFunction. */ - public static class BooleanFirstValueWithRetractAggFunctionWithOrderTest + public static final class BooleanFirstValueWithRetractAggFunctionWithOrderTest extends FirstValueWithRetractAggFunctionWithOrderTestBase<Boolean> { @Override @@ -327,7 +250,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for DecimalFirstValueWithRetractAggFunction. */ - public static class DecimalFirstValueWithRetractAggFunctionWithOrderTest + public static final class DecimalFirstValueWithRetractAggFunctionWithOrderTest extends FirstValueWithRetractAggFunctionWithOrderTestBase<Decimal> { private int precision = 20; @@ -407,7 +330,7 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { /** * Test for StringFirstValueWithRetractAggFunction. */ - public static class StringFirstValueWithRetractAggFunctionWithOrderTest + public static final class StringFirstValueWithRetractAggFunctionWithOrderTest extends FirstValueWithRetractAggFunctionWithOrderTestBase<BinaryString> { @Override @@ -481,4 +404,94 @@ public class FirstValueWithRetractAggFunctionWithOrderTest { return new StringFirstValueWithRetractAggFunction(); } } + + /** + * The base test class for FirstValueWithRetractAggFunction with order. + */ + public abstract static class FirstValueWithRetractAggFunctionWithOrderTestBase<T> + extends FirstLastValueAggFunctionWithOrderTestBase<T> { + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class, Long.class); + } + } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide common inputs for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * Test FirstValueWithRetractAggFunction for number type. + */ + public abstract static class NumberFirstValueWithRetractAggFunctionWithOrderTestBase<T> + extends FirstValueWithRetractAggFunctionWithOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null, + getValue("3"), + getValue("2"), + getValue("-99") + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("5") + ) + ); + } + + @Override + protected List<List<Long>> getInputOrderSets() { + return Arrays.asList( + Arrays.asList( + 10L, + 2L, + 5L, + 6L, + 11L, + 3L, + 7L, + 5L + ), + Arrays.asList( + 8L, + 6L, + 9L, + 5L + ), + Arrays.asList( + null, + 6L, + 4L, + 3L + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("3"), + null, + getValue("5") + ); + } + } + } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithoutOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithoutOrderTest.java index 2125885..cd31cef 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithoutOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/FirstValueWithRetractAggFunctionWithoutOrderTest.java @@ -45,71 +45,19 @@ import java.util.List; * This class tests `accumulate` method without order argument. */ @RunWith(Enclosed.class) -public class FirstValueWithRetractAggFunctionWithoutOrderTest { +public final class FirstValueWithRetractAggFunctionWithoutOrderTest { - /** - * The base test class for FirstValueWithRetractAggFunction without order. - */ - public abstract static class FirstValueWithRetractAggFunctionWithoutOrderTestBase<T> - extends AggFunctionTestBase<T, GenericRow> { - - @Override - protected Class<?> getAccClass() { - return GenericRow.class; - } - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); - } - } - - /** - * Test FirstValueWithRetractAggFunction for number type. - */ - public abstract static class NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<T> - extends FirstValueWithRetractAggFunctionWithoutOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("3") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("1"), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteFirstValueWithRetractAggFunction. */ - public static class ByteFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class ByteFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Byte> { @Override @@ -126,7 +74,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for ShortFirstValueWithRetractAggFunction. */ - public static class ShortFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class ShortFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Short> { @Override @@ -143,7 +91,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for IntFirstValueWithRetractAggFunction. */ - public static class IntFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class IntFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Integer> { @Override @@ -160,7 +108,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for LongFirstValueWithRetractAggFunction. */ - public static class LongFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class LongFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Long> { @Override @@ -177,7 +125,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for FloatFirstValueWithRetractAggFunction. */ - public static class FloatFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class FloatFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Float> { @Override @@ -194,7 +142,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for DoubleFirstValueWithRetractAggFunction. */ - public static class DoubleFirstValueWithRetractAggFunctionWithoutOrderTest + public static final class DoubleFirstValueWithRetractAggFunctionWithoutOrderTest extends NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<Double> { @Override @@ -211,7 +159,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for BooleanFirstValueWithRetractAggFunction. */ - public static class BooleanFirstValueWithRetractAggFunctionWithoutOrderTest extends + public static final class BooleanFirstValueWithRetractAggFunctionWithoutOrderTest extends FirstValueWithRetractAggFunctionWithoutOrderTestBase<Boolean> { @Override @@ -267,7 +215,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for DecimalFirstValueWithRetractAggFunction. */ - public static class DecimalFirstValueWithRetractAggFunctionWithoutOrderTest extends + public static final class DecimalFirstValueWithRetractAggFunctionWithoutOrderTest extends FirstValueWithRetractAggFunctionWithoutOrderTestBase<Decimal> { private int precision = 20; @@ -319,7 +267,7 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { /** * Test for StringFirstValueWithRetractAggFunction. */ - public static class StringFirstValueWithRetractAggFunctionWithoutOrderTest extends + public static final class StringFirstValueWithRetractAggFunctionWithoutOrderTest extends FirstValueWithRetractAggFunctionWithoutOrderTestBase<BinaryString> { @Override @@ -365,4 +313,71 @@ public class FirstValueWithRetractAggFunctionWithoutOrderTest { return new StringFirstValueWithRetractAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide common: + // - inputs + // - accumulator class + // - accessor for retract function + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for FirstValueWithRetractAggFunction without order. + */ + public abstract static class FirstValueWithRetractAggFunctionWithoutOrderTestBase<T> + extends AggFunctionTestBase<T, GenericRow> { + + @Override + protected Class<?> getAccClass() { + return GenericRow.class; + } + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); + } + } + + /** + * Test FirstValueWithRetractAggFunction for number type. + */ + public abstract static class NumberFirstValueWithRetractAggFunctionWithoutOrderTestBase<T> + extends FirstValueWithRetractAggFunctionWithoutOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("3") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("1"), + null, + getValue("10") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithOrderTest.java index 478c3e5..fb09301 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithOrderTest.java @@ -44,93 +44,20 @@ import java.util.List; * This class tests `accumulate` method with order argument. */ @RunWith(Enclosed.class) -public class LastValueAggFunctionWithOrderTest { +public final class LastValueAggFunctionWithOrderTest { - /** - * The base test class for LastValueAggFunction with order. - */ - public abstract static class LastValueAggFunctionWithOrderTestBase<T> - extends FirstLastValueAggFunctionWithOrderTestBase<T> { - - } - - /** - * Test LastValueAggFunction for number type. - */ - public abstract static class NumberLastValueAggFunctionWithOrderTestBase<T> - extends LastValueAggFunctionWithOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null, - getValue("3"), - getValue("2"), - getValue("-99") - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("5") - ) - ); - } - - @Override - protected List<List<Long>> getInputOrderSets() { - return Arrays.asList( - Arrays.asList( - 10L, - 2L, - 5L, - 6L, - 11L, - 3L, - 17L, - 5L - ), - Arrays.asList( - 8L, - 6L, - 9L, - 5L - ), - Arrays.asList( - null, - 6L, - 4L, - 3L - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("2"), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - FirstLastValueAggFunctionWithOrderTestBase -> tests specific for FirstValue and LastValue + // - AggFunctionTestBase -> tests that apply to all aggregate functions + // -------------------------------------------------------------------------------------------- /** * Test for ByteLastValueAggFunction. */ - public static class ByteLastValueAggFunctionWithOrderTest + public static final class ByteLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Byte> { @Override @@ -147,7 +74,7 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for ShortLastValueAggFunction. */ - public static class ShortLastValueAggFunctionWithOrderTest + public static final class ShortLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Short> { @Override @@ -164,7 +91,7 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for IntLastValueAggFunction. */ - public static class IntLastValueAggFunctionWithOrderTest + public static final class IntLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Integer> { @Override @@ -181,7 +108,7 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for LongLastValueAggFunction. */ - public static class LongLastValueAggFunctionWithOrderTest + public static final class LongLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Long> { @Override @@ -198,7 +125,7 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for FloatLastValueAggFunction. */ - public static class FloatLastValueAggFunctionWithOrderTest + public static final class FloatLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Float> { @Override @@ -215,7 +142,7 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for DoubleLastValueAggFunction. */ - public static class DoubleLastValueAggFunctionWithOrderTest + public static final class DoubleLastValueAggFunctionWithOrderTest extends NumberLastValueAggFunctionWithOrderTestBase<Double> { @Override @@ -232,8 +159,8 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for BooleanLastValueAggFunction. */ - public static class BooleanLastValueAggFunctionWithOrderTest - extends LastValueAggFunctionWithOrderTestBase<Boolean> { + public static final class BooleanLastValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<Boolean> { @Override protected List<List<Boolean>> getInputValueSets() { @@ -322,8 +249,8 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for DecimalLastValueAggFunction. */ - public static class DecimalLastValueAggFunctionWithOrderTest - extends LastValueAggFunctionWithOrderTestBase<Decimal> { + public static final class DecimalLastValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<Decimal> { private int precision = 20; private int scale = 6; @@ -402,8 +329,8 @@ public class LastValueAggFunctionWithOrderTest { /** * Test for StringLastValueAggFunction. */ - public static class StringLastValueAggFunctionWithOrderTest - extends LastValueAggFunctionWithOrderTestBase<BinaryString> { + public static final class StringLastValueAggFunctionWithOrderTest + extends FirstLastValueAggFunctionWithOrderTestBase<BinaryString> { @Override protected List<List<BinaryString>> getInputValueSets() { @@ -476,4 +403,81 @@ public class LastValueAggFunctionWithOrderTest { return new StringLastValueAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide common inputs for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * Test LastValueAggFunction for number type. + */ + public abstract static class NumberLastValueAggFunctionWithOrderTestBase<T> + extends FirstLastValueAggFunctionWithOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null, + getValue("3"), + getValue("2"), + getValue("-99") + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("5") + ) + ); + } + + @Override + protected List<List<Long>> getInputOrderSets() { + return Arrays.asList( + Arrays.asList( + 10L, + 2L, + 5L, + 6L, + 11L, + 3L, + 17L, + 5L + ), + Arrays.asList( + 8L, + 6L, + 9L, + 5L + ), + Arrays.asList( + null, + 6L, + 4L, + 3L + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("2"), + null, + getValue("10") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithoutOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithoutOrderTest.java index 4af3f87..1f65604 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithoutOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueAggFunctionWithoutOrderTest.java @@ -44,66 +44,19 @@ import java.util.List; * This class tests `accumulate` method without order argument. */ @RunWith(Enclosed.class) -public class LastValueAggFunctionWithoutOrderTest { +public final class LastValueAggFunctionWithoutOrderTest { - /** - * The base test class for LastValueAggFunction without order. - */ - public abstract static class LastValueAggFunctionWithoutOrderTestBase<T> - extends AggFunctionTestBase<T, GenericRow> { - - @Override - protected Class<?> getAccClass() { - return GenericRow.class; - } - } - - /** - * Test LastValueAggFunction for number type. - */ - public abstract static class NumberLastValueAggFunctionWithoutOrderTestBase<T> - extends LastValueAggFunctionWithoutOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("3") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("3"), - null, - getValue("3") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteLastValueAggFunction. */ - public static class ByteLastValueAggFunctionWithoutOrderTest + public static final class ByteLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Byte> { @Override @@ -120,7 +73,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for ShortLastValueAggFunction. */ - public static class ShortLastValueAggFunctionWithoutOrderTest + public static final class ShortLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Short> { @Override @@ -137,7 +90,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for IntLastValueAggFunction. */ - public static class IntLastValueAggFunctionWithoutOrderTest + public static final class IntLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Integer> { @Override @@ -154,7 +107,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for LongLastValueAggFunction. */ - public static class LongLastValueAggFunctionWithoutOrderTest + public static final class LongLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Long> { @Override @@ -171,7 +124,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for FloatLastValueAggFunction. */ - public static class FloatLastValueAggFunctionWithoutOrderTest + public static final class FloatLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Float> { @Override @@ -188,7 +141,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for DoubleLastValueAggFunction. */ - public static class DoubleLastValueAggFunctionWithoutOrderTest + public static final class DoubleLastValueAggFunctionWithoutOrderTest extends NumberLastValueAggFunctionWithoutOrderTestBase<Double> { @Override @@ -205,7 +158,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for BooleanLastValueAggFunction. */ - public static class BooleanLastValueAggFunctionWithoutOrderTest extends + public static final class BooleanLastValueAggFunctionWithoutOrderTest extends LastValueAggFunctionWithoutOrderTestBase<Boolean> { @Override @@ -261,7 +214,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for DecimalLastValueAggFunction. */ - public static class DecimalLastValueAggFunctionWithoutOrderTest extends + public static final class DecimalLastValueAggFunctionWithoutOrderTest extends LastValueAggFunctionWithoutOrderTestBase<Decimal> { private int precision = 20; @@ -313,7 +266,7 @@ public class LastValueAggFunctionWithoutOrderTest { /** * Test for StringLastValueAggFunction. */ - public static class StringLastValueAggFunctionWithoutOrderTest extends + public static final class StringLastValueAggFunctionWithoutOrderTest extends LastValueAggFunctionWithoutOrderTestBase<BinaryString> { @Override @@ -360,4 +313,63 @@ public class LastValueAggFunctionWithoutOrderTest { return new StringLastValueAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide common inputs and declare the accumulator + // class type for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for LastValueAggFunction without order. + */ + public abstract static class LastValueAggFunctionWithoutOrderTestBase<T> + extends AggFunctionTestBase<T, GenericRow> { + + @Override + protected Class<?> getAccClass() { + return GenericRow.class; + } + } + + /** + * Test LastValueAggFunction for number type. + */ + public abstract static class NumberLastValueAggFunctionWithoutOrderTestBase<T> + extends LastValueAggFunctionWithoutOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("3") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("3"), + null, + getValue("3") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithOrderTest.java index 8ef1cf4..bb3e052 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithOrderTest.java @@ -45,97 +45,20 @@ import java.util.List; * This class tests `accumulate` method with order argument. */ @RunWith(Enclosed.class) -public class LastValueWithRetractAggFunctionWithOrderTest { +public final class LastValueWithRetractAggFunctionWithOrderTest { - /** - * The base test class for LastValueWithRetractAggFunction with order. - */ - public abstract static class LastValueWithRetractAggFunctionWithOrderTestBase<T> - extends FirstLastValueAggFunctionWithOrderTestBase<T> { - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class, Long.class); - } - } - - /** - * Test LastValueWithRetractAggFunction for number type. - */ - public abstract static class NumberLastValueWithRetractAggFunctionWithOrderTestBase<T> - extends LastValueWithRetractAggFunctionWithOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null, - getValue("3"), - getValue("2"), - getValue("-99") - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("5") - ) - ); - } - - @Override - protected List<List<Long>> getInputOrderSets() { - return Arrays.asList( - Arrays.asList( - 10L, - 2L, - 5L, - 6L, - 11L, - 13L, - 7L, - 5L - ), - Arrays.asList( - 8L, - 6L, - 9L, - 5L - ), - Arrays.asList( - null, - 6L, - 4L, - 3L - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("3"), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - FirstLastValueAggFunctionWithOrderTestBase -> tests specific for FirstValue and LastValue + // - AggFunctionTestBase -> tests that apply to all aggregate functions + // -------------------------------------------------------------------------------------------- /** * Test for ByteLastValueWithRetractAggFunction. */ - public static class ByteLastValueWithRetractAggFunctionWithOrderTest + public static final class ByteLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Byte> { @Override @@ -152,7 +75,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for ShortLastValueWithRetractAggFunction. */ - public static class ShortLastValueWithRetractAggFunctionWithOrderTest + public static final class ShortLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Short> { @Override @@ -169,7 +92,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for IntLastValueWithRetractAggFunction. */ - public static class IntLastValueWithRetractAggFunctionWithOrderTest + public static final class IntLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Integer> { @Override @@ -186,7 +109,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for LongLastValueWithRetractAggFunction. */ - public static class LongLastValueWithRetractAggFunctionWithOrderTest + public static final class LongLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Long> { @Override @@ -203,7 +126,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for FloatLastValueWithRetractAggFunction. */ - public static class FloatLastValueWithRetractAggFunctionWithOrderTest + public static final class FloatLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Float> { @Override @@ -220,7 +143,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for DoubleLastValueWithRetractAggFunction. */ - public static class DoubleLastValueWithRetractAggFunctionWithOrderTest + public static final class DoubleLastValueWithRetractAggFunctionWithOrderTest extends NumberLastValueWithRetractAggFunctionWithOrderTestBase<Double> { @Override @@ -237,7 +160,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for BooleanLastValueWithRetractAggFunction. */ - public static class BooleanLastValueWithRetractAggFunctionWithOrderTest + public static final class BooleanLastValueWithRetractAggFunctionWithOrderTest extends LastValueWithRetractAggFunctionWithOrderTestBase<Boolean> { @Override @@ -324,10 +247,11 @@ public class LastValueWithRetractAggFunctionWithOrderTest { } } + /** * Test for DecimalLastValueWithRetractAggFunction. */ - public static class DecimalLastValueWithRetractAggFunctionWithOrderTest + public static final class DecimalLastValueWithRetractAggFunctionWithOrderTest extends LastValueWithRetractAggFunctionWithOrderTestBase<Decimal> { private int precision = 20; @@ -407,7 +331,7 @@ public class LastValueWithRetractAggFunctionWithOrderTest { /** * Test for StringLastValueWithRetractAggFunction. */ - public static class StringLastValueWithRetractAggFunctionWithOrderTest + public static final class StringLastValueWithRetractAggFunctionWithOrderTest extends LastValueWithRetractAggFunctionWithOrderTestBase<BinaryString> { @Override @@ -487,4 +411,94 @@ public class LastValueWithRetractAggFunctionWithOrderTest { return new StringLastValueWithRetractAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide common inputs and accessor for retract function + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for LastValueWithRetractAggFunction with order. + */ + public abstract static class LastValueWithRetractAggFunctionWithOrderTestBase<T> + extends FirstLastValueAggFunctionWithOrderTestBase<T> { + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class, Long.class); + } + } + + /** + * Test LastValueWithRetractAggFunction for number type. + */ + public abstract static class NumberLastValueWithRetractAggFunctionWithOrderTestBase<T> + extends LastValueWithRetractAggFunctionWithOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null, + getValue("3"), + getValue("2"), + getValue("-99") + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("5") + ) + ); + } + + @Override + protected List<List<Long>> getInputOrderSets() { + return Arrays.asList( + Arrays.asList( + 10L, + 2L, + 5L, + 6L, + 11L, + 13L, + 7L, + 5L + ), + Arrays.asList( + 8L, + 6L, + 9L, + 5L + ), + Arrays.asList( + null, + 6L, + 4L, + 3L + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("3"), + null, + getValue("10") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithoutOrderTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithoutOrderTest.java index 801a4ed..ed72709 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithoutOrderTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/LastValueWithRetractAggFunctionWithoutOrderTest.java @@ -45,71 +45,19 @@ import java.util.List; * This class tests `accumulate` method without order argument. */ @RunWith(Enclosed.class) -public class LastValueWithRetractAggFunctionWithoutOrderTest { +public final class LastValueWithRetractAggFunctionWithoutOrderTest { - /** - * The base test class for LastValueWithRetractAggFunction without order. - */ - public abstract static class LastValueWithRetractAggFunctionWithoutOrderTestBase<T> - extends AggFunctionTestBase<T, GenericRow> { - - @Override - protected Class<?> getAccClass() { - return GenericRow.class; - } - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); - } - } - - /** - * Test LastValueWithRetractAggFunction for number type. - */ - public abstract static class NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<T> - extends LastValueWithRetractAggFunctionWithoutOrderTestBase<T> { - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getValue("-99"), - getValue("3"), - null - ), - Arrays.asList( - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10"), - null, - getValue("3") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getValue("3"), - null, - getValue("3") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteLastValueWithRetractAggFunction. */ - public static class ByteLastValueWithRetractAggFunctionWithoutOrderTest + public static final class ByteLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Byte> { @Override @@ -126,7 +74,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for ShortLastValueWithRetractAggFunction. */ - public static class ShortLastValueWithRetractAggFunctionWithoutOrderTest + public static final class ShortLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Short> { @Override @@ -143,7 +91,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for IntLastValueWithRetractAggFunction. */ - public static class IntLastValueWithRetractAggFunctionWithoutOrderTest + public static final class IntLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Integer> { @Override @@ -160,7 +108,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for LongLastValueWithRetractAggFunction. */ - public static class LongLastValueWithRetractAggFunctionWithoutOrderTest + public static final class LongLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Long> { @Override @@ -177,7 +125,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for FloatLastValueWithRetractAggFunction. */ - public static class FloatLastValueWithRetractAggFunctionWithoutOrderTest + public static final class FloatLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Float> { @Override @@ -194,7 +142,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for DoubleLastValueWithRetractAggFunction. */ - public static class DoubleLastValueWithRetractAggFunctionWithoutOrderTest + public static final class DoubleLastValueWithRetractAggFunctionWithoutOrderTest extends NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<Double> { @Override @@ -211,7 +159,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for BooleanLastValueWithRetractAggFunction. */ - public static class BooleanLastValueWithRetractAggFunctionWithoutOrderTest extends + public static final class BooleanLastValueWithRetractAggFunctionWithoutOrderTest extends LastValueWithRetractAggFunctionWithoutOrderTestBase<Boolean> { @Override @@ -267,7 +215,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for DecimalLastValueWithRetractAggFunction. */ - public static class DecimalLastValueWithRetractAggFunctionWithoutOrderTest extends + public static final class DecimalLastValueWithRetractAggFunctionWithoutOrderTest extends LastValueWithRetractAggFunctionWithoutOrderTestBase<Decimal> { private int precision = 20; @@ -319,7 +267,7 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { /** * Test for StringLastValueWithRetractAggFunction. */ - public static class StringLastValueWithRetractAggFunctionWithoutOrderTest extends + public static final class StringLastValueWithRetractAggFunctionWithoutOrderTest extends LastValueWithRetractAggFunctionWithoutOrderTestBase<BinaryString> { @Override @@ -365,4 +313,71 @@ public class LastValueWithRetractAggFunctionWithoutOrderTest { return new StringLastValueWithRetractAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide: + // - common inputs + // - declare the accumulator class + // - accessor for retract function + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for LastValueWithRetractAggFunction without order. + */ + public abstract static class LastValueWithRetractAggFunctionWithoutOrderTestBase<T> + extends AggFunctionTestBase<T, GenericRow> { + + @Override + protected Class<?> getAccClass() { + return GenericRow.class; + } + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); + } + } + + /** + * Test LastValueWithRetractAggFunction for number type. + */ + public abstract static class NumberLastValueWithRetractAggFunctionWithoutOrderTestBase<T> + extends LastValueWithRetractAggFunctionWithoutOrderTestBase<T> { + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getValue("-99"), + getValue("3"), + null + ), + Arrays.asList( + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10"), + null, + getValue("3") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getValue("3"), + null, + getValue("3") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWithRetractAggFunctionTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWithRetractAggFunctionTest.java index 5c5566e..d8a848b 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWithRetractAggFunctionTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWithRetractAggFunctionTest.java @@ -29,7 +29,7 @@ import java.util.List; /** * Test case for built-in LISTAGG with retraction aggregate function. */ -public class ListAggWithRetractAggFunctionTest +public final class ListAggWithRetractAggFunctionTest extends AggFunctionTestBase<BinaryString, ListAggWithRetractAccumulator> { @Override diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWsWithRetractAggFunctionTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWsWithRetractAggFunctionTest.java index 08c4998..07ca080 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWsWithRetractAggFunctionTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/ListAggWsWithRetractAggFunctionTest.java @@ -35,7 +35,7 @@ import static org.junit.Assert.assertEquals; /** * Test case for built-in ListAggWs with retraction aggregate function. */ -public class ListAggWsWithRetractAggFunctionTest +public final class ListAggWsWithRetractAggFunctionTest extends AggFunctionTestBase<BinaryString, ListAggWsWithRetractAccumulator> { @Override diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MaxWithRetractAggFunctionTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MaxWithRetractAggFunctionTest.java index 0ee6899..f9eb15b 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MaxWithRetractAggFunctionTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MaxWithRetractAggFunctionTest.java @@ -50,80 +50,19 @@ import java.util.List; * Test case for built-in Max with retraction aggregate function. */ @RunWith(Enclosed.class) -public class MaxWithRetractAggFunctionTest { +public final class MaxWithRetractAggFunctionTest { - /** - * The base test class for MaxWithRetractAggFunction. - */ - public abstract static class MaxWithRetractAggFunctionTestBase<T> - extends AggFunctionTestBase<T, MaxWithRetractAccumulator<T>> { - - @Override - protected Class<?> getAccClass() { - return MaxWithRetractAccumulator.class; - } - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); - } - } - - /** - * Test MaxWithRetractAggFunction for number type. - */ - public abstract static class NumberMaxWithRetractAggFunctionTest<T> extends MaxWithRetractAggFunctionTestBase { - protected abstract T getMinValue(); - - protected abstract T getMaxValue(); - - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getMaxValue(), - getValue("-99"), - getValue("3"), - getValue("56"), - getValue("0"), - getMinValue(), - getValue("-20"), - getValue("17"), - null - ), - Arrays.asList( - null, - null, - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getMaxValue(), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteMaxWithRetractAggFunction. */ - public static class ByteMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Byte> { + public static final class ByteMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Byte> { @Override protected Byte getMinValue() { @@ -149,7 +88,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for ShortMaxWithRetractAggFunction. */ - public static class ShortMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Short> { + public static final class ShortMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Short> { @Override protected Short getMinValue() { @@ -175,7 +114,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for IntMaxWithRetractAggFunction. */ - public static class IntMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Integer> { + public static final class IntMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Integer> { @Override protected Integer getMinValue() { @@ -201,7 +140,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for LongMaxWithRetractAggFunction. */ - public static class LongMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Long> { + public static final class LongMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Long> { @Override protected Long getMinValue() { @@ -227,7 +166,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for FloatMaxWithRetractAggFunction. */ - public static class FloatMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Float> { + public static final class FloatMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Float> { @Override protected Float getMinValue() { @@ -253,7 +192,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for DoubleMaxWithRetractAggFunction. */ - public static class DoubleMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Double> { + public static final class DoubleMaxWithRetractAggFunctionTest extends NumberMaxWithRetractAggFunctionTest<Double> { @Override protected Double getMinValue() { @@ -279,7 +218,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for BooleanMaxWithRetractAggFunction. */ - public static class BooleanMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Boolean> { + public static final class BooleanMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Boolean> { @Override protected List<List<Boolean>> getInputValueSets() { @@ -344,7 +283,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for DecimalMaxWithRetractAggFunction. */ - public static class DecimalMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Decimal> { + public static final class DecimalMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Decimal> { private int precision = 20; private int scale = 6; @@ -395,7 +334,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for StringMaxWithRetractAggFunction. */ - public static class StringMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<BinaryString> { + public static final class StringMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<BinaryString> { @Override protected List<List<BinaryString>> getInputValueSets() { @@ -444,7 +383,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for TimestampMaxWithRetractAggFunction. */ - public static class TimestampMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<SqlTimestamp> { + public static final class TimestampMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<SqlTimestamp> { @Override protected List<List<SqlTimestamp>> getInputValueSets() { @@ -488,7 +427,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for TimestampMaxWithRetractAggFunction, precision is 9. */ - public static class Timestamp9MaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<SqlTimestamp> { + public static final class Timestamp9MaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<SqlTimestamp> { @Override protected List<List<SqlTimestamp>> getInputValueSets() { @@ -534,7 +473,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for DateMaxWithRetractAggFunction. */ - public static class DateMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Date> { + public static final class DateMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Date> { @Override protected List<List<Date>> getInputValueSets() { @@ -578,7 +517,7 @@ public class MaxWithRetractAggFunctionTest { /** * Test for TimeMaxWithRetractAggFunction. */ - public static class TimeMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Time> { + public static final class TimeMaxWithRetractAggFunctionTest extends MaxWithRetractAggFunctionTestBase<Time> { @Override protected List<List<Time>> getInputValueSets() { @@ -618,4 +557,80 @@ public class MaxWithRetractAggFunctionTest { return new TimeMaxWithRetractAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide: + // - common inputs + // - declare the accumulator class + // - accessor for retract function + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for MaxWithRetractAggFunction. + */ + public abstract static class MaxWithRetractAggFunctionTestBase<T> + extends AggFunctionTestBase<T, MaxWithRetractAccumulator<T>> { + + @Override + protected Class<?> getAccClass() { + return MaxWithRetractAccumulator.class; + } + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); + } + } + + /** + * Test MaxWithRetractAggFunction for number type. + */ + public abstract static class NumberMaxWithRetractAggFunctionTest<T> extends MaxWithRetractAggFunctionTestBase<T> { + protected abstract T getMinValue(); + + protected abstract T getMaxValue(); + + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getMaxValue(), + getValue("-99"), + getValue("3"), + getValue("56"), + getValue("0"), + getMinValue(), + getValue("-20"), + getValue("17"), + null + ), + Arrays.asList( + null, + null, + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getMaxValue(), + null, + getValue("10") + ); + } + } } diff --git a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MinWithRetractAggFunctionTest.java b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MinWithRetractAggFunctionTest.java index 3d48b9b..a922cf2 100644 --- a/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MinWithRetractAggFunctionTest.java +++ b/flink-table/flink-table-planner-blink/src/test/java/org/apache/flink/table/planner/functions/aggfunctions/MinWithRetractAggFunctionTest.java @@ -50,80 +50,19 @@ import java.util.List; * Test case for built-in Min with retraction aggregate function. */ @RunWith(Enclosed.class) -public class MinWithRetractAggFunctionTest { +public final class MinWithRetractAggFunctionTest { - /** - * The base test class for MinWithRetractAggFunction. - */ - public abstract static class MinWithRetractAggFunctionTestBase<T> - extends AggFunctionTestBase<T, MinWithRetractAccumulator<T>> { - - @Override - protected Class<?> getAccClass() { - return MinWithRetractAccumulator.class; - } - - @Override - protected Method getRetractFunc() throws NoSuchMethodException { - return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); - } - } - - /** - * Test MinWithRetractAggFunction for number type. - */ - public abstract static class NumberMinWithRetractAggFunctionTestBase<T> extends MinWithRetractAggFunctionTestBase<T> { - protected abstract T getMinValue(); - - protected abstract T getMaxValue(); - - protected abstract T getValue(String v); - - @Override - protected List<List<T>> getInputValueSets() { - return Arrays.asList( - Arrays.asList( - getValue("1"), - null, - getMaxValue(), - getValue("-99"), - getValue("3"), - getValue("56"), - getValue("0"), - getMinValue(), - getValue("-20"), - getValue("17"), - null - ), - Arrays.asList( - null, - null, - null, - null, - null, - null - ), - Arrays.asList( - null, - getValue("10") - ) - ); - } - - @Override - protected List<T> getExpectedResults() { - return Arrays.asList( - getMinValue(), - null, - getValue("10") - ); - } - } + // -------------------------------------------------------------------------------------------- + // Test sets for a particular type being aggregated + // + // Actual tests are implemented in: + // - AggFunctionTestBase + // -------------------------------------------------------------------------------------------- /** * Test for ByteMinWithRetractAggFunction. */ - public static class ByteMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Byte> { + public static final class ByteMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Byte> { @Override protected Byte getMinValue() { @@ -149,7 +88,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for ShortMinWithRetractAggFunction. */ - public static class ShortMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Short> { + public static final class ShortMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Short> { @Override protected Short getMinValue() { @@ -175,7 +114,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for IntMinWithRetractAggFunction. */ - public static class IntMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Integer> { + public static final class IntMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Integer> { @Override protected Integer getMinValue() { @@ -201,7 +140,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for LongMinWithRetractAggFunction. */ - public static class LongMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Long> { + public static final class LongMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Long> { @Override protected Long getMinValue() { @@ -227,7 +166,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for FloatMinWithRetractAggFunction. */ - public static class FloatMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Float> { + public static final class FloatMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Float> { @Override protected Float getMinValue() { @@ -253,7 +192,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for DoubleMinWithRetractAggFunction. */ - public static class DoubleMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Double> { + public static final class DoubleMinWithRetractAggFunctionTest extends NumberMinWithRetractAggFunctionTestBase<Double> { @Override protected Double getMinValue() { @@ -279,7 +218,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for BooleanMinWithRetractAggFunction. */ - public static class BooleanMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Boolean> { + public static final class BooleanMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Boolean> { @Override protected List<List<Boolean>> getInputValueSets() { @@ -334,7 +273,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for DecimalMinWithRetractAggFunction. */ - public static class DecimalMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Decimal> { + public static final class DecimalMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Decimal> { private int precision = 20; private int scale = 6; @@ -385,7 +324,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for StringMinWithRetractAggFunction. */ - public static class StringMinWithRetractAggFunctionTest + public static final class StringMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<BinaryString> { @Override @@ -435,7 +374,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for TimestampMinWithRetractAggFunction. */ - public static class TimestampMinWithRetractAggFunctionTest + public static final class TimestampMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<SqlTimestamp> { @Override @@ -480,7 +419,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for TimestampMinWithRetractAggFunction, precision is 9. */ - public static class Timestamp9MinWithRetractAggFunctionTest + public static final class Timestamp9MinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<SqlTimestamp> { @Override @@ -527,7 +466,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for DateMinWithRetractAggFunction. */ - public static class DateMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Date> { + public static final class DateMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Date> { @Override protected List<List<Date>> getInputValueSets() { @@ -571,7 +510,7 @@ public class MinWithRetractAggFunctionTest { /** * Test for TimeMinWithRetractAggFunction. */ - public static class TimeMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Time> { + public static final class TimeMinWithRetractAggFunctionTest extends MinWithRetractAggFunctionTestBase<Time> { @Override protected List<List<Time>> getInputValueSets() { @@ -611,4 +550,80 @@ public class MinWithRetractAggFunctionTest { return new TimeMinWithRetractAggFunction(); } } + + // -------------------------------------------------------------------------------------------- + // This section contain base classes that provide: + // - common inputs + // - declare the accumulator class + // - accessor for retract function + // for tests declared above. + // -------------------------------------------------------------------------------------------- + + /** + * The base test class for MinWithRetractAggFunction. + */ + public abstract static class MinWithRetractAggFunctionTestBase<T> + extends AggFunctionTestBase<T, MinWithRetractAccumulator<T>> { + + @Override + protected Class<?> getAccClass() { + return MinWithRetractAccumulator.class; + } + + @Override + protected Method getRetractFunc() throws NoSuchMethodException { + return getAggregator().getClass().getMethod("retract", getAccClass(), Object.class); + } + } + + /** + * Test MinWithRetractAggFunction for number type. + */ + public abstract static class NumberMinWithRetractAggFunctionTestBase<T> extends MinWithRetractAggFunctionTestBase<T> { + protected abstract T getMinValue(); + + protected abstract T getMaxValue(); + + protected abstract T getValue(String v); + + @Override + protected List<List<T>> getInputValueSets() { + return Arrays.asList( + Arrays.asList( + getValue("1"), + null, + getMaxValue(), + getValue("-99"), + getValue("3"), + getValue("56"), + getValue("0"), + getMinValue(), + getValue("-20"), + getValue("17"), + null + ), + Arrays.asList( + null, + null, + null, + null, + null, + null + ), + Arrays.asList( + null, + getValue("10") + ) + ); + } + + @Override + protected List<T> getExpectedResults() { + return Arrays.asList( + getMinValue(), + null, + getValue("10") + ); + } + } }