This is an automated email from the ASF dual-hosted git repository.
yuxia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 50939cdce51 [FLINK-33032][table-planner][JUnit5 Migration] Module:
flink-table-planner (ExpressionTestBase) (#23358)
50939cdce51 is described below
commit 50939cdce510b12c1e55d050c25c822a204332da
Author: Jiabao Sun <[email protected]>
AuthorDate: Tue Sep 19 22:44:47 2023 -0500
[FLINK-33032][table-planner][JUnit5 Migration] Module: flink-table-planner
(ExpressionTestBase) (#23358)
---
.../expressions/ColumnReferenceFinderTest.java | 6 +-
.../planner/expressions/TypeConversionsTest.java | 20 ++--
.../converter/ExpressionConverterTest.java | 30 +++---
.../table/planner/expressions/ArrayTypeTest.scala | 14 +--
.../planner/expressions/CompositeAccessTest.scala | 2 +-
.../planner/expressions/DecimalTypeTest.scala | 6 +-
.../table/planner/expressions/LiteralTest.scala | 2 +-
.../table/planner/expressions/MapTypeTest.scala | 2 +-
.../planner/expressions/NonDeterministicTest.scala | 45 ++++----
.../table/planner/expressions/RowTypeTest.scala | 31 +++---
.../planner/expressions/ScalarFunctionsTest.scala | 2 +-
.../planner/expressions/ScalarOperatorsTest.scala | 2 +-
.../planner/expressions/SqlExpressionTest.scala | 4 +-
.../planner/expressions/TemporalTypesTest.scala | 2 +-
.../expressions/utils/CompositeTypeTestBase.scala | 2 +-
.../expressions/utils/ExpressionTestBase.scala | 55 ++++------
.../validation/ArrayTypeValidationTest.scala | 48 +++++----
.../validation/CompositeAccessValidationTest.scala | 24 +++--
.../validation/MapTypeValidationTest.scala | 36 ++++---
.../validation/RowTypeValidationTest.scala | 18 ++--
.../validation/ScalarFunctionsValidationTest.scala | 118 +++++++++++++--------
.../validation/ScalarOperatorsValidationTest.scala | 33 +++---
22 files changed, 277 insertions(+), 225 deletions(-)
diff --git
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/ColumnReferenceFinderTest.java
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/ColumnReferenceFinderTest.java
index 6e406315e12..fccea6d7703 100644
---
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/ColumnReferenceFinderTest.java
+++
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/ColumnReferenceFinderTest.java
@@ -33,13 +33,13 @@ import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
/** Test for {@link ColumnReferenceFinder}. */
-public class ColumnReferenceFinderTest extends TableTestBase {
+class ColumnReferenceFinderTest extends TableTestBase {
private final StreamTableTestUtil util =
streamTestUtil(TableConfig.getDefault());
private ResolvedSchema resolvedSchema;
@BeforeEach
- public void beforeEach() {
+ void beforeEach() {
resolvedSchema =
util.testingTableEnv()
.getCatalogManager()
@@ -62,7 +62,7 @@ public class ColumnReferenceFinderTest extends TableTestBase {
}
@Test
- public void testFindReferencedColumn() {
+ void testFindReferencedColumn() {
assertThat(ColumnReferenceFinder.findReferencedColumn("b",
resolvedSchema))
.isEqualTo(Collections.emptySet());
diff --git
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/TypeConversionsTest.java
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/TypeConversionsTest.java
index 62252c9c934..6d581648d0d 100644
---
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/TypeConversionsTest.java
+++
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/TypeConversionsTest.java
@@ -21,7 +21,7 @@ package org.apache.flink.table.planner.expressions;
import org.apache.flink.table.api.DataTypes;
import
org.apache.flink.table.planner.expressions.utils.ScalarOperatorsTestBase;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import java.time.Instant;
import java.time.LocalDate;
@@ -32,33 +32,33 @@ import java.time.ZoneOffset;
import static org.apache.flink.table.api.Expressions.lit;
/** Tests for {@code CAST} expression. */
-public class TypeConversionsTest extends ScalarOperatorsTestBase {
+class TypeConversionsTest extends ScalarOperatorsTestBase {
@Test
- public void testTimestampWithLocalTimeZoneToString() {
+ void testTimestampWithLocalTimeZoneToString() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(2));
testTableApi(lit(Instant.EPOCH).cast(DataTypes.STRING()), "1970-01-01
02:00:00");
}
@Test
- public void testTimestampWithLocalTimeZoneToDate() {
+ void testTimestampWithLocalTimeZoneToDate() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(4));
testTableApi(lit(Instant.EPOCH).cast(DataTypes.DATE()), "1970-01-01");
}
@Test
- public void testTimestampWithLocalTimeZoneToTime() {
+ void testTimestampWithLocalTimeZoneToTime() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(4));
testTableApi(lit(Instant.EPOCH).cast(DataTypes.TIME(0)), "04:00:00");
}
@Test
- public void testTimestampWithLocalTimeZoneToTimestamp() {
+ void testTimestampWithLocalTimeZoneToTimestamp() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(3));
testTableApi(lit(Instant.EPOCH).cast(DataTypes.TIMESTAMP(0)),
"1970-01-01 03:00:00");
}
@Test
- public void testStringToTimestampWithLocalTimeZone() {
+ void testStringToTimestampWithLocalTimeZone() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(2));
testTableApi(
lit("1970-01-01
00:00:00").cast(DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)),
@@ -70,7 +70,7 @@ public class TypeConversionsTest extends
ScalarOperatorsTestBase {
}
@Test
- public void testTimestampToTimestampWithLocalTimeZone() {
+ void testTimestampToTimestampWithLocalTimeZone() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(2));
testTableApi(
lit(LocalDateTime.parse("1970-01-01T00:00:00"))
@@ -83,7 +83,7 @@ public class TypeConversionsTest extends
ScalarOperatorsTestBase {
}
@Test
- public void testTimeToTimestampWithLocalTimeZone() {
+ void testTimeToTimestampWithLocalTimeZone() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(2));
testTableApi(
lit(LocalTime.parse("12:00:00")).cast(DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)),
@@ -95,7 +95,7 @@ public class TypeConversionsTest extends
ScalarOperatorsTestBase {
}
@Test
- public void testDateToTimestampWithLocalTimeZone() {
+ void testDateToTimestampWithLocalTimeZone() {
tableConfig().setLocalTimeZone(ZoneOffset.ofHours(2));
testTableApi(
lit(LocalDate.parse("1970-02-01"))
diff --git
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/converter/ExpressionConverterTest.java
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/converter/ExpressionConverterTest.java
index af317c1915d..ffea6f95d5e 100644
---
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/converter/ExpressionConverterTest.java
+++
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/expressions/converter/ExpressionConverterTest.java
@@ -30,7 +30,7 @@ import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.calcite.util.DateString;
import org.apache.calcite.util.TimeString;
import org.apache.calcite.util.TimestampString;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.time.Duration;
@@ -44,14 +44,14 @@ import static
org.apache.flink.table.expressions.ApiExpressionUtils.valueLiteral
import static org.assertj.core.api.Assertions.assertThat;
/** Test for {@link ExpressionConverter}. */
-public class ExpressionConverterTest {
+class ExpressionConverterTest {
private final PlannerContext plannerContext =
PlannerMocks.create().getPlannerContext();
private final ExpressionConverter converter =
new ExpressionConverter(plannerContext.createRelBuilder());
@Test
- public void testLiteral() {
+ void testLiteral() {
RexNode rex = converter.visit(valueLiteral((byte) 1));
assertThat((int) ((RexLiteral)
rex).getValueAs(Integer.class)).isEqualTo(1);
assertThat(rex.getType().getSqlTypeName()).isEqualTo(SqlTypeName.TINYINT);
@@ -66,7 +66,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testCharLiteral() {
+ void testCharLiteral() {
RexNode rex = converter.visit(valueLiteral("ABC",
DataTypes.CHAR(4).notNull()));
assertThat(((RexLiteral) rex).getValueAs(String.class)).isEqualTo("ABC
");
assertThat(rex.getType().getSqlTypeName()).isEqualTo(SqlTypeName.CHAR);
@@ -74,7 +74,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testVarCharLiteral() {
+ void testVarCharLiteral() {
RexNode rex = converter.visit(valueLiteral("ABC",
DataTypes.STRING().notNull()));
assertThat(((RexLiteral)
rex).getValueAs(String.class)).isEqualTo("ABC");
assertThat(rex.getType().getSqlTypeName()).isEqualTo(SqlTypeName.VARCHAR);
@@ -82,7 +82,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testBinaryLiteral() {
+ void testBinaryLiteral() {
RexNode rex =
converter.visit(valueLiteral(new byte[] {1, 2, 3},
DataTypes.BINARY(4).notNull()));
assertThat(((RexLiteral) rex).getValueAs(byte[].class)).isEqualTo(new
byte[] {1, 2, 3, 0});
@@ -91,7 +91,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testTimestampLiteral() {
+ void testTimestampLiteral() {
RexNode rex =
converter.visit(
valueLiteral(
@@ -104,7 +104,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testTimestampWithLocalZoneLiteral() {
+ void testTimestampWithLocalZoneLiteral() {
RexNode rex =
converter.visit(
valueLiteral(
@@ -118,7 +118,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testTimeLiteral() {
+ void testTimeLiteral() {
RexNode rex =
converter.visit(
valueLiteral(
@@ -130,7 +130,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testTimeLiteralBiggerPrecision() {
+ void testTimeLiteralBiggerPrecision() {
RexNode rex =
converter.visit(
valueLiteral(
@@ -143,7 +143,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testDateLiteral() {
+ void testDateLiteral() {
RexNode rex =
converter.visit(
valueLiteral(LocalDate.parse("2012-12-12"),
DataTypes.DATE().notNull()));
@@ -153,7 +153,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testIntervalDayTime() {
+ void testIntervalDayTime() {
Duration value = Duration.ofDays(3).plusMillis(21);
RexNode rex = converter.visit(valueLiteral(value));
assertThat(((RexLiteral) rex).getValueAs(BigDecimal.class))
@@ -167,7 +167,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testIntervalYearMonth() {
+ void testIntervalYearMonth() {
Period value = Period.of(999, 3, 1);
RexNode rex = converter.visit(valueLiteral(value));
assertThat(((RexLiteral) rex).getValueAs(BigDecimal.class))
@@ -179,7 +179,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testDecimalLiteral() {
+ void testDecimalLiteral() {
BigDecimal value = new BigDecimal("12345678.999");
RexNode rex = converter.visit(valueLiteral(value));
assertThat(((RexLiteral)
rex).getValueAs(BigDecimal.class)).isEqualTo(value);
@@ -189,7 +189,7 @@ public class ExpressionConverterTest {
}
@Test
- public void testSymbolLiteral() {
+ void testSymbolLiteral() {
RexNode rex = converter.visit(valueLiteral(TimePointUnit.MICROSECOND));
assertThat(((RexLiteral)
rex).getValueAs(TimeUnit.class)).isEqualTo(TimeUnit.MICROSECOND);
assertThat(rex.getType().getSqlTypeName()).isEqualTo(SqlTypeName.SYMBOL);
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ArrayTypeTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ArrayTypeTest.scala
index 0af130b4596..d5465104c1d 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ArrayTypeTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ArrayTypeTest.scala
@@ -21,7 +21,7 @@ import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.ArrayTypeTestBase
import org.apache.flink.table.planner.utils.DateTimeTestUtil.{localDate,
localDateTime, localTime => gLocalTime}
-import org.junit.Test
+import org.junit.jupiter.api.Test
import java.time.{LocalDateTime => JLocalDateTime}
@@ -226,16 +226,16 @@ class ArrayTypeTest extends ArrayTypeTestBase {
@Test
def testArrayIndexStaticCheckForTable(): Unit = {
- thrown.expect(classOf[ValidationException])
- thrown.expectMessage("Array element access needs an index starting at 1
but was 0.")
- testTableApi('f2.at(0), "1")
+ testExpectedTableApiException(
+ 'f2.at(0),
+ "Array element access needs an index starting at 1 but was 0.")
}
@Test
def testArrayIndexStaticCheckForSql(): Unit = {
- thrown.expect(classOf[ValidationException])
- thrown.expectMessage("Array element access needs an index starting at 1
but was 0.")
- testSqlApi("f2[0]", "1")
+ testExpectedSqlException(
+ "f2[0]",
+ "Array element access needs an index starting at 1 but was 0.")
}
@Test
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/CompositeAccessTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/CompositeAccessTest.scala
index 85efc753ab5..9f17d258628 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/CompositeAccessTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/CompositeAccessTest.scala
@@ -20,7 +20,7 @@ package org.apache.flink.table.planner.expressions
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.CompositeTypeTestBase
-import org.junit.Test
+import org.junit.jupiter.api.Test
class CompositeAccessTest extends CompositeTypeTestBase {
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/DecimalTypeTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/DecimalTypeTest.scala
index 18d0dd0388e..014c50b3250 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/DecimalTypeTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/DecimalTypeTest.scala
@@ -22,7 +22,7 @@ import
org.apache.flink.table.planner.expressions.utils.ExpressionTestBase
import org.apache.flink.table.types.DataType
import org.apache.flink.types.Row
-import org.junit.Test
+import org.junit.jupiter.api.Test
class DecimalTypeTest extends ExpressionTestBase {
@@ -385,11 +385,11 @@ class DecimalTypeTest extends ExpressionTestBase {
testAllApis((-'f51).round(1), "round(-f51,1)", "-100.0")
- testAllApis(('f51).round(-1), "round(f51,-1)", "100")
+ testAllApis('f51.round(-1), "round(f51,-1)", "100")
testAllApis((-'f51).round(-1), "round(-f51,-1)", "-100")
- testAllApis(('f52).round(-1), "round(f52,-1)", "NULL")
+ testAllApis('f52.round(-1), "round(f52,-1)", "NULL")
}
@Test // functions e.g. sin() that treat Decimal as double
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/LiteralTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/LiteralTest.scala
index 30e20a4ac40..32f4a593f53 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/LiteralTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/LiteralTest.scala
@@ -24,7 +24,7 @@ import org.apache.flink.table.functions.ScalarFunction
import org.apache.flink.table.planner.expressions.utils.{ExpressionTestBase,
Func3}
import org.apache.flink.types.Row
-import org.junit.Test
+import org.junit.jupiter.api.Test
class LiteralTest extends ExpressionTestBase {
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/MapTypeTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/MapTypeTest.scala
index c2aaa4aa4da..69cffb2f9f4 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/MapTypeTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/MapTypeTest.scala
@@ -22,7 +22,7 @@ import
org.apache.flink.table.expressions.ApiExpressionUtils.valueLiteral
import org.apache.flink.table.planner.expressions.utils.MapTypeTestBase
import org.apache.flink.table.planner.utils.DateTimeTestUtil.{localDate,
localDateTime, localTime => gLocalTime}
-import org.junit.Test
+import org.junit.jupiter.api.Test
import java.time.{LocalDateTime => JLocalTimestamp}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/NonDeterministicTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/NonDeterministicTest.scala
index a21b4b30630..80691a3e8dd 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/NonDeterministicTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/NonDeterministicTest.scala
@@ -24,13 +24,13 @@ import org.apache.flink.table.api._
import org.apache.flink.table.functions.ScalarFunction
import org.apache.flink.table.planner.expressions.utils.ExpressionTestBase
import org.apache.flink.table.planner.utils.{InternalConfigOptions,
TableConfigUtils}
+import
org.apache.flink.testutils.junit.extensions.parameterized.{ParameterizedTestExtension,
Parameters}
import org.apache.flink.types.Row
-import org.junit.Assert.assertEquals
-import org.junit.Assume.assumeTrue
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
+import org.assertj.core.api.Assertions.assertThat
+import org.assertj.core.api.Assumptions.assumeThat
+import org.junit.jupiter.api.TestTemplate
+import org.junit.jupiter.api.extension.ExtendWith
import java.lang.{Long => JLong}
import java.sql.Time
@@ -42,12 +42,12 @@ import java.util.TimeZone
import scala.collection.mutable
/** Tests that check all non-deterministic functions can be executed. */
-@RunWith(classOf[Parameterized])
+@ExtendWith(Array(classOf[ParameterizedTestExtension]))
class NonDeterministicTest(isStreaming: Boolean) extends
ExpressionTestBase(isStreaming) {
- @Test
+ @TestTemplate
def testTemporalFunctionsInStreamMode(): Unit = {
- assumeTrue(isStreaming)
+ assumeThat(isStreaming).isTrue
val temporalFunctions = getCodeGenFunctions(
List(
"CURRENT_DATE",
@@ -61,7 +61,7 @@ class NonDeterministicTest(isStreaming: Boolean) extends
ExpressionTestBase(isSt
Thread.sleep(1 * 1000L)
val round2: List[String] = evaluateFunctionResult(temporalFunctions)
- assertEquals(round1.size, round2.size)
+ assertThat(round2.size).isEqualTo(round2.size)
round1.zip(round2).zipWithIndex.foreach {
case ((result1: String, result2: String), index: Int) =>
// CURRENT_DATE may be same between two records
@@ -76,14 +76,14 @@ class NonDeterministicTest(isStreaming: Boolean) extends
ExpressionTestBase(isSt
// should return same value for one record in stream job
val currentTimeStampIndex = 2
val currentRowTimestampIndex = 3
- assertEquals(round1(currentTimeStampIndex),
round1(currentRowTimestampIndex))
- assertEquals(round2(currentTimeStampIndex),
round2(currentRowTimestampIndex))
+
assertThat(round1(currentTimeStampIndex)).isEqualTo(round1(currentRowTimestampIndex))
+
assertThat(round2(currentTimeStampIndex)).isEqualTo(round2(currentRowTimestampIndex))
}
- @Test
+ @TestTemplate
def testTemporalFunctionsInBatchMode(): Unit = {
- assumeTrue(!isStreaming)
+ assumeThat(isStreaming).isFalse
val zoneId = ZoneId.of("Asia/Shanghai")
tableConfig.setLocalTimeZone(zoneId)
tableConfig.set(ExecutionOptions.RUNTIME_MODE, RuntimeExecutionMode.BATCH)
@@ -111,32 +111,31 @@ class NonDeterministicTest(isStreaming: Boolean) extends
ExpressionTestBase(isSt
"1970-01-01 08:00:01.123")
val result = evaluateFunctionResult(temporalFunctions)
- assertEquals(expected.toList.sorted, result.sorted)
-
+ assertThat(result.sorted).isEqualTo(expected.toList.sorted)
}
- @Test
+ @TestTemplate
def testCurrentRowTimestampFunctionsInBatchMode(): Unit = {
- assumeTrue(!isStreaming)
+ assumeThat(isStreaming).isFalse
val temporalFunctions =
getCodeGenFunctions(List("CURRENT_ROW_TIMESTAMP()"))
val round1 = evaluateFunctionResult(temporalFunctions)
Thread.sleep(1 * 1000L)
val round2: List[String] = evaluateFunctionResult(temporalFunctions)
- assertEquals(round1.size, round2.size)
+ assumeThat(round2.size).isEqualTo(round1.size)
round1.zip(round2).foreach {
case (result1: String, result2: String) =>
assert(result1 < result2)
}
}
- @Test
+ @TestTemplate
def testTemporalFunctionsInUTC(): Unit = {
testTemporalTimestamp(ZoneId.of("UTC"))
}
- @Test
+ @TestTemplate
def testTemporalFunctionsInShanghai(): Unit = {
testTemporalTimestamp(ZoneId.of("Asia/Shanghai"))
}
@@ -193,12 +192,12 @@ class NonDeterministicTest(isStreaming: Boolean) extends
ExpressionTestBase(isSt
"TRUE")
}
- @Test
+ @TestTemplate
def testUUID(): Unit = {
testAllApis(uuid().charLength(), "CHARACTER_LENGTH(UUID())", "36")
}
- @Test
+ @TestTemplate
def testRand(): Unit = {
testSqlApi("RAND() <> RAND() or RAND() = RAND()", "TRUE")
testSqlApi("RAND(1) <> RAND(1) or RAND(1) = RAND(1)", "TRUE")
@@ -243,7 +242,7 @@ object DateDiffFun extends ScalarFunction {
}
object NonDeterministicTest {
- @Parameterized.Parameters(name = "isStream={0}")
+ @Parameters(name = "isStream={0}")
def parameters(): util.Collection[Boolean] = {
util.Arrays.asList(true, false)
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/RowTypeTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/RowTypeTest.scala
index 07252e11a02..e179be85802 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/RowTypeTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/RowTypeTest.scala
@@ -21,7 +21,8 @@ import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.RowTypeTestBase
import org.apache.flink.table.planner.utils.DateTimeTestUtil.{localDate,
localDateTime, localTime => gLocalTime}
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class RowTypeTest extends RowTypeTestBase {
@@ -89,22 +90,24 @@ class RowTypeTest extends RowTypeTestBase {
@Test
def testUnsupportedCastTableApi(): Unit = {
- expectedException.expect(classOf[ValidationException])
-
- testTableApi(
- 'f5.cast(DataTypes.BIGINT()),
- ""
- )
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () =>
+ testTableApi(
+ 'f5.cast(DataTypes.BIGINT()),
+ ""
+ ))
}
@Test
def testUnsupportedCastSqlApi(): Unit = {
- expectedException.expect(classOf[ValidationException])
- expectedException.expectMessage("Cast function cannot convert value")
-
- testSqlApi(
- "CAST(f5 AS BIGINT)",
- ""
- )
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () =>
+ testSqlApi(
+ "CAST(f5 AS BIGINT)",
+ ""
+ ))
+ .withMessageContaining("Cast function cannot convert value")
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
index 96a51a2c7e8..983b272fb3b 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
@@ -21,7 +21,7 @@ import org.apache.flink.table.api._
import org.apache.flink.table.expressions.{Expression, TimeIntervalUnit,
TimePointUnit}
import org.apache.flink.table.planner.expressions.utils.ScalarTypesTestBase
-import org.junit.Test
+import org.junit.jupiter.api.Test
class ScalarFunctionsTest extends ScalarTypesTestBase {
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarOperatorsTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarOperatorsTest.scala
index c01cb8f5f11..912b138fda5 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarOperatorsTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/ScalarOperatorsTest.scala
@@ -20,7 +20,7 @@ package org.apache.flink.table.planner.expressions
import org.apache.flink.table.api.{DataTypes, LiteralStringExpression,
UnresolvedFieldExpression}
import org.apache.flink.table.planner.expressions.utils.ScalarOperatorsTestBase
-import org.junit.Test
+import org.junit.jupiter.api.Test
class ScalarOperatorsTest extends ScalarOperatorsTestBase {
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
index b59df947ba9..f45e0c93e2e 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
@@ -21,7 +21,7 @@ import org.apache.flink.api.java.typeutils.RowTypeInfo
import org.apache.flink.table.planner.expressions.utils.ExpressionTestBase
import org.apache.flink.types.Row
-import org.junit.Test
+import org.junit.jupiter.api.Test
/**
* Tests all SQL expressions that are currently supported according to the
documentation. This tests
@@ -95,7 +95,7 @@ class SqlExpressionTest extends ExpressionTestBase {
testSqlApi("5-5", "0")
testSqlApi("5*5", "25")
testSqlApi("5/5", "1")
- testSqlApi("5%2", "1");
+ testSqlApi("5%2", "1")
testSqlApi("POWER(5, 5)", "3125.0")
testSqlApi("POWER(-1, 0.5)", "NaN")
testSqlApi("ABS(-5)", "5")
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/TemporalTypesTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/TemporalTypesTest.scala
index 5b5c5eb87d4..6819dab298e 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/TemporalTypesTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/TemporalTypesTest.scala
@@ -26,7 +26,7 @@ import org.apache.flink.table.planner.utils.DateTimeTestUtil._
import org.apache.flink.table.types.DataType
import org.apache.flink.types.Row
-import org.junit.Test
+import org.junit.jupiter.api.Test
import java.lang.{Double => JDouble, Float => JFloat, Integer => JInt, Long =>
JLong}
import java.sql.Timestamp
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/CompositeTypeTestBase.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/CompositeTypeTestBase.scala
index c3822c9176d..ecf52c5f1c1 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/CompositeTypeTestBase.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/CompositeTypeTestBase.scala
@@ -84,7 +84,7 @@ object CompositeTypeTestBase {
def getMyString: String = myString
def setMyString(value: String): Unit = {
- myString = myString
+ myString = value
}
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/ExpressionTestBase.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/ExpressionTestBase.scala
index e52afd43acf..48e972d275a 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/ExpressionTestBase.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/utils/ExpressionTestBase.scala
@@ -52,10 +52,10 @@ import org.apache.calcite.rel.logical.LogicalCalc
import org.apache.calcite.rel.rules._
import org.apache.calcite.rex.RexNode
import org.apache.calcite.sql.`type`.SqlTypeName.VARCHAR
-import org.assertj.core.api.Assertions.assertThatThrownBy
-import org.junit.{After, Before, Rule}
-import org.junit.Assert.{assertEquals, assertTrue, fail}
-import org.junit.rules.ExpectedException
+import org.assertj.core.api.Assertions.{assertThatExceptionOfType,
assertThatThrownBy}
+import org.assertj.core.api.ThrowableAssert.ThrowingCallable
+import org.junit.jupiter.api.{AfterEach, BeforeEach}
+import org.junit.jupiter.api.Assertions.{assertEquals, assertTrue}
import java.util.Collections
@@ -90,13 +90,7 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
private val tableName = "testTable"
protected val nullable = "NULL"
- // used for accurate exception information checking.
- val expectedException: ExpectedException = ExpectedException.none()
-
- @Rule
- def thrown: ExpectedException = expectedException
-
- @Before
+ @BeforeEach
def prepare(): Unit = {
settings = if (isStreaming) {
EnvironmentSettings.newInstance().inStreamingMode().build()
@@ -138,7 +132,7 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
invalidTableApiExprs.clear()
}
- @After
+ @AfterEach
def evaluateExprs(): Unit = {
// evaluate valid expressions
@@ -146,25 +140,20 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
// evaluate invalid expressions
invalidSqlExprs.foreach {
- case (sqlExpr, keywords, clazz) => {
- try {
+ case (sqlExpr, keywords, clazz) =>
+ val callable: ThrowingCallable = () => {
val invalidExprs = mutable.ArrayBuffer[(String, RexNode, String)]()
addSqlTestExpr(sqlExpr, keywords, invalidExprs, clazz)
evaluateGivenExprs(invalidExprs)
- fail(s"Expected a $clazz, but no exception is thrown.")
- } catch {
- case e if e.getClass == clazz =>
- if (keywords != null) {
- assertTrue(
- s"The actual exception message \n${e.getMessage}\n" +
- s"doesn't contain expected keyword \n$keywords\n",
- e.getMessage.contains(keywords))
- }
- case e: Throwable =>
- e.printStackTrace()
- fail(s"Expected throw ${clazz.getSimpleName}, but is $e.")
}
- }
+ if (keywords != null) {
+ assertThatExceptionOfType(clazz)
+ .isThrownBy(callable)
+ .withMessageContaining(keywords)
+ } else {
+ assertThatExceptionOfType(clazz)
+ .isThrownBy(callable)
+ }
}
invalidTableApiExprs.foreach {
@@ -329,9 +318,9 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
val optimized = hep.findBestExp()
// throw exception if plan contains more than a calc
- if (!optimized.getInput(0).getInputs.isEmpty) {
- fail("Expression is converted into more than a Calc operation. Use a
different test method.")
- }
+ assertTrue(
+ optimized.getInput(0).getInputs.isEmpty,
+ "Expression is converted into more than a Calc operation. Use a
different test method.")
exprs.asInstanceOf[mutable.ArrayBuffer[(String, RexNode, String)]] +=
((summaryString, extractRexNode(optimized), expected))
@@ -356,9 +345,9 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
case ((originalExpr, optimizedExpr, expected), actual) =>
val original = if (originalExpr == null) "" else s"for:
[$originalExpr]"
assertEquals(
- s"Wrong result $original optimized to: [$optimizedExpr]",
expected,
- if (actual == null) "NULL" else actual)
+ if (actual == null) "NULL" else actual,
+ s"Wrong result $original optimized to: [$optimizedExpr]")
}
}
@@ -401,7 +390,7 @@ abstract class ExpressionTestBase(isStreaming: Boolean =
true) {
def testDataType: AbstractDataType[_] =
throw new IllegalArgumentException("Implement this if no legacy types are
expected.")
- def testSystemFunctions: java.util.Map[String, ScalarFunction] =
Collections.emptyMap();
+ def testSystemFunctions: java.util.Map[String, ScalarFunction] =
Collections.emptyMap()
//
----------------------------------------------------------------------------------------------
// Legacy type system
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ArrayTypeValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ArrayTypeValidationTest.scala
index aade9d9871a..ce47498ebfe 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ArrayTypeValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ArrayTypeValidationTest.scala
@@ -20,52 +20,62 @@ package
org.apache.flink.table.planner.expressions.validation
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.ArrayTypeTestBase
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class ArrayTypeValidationTest extends ArrayTypeTestBase {
- @Test(expected = classOf[ValidationException])
+ @Test
def testImplicitTypeCastArraySql(): Unit = {
- testSqlApi("ARRAY['string', 12]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("ARRAY['string', 12]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testObviousInvalidIndexTableApi(): Unit = {
- testTableApi('f2.at(0), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f2.at(0), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testEmptyArraySql(): Unit = {
- testSqlApi("ARRAY[]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("ARRAY[]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testNullArraySql(): Unit = {
- testSqlApi("ARRAY[NULL]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("ARRAY[NULL]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testDifferentTypesArraySql(): Unit = {
- testSqlApi("ARRAY[1, TRUE]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("ARRAY[1, TRUE]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testElementNonArray(): Unit = {
- testTableApi('f0.element(), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f0.element(), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testElementNonArraySql(): Unit = {
- testSqlApi("ELEMENT(f0)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("ELEMENT(f0)", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testCardinalityOnNonArray(): Unit = {
- testTableApi('f0.cardinality(), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f0.cardinality(), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testCardinalityOnNonArraySql(): Unit = {
- testSqlApi("CARDINALITY(f0)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("CARDINALITY(f0)", "FAIL"))
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/CompositeAccessValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/CompositeAccessValidationTest.scala
index ed557be5ed5..3e1627daf53 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/CompositeAccessValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/CompositeAccessValidationTest.scala
@@ -20,27 +20,33 @@ package
org.apache.flink.table.planner.expressions.validation
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.CompositeTypeTestBase
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class CompositeAccessValidationTest extends CompositeTypeTestBase {
- @Test(expected = classOf[ValidationException])
+ @Test
def testWrongSqlFieldFull(): Unit = {
- testSqlApi("testTable.f5.test", "13")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("testTable.f5.test", "13"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testWrongSqlField(): Unit = {
- testSqlApi("f5.test", "13")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("f5.test", "13"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testWrongIntKeyField(): Unit = {
- testTableApi('f0.get(555), "fail")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f0.get(555), "fail"))
+
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testWrongStringKeyField(): Unit = {
- testTableApi('f0.get("fghj"), "fail")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f0.get("fghj"), "fail"))
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/MapTypeValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/MapTypeValidationTest.scala
index 6375c8b9678..e1132f94fa2 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/MapTypeValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/MapTypeValidationTest.scala
@@ -20,34 +20,44 @@ package
org.apache.flink.table.planner.expressions.validation
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.MapTypeTestBase
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class MapTypeValidationTest extends MapTypeTestBase {
- @Test(expected = classOf[ValidationException])
+ @Test
def testWrongKeyType(): Unit = {
- testAllApis('f2.at(12), "f2[12]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis('f2.at(12), "f2[12]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testIncorrectMapTypeComparison(): Unit = {
- testAllApis('f1 === 'f3, "f1 = f3", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis('f1 === 'f3, "f1 = f3", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testUnsupportedComparisonType(): Unit = {
- testAllApis('f6 !== 'f2, "f6 != f2", "FAIL")
- testSqlApi("f6 <> f2", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis('f6 !== 'f2, "f6 != f2", "FAIL"))
+
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("f6 <> f2", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testEmptyMap(): Unit = {
- testAllApis("FAIL", "MAP[]", "FAIL")
- testSqlApi("MAP[]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis("FAIL", "MAP[]", "FAIL"))
+
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("MAP[]", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testUnsupportedMapImplicitTypeCastSql(): Unit = {
- testSqlApi("MAP['k1', 'string', 'k2', 12]", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("MAP['k1', 'string', 'k2', 12]", "FAIL"))
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/RowTypeValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/RowTypeValidationTest.scala
index a5865696532..4ce27d18769 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/RowTypeValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/RowTypeValidationTest.scala
@@ -20,22 +20,26 @@ package
org.apache.flink.table.planner.expressions.validation
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.RowTypeTestBase
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class RowTypeValidationTest extends RowTypeTestBase {
- @Test(expected = classOf[SqlParserException])
+ @Test
def testEmptyRowType(): Unit = {
- testSqlApi("Row()", "FAIL")
+ assertThatExceptionOfType(classOf[SqlParserException])
+ .isThrownBy(() => testSqlApi("Row()", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testNullRowType(): Unit = {
- testAllApis("FAIL", "Row(NULL)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis("FAIL", "Row(NULL)", "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testSqlRowIllegalAccess(): Unit = {
- testAllApis('f5.get("f2"), "f5.f2", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testAllApis('f5.get("f2"), "f5.f2", "FAIL"))
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarFunctionsValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarFunctionsValidationTest.scala
index c4b0b0fa95c..1ce90d8e9e9 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarFunctionsValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarFunctionsValidationTest.scala
@@ -21,8 +21,8 @@ import org.apache.flink.table.api._
import org.apache.flink.table.expressions.TimePointUnit
import org.apache.flink.table.planner.expressions.utils.ScalarTypesTestBase
-import org.apache.calcite.avatica.util.TimeUnit
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class ScalarFunctionsValidationTest extends ScalarTypesTestBase {
@@ -30,104 +30,126 @@ class ScalarFunctionsValidationTest extends
ScalarTypesTestBase {
// Math functions
//
----------------------------------------------------------------------------------------------
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidBin1(): Unit = {
- testSqlApi("BIN(f12)", "101010") // float type
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("BIN(f12)", "101010")) // float type
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidBin2(): Unit = {
- testSqlApi("BIN(f15)", "101010") // BigDecimal type
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("BIN(f15)", "101010")) // BigDecimal type
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidBin3(): Unit = {
- testSqlApi("BIN(f16)", "101010") // Date type
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("BIN(f16)", "101010")) // Date type
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidTruncate1(): Unit = {
// All arguments are string type
- testSqlApi("TRUNCATE('abc', 'def')", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE('abc', 'def')", "FAIL"))
// The second argument is of type String
- testSqlApi("TRUNCATE(f12, f0)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE(f12, f0)", "FAIL"))
// The second argument is of type Float
- testSqlApi("TRUNCATE(f12,f12)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE(f12,f12)", "FAIL"))
// The second argument is of type Double
- testSqlApi("TRUNCATE(f12, cast(f28 as DOUBLE))", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE(f12, cast(f28 as DOUBLE))",
"FAIL"))
// The second argument is of type BigDecimal
- testSqlApi("TRUNCATE(f12,f15)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE(f12,f15)", "FAIL"))
}
@Test
def testInvalidTruncate2(): Unit = {
- thrown.expect(classOf[ValidationException])
// The one argument is of type String
- testSqlApi("TRUNCATE('abc')", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TRUNCATE('abc')", "FAIL"))
}
//
----------------------------------------------------------------------------------------------
// String functions
//
----------------------------------------------------------------------------------------------
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidSubstring1(): Unit = {
// Must fail. Parameter of substring must be an Integer not a Double.
- testTableApi("test".substring(2.0.toExpr), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi("test".substring(2.0.toExpr), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidSubstring2(): Unit = {
// Must fail. Parameter of substring must be an Integer not a String.
- testTableApi("test".substring("test".toExpr), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi("test".substring("test".toExpr), "FAIL"))
}
//
----------------------------------------------------------------------------------------------
// Temporal functions
//
----------------------------------------------------------------------------------------------
- @Test(expected = classOf[SqlParserException])
+ @Test
def testTimestampAddWithWrongTimestampInterval(): Unit = {
- testSqlApi("TIMESTAMPADD(XXX, 1, timestamp '2016-02-24'))", "2016-06-16")
+ assertThatExceptionOfType(classOf[SqlParserException])
+ .isThrownBy(() => testSqlApi("TIMESTAMPADD(XXX, 1, timestamp
'2016-02-24'))", "2016-06-16"))
}
- @Test(expected = classOf[SqlParserException])
+ @Test
def testTimestampAddWithWrongTimestampFormat(): Unit = {
- testSqlApi("TIMESTAMPADD(YEAR, 1, timestamp '2016-02-24'))", "2016-06-16")
+ assertThatExceptionOfType(classOf[SqlParserException])
+ .isThrownBy(() => testSqlApi("TIMESTAMPADD(YEAR, 1, timestamp
'2016-02-24'))", "2016-06-16"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testTimestampAddWithWrongQuantity(): Unit = {
- testSqlApi("TIMESTAMPADD(YEAR, 1.0, timestamp '2016-02-24 12:42:25')",
"2016-06-16")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () => testSqlApi("TIMESTAMPADD(YEAR, 1.0, timestamp '2016-02-24
12:42:25')", "2016-06-16"))
}
//
----------------------------------------------------------------------------------------------
// Sub-query functions
//
----------------------------------------------------------------------------------------------
- @Test(expected = classOf[ValidationException])
+ @Test
def testInValidationExceptionMoreThanOneTypes(): Unit = {
- testTableApi('f2.in('f3, 'f8), "TRUE")
- testTableApi('f2.in('f3, 'f4, 4), "FALSE")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f2.in('f3, 'f8), "TRUE"))
+
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f2.in('f3, 'f4, 4), "FALSE"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def scalaInValidationExceptionDifferentOperandsTest(): Unit = {
- testTableApi('f1.in("Hi", "Hello world", "Comment#1"), "TRUE")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f1.in("Hi", "Hello world", "Comment#1"),
"TRUE"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testTimestampDiffWithWrongTime(): Unit = {
- testTableApi(timestampDiff(TimePointUnit.DAY, "2016-02-24", "2016-02-27"),
"FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () => testTableApi(timestampDiff(TimePointUnit.DAY, "2016-02-24",
"2016-02-27"), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testTimestampDiffWithWrongTimeAndUnit(): Unit = {
- testTableApi(timestampDiff(TimePointUnit.MINUTE, "2016-02-24",
"2016-02-27"), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () => testTableApi(timestampDiff(TimePointUnit.MINUTE, "2016-02-24",
"2016-02-27"), "FAIL"))
}
//
----------------------------------------------------------------------------------------------
@@ -137,27 +159,29 @@ class ScalarFunctionsValidationTest extends
ScalarTypesTestBase {
@Test
def testInvalidStringToMap(): Unit = {
// test non-exist key access
- thrown.expect(classOf[ValidationException])
- thrown.expectMessage("Invalid number of arguments to function
'STR_TO_MAP'")
- testSqlApi(
- "STR_TO_MAP('k1:v1;k2:v2', ';')",
- "EXCEPTION"
- )
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(
+ () =>
+ testSqlApi(
+ "STR_TO_MAP('k1:v1;k2:v2', ';')",
+ "EXCEPTION"
+ ))
+ .withMessageContaining("Invalid number of arguments to function
'STR_TO_MAP'")
}
@Test
def testInvalidIf(): Unit = {
// test IF(BOOL, STRING, BOOLEAN)
- thrown.expect(classOf[ValidationException])
- thrown.expectMessage("Cannot apply 'IF' to arguments")
- testSqlApi("IF(f7 > 5, f0, f1)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("IF(f7 > 5, f0, f1)", "FAIL"))
+ .withMessageContaining("Cannot apply 'IF' to arguments")
}
@Test
def testInvalidToBase64(): Unit = {
// test TO_BASE64(INTEGER)
- thrown.expect(classOf[ValidationException])
- thrown.expectMessage("Cannot apply 'TO_BASE64' to arguments of type
'TO_BASE64(<INTEGER>)'")
- testSqlApi("TO_BASE64(11)", "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testSqlApi("TO_BASE64(11)", "FAIL"))
+ .withMessageContaining("Cannot apply 'TO_BASE64' to arguments of type
'TO_BASE64(<INTEGER>)'")
}
}
diff --git
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarOperatorsValidationTest.scala
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarOperatorsValidationTest.scala
index ee0ac6dc307..f319924c035 100644
---
a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarOperatorsValidationTest.scala
+++
b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/expressions/validation/ScalarOperatorsValidationTest.scala
@@ -20,42 +20,49 @@ package
org.apache.flink.table.planner.expressions.validation
import org.apache.flink.table.api._
import org.apache.flink.table.planner.expressions.utils.ScalarOperatorsTestBase
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class ScalarOperatorsValidationTest extends ScalarOperatorsTestBase {
- @Test(expected = classOf[ValidationException])
+ @Test
def testIfInvalidTypesScala(): Unit = {
- testTableApi(('f6 && true).?(5, "false"), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi(('f6 && true).?(5, "false"), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidStringComparison1(): Unit = {
- testTableApi("w" === 4, "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi("w" === 4, "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidStringComparison2(): Unit = {
- testTableApi("w" > 4.toExpr, "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi("w" > 4.toExpr, "FAIL"))
}
//
----------------------------------------------------------------------------------------------
// Sub-query functions
//
----------------------------------------------------------------------------------------------
- @Test(expected = classOf[ValidationException])
+ @Test
def testInMoreThanOneTypes(): Unit = {
- testTableApi('f2.in('f3, 'f4, 4), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f2.in('f3, 'f4, 4), "FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testInDifferentOperands(): Unit = {
- testTableApi('f1.in("Hi", "Hello world", "Comment#1"), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi('f1.in("Hi", "Hello world", "Comment#1"),
"FAIL"))
}
- @Test(expected = classOf[ValidationException])
+ @Test
def testBetweenWithDifferentOperandTypeScala(): Unit = {
- testTableApi(2.between(1, "a"), "FAIL")
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => testTableApi(2.between(1, "a"), "FAIL"))
}
@Test