snuyanzin commented on code in PR #29023:
URL: https://github.com/apache/flink/pull/29023#discussion_r3863269949


##########
flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/data/BinaryStringDataTest.java:
##########
@@ -130,637 +115,766 @@ private BinaryStringData fromString(String str) {
         }
     }
 
-    private void checkBasic(String str, int len) {
-        BinaryStringData s1 = fromString(str);
+    /** Cases for the string-to-decimal conversion, shared by the string and 
binary-row tests. */
+    private static final class DecimalCase {
+        private final String str;
+        private final int precision;
+        private final int scale;
+
+        private DecimalCase(String str, int precision, int scale) {
+            this.str = str;
+            this.precision = precision;
+            this.scale = scale;
+        }
+    }
+
+    private static final List<DecimalCase> DECIMAL_CASES =
+            List.of(
+                    new DecimalCase("12.345", 5, 3),
+                    new DecimalCase("-12.345", 5, 3),
+                    new DecimalCase("+12345", 5, 0),
+                    new DecimalCase("-12345", 5, 0),
+                    new DecimalCase("12345.", 5, 0),
+                    new DecimalCase("-12345.", 5, 0),
+                    new DecimalCase(".12345", 5, 5),
+                    new DecimalCase("-.12345", 5, 5),
+                    new DecimalCase("+12.345E3", 5, 0),
+                    new DecimalCase("-12.345e3", 5, 0),
+                    new DecimalCase("12.345e-3", 6, 6),
+                    new DecimalCase("-12.345E-3", 6, 6),
+                    new DecimalCase("12345E3", 8, 0),
+                    new DecimalCase("-12345e3", 8, 0),
+                    new DecimalCase("12345e-3", 5, 3),
+                    new DecimalCase("-12345E-3", 5, 3),
+                    new DecimalCase("+.12345E3", 5, 2),
+                    new DecimalCase("-.12345e3", 5, 2),
+                    new DecimalCase(".12345e-3", 8, 8),
+                    new DecimalCase("-.12345E-3", 8, 8),
+                    new DecimalCase("1234512345.1234", 18, 8),
+                    new DecimalCase("-1234512345.1234", 18, 8),
+                    new DecimalCase("1234512345.1234", 12, 2),
+                    new DecimalCase("-1234512345.1234", 12, 2),
+                    new DecimalCase("1234512345.1299", 12, 2),
+                    new DecimalCase("-1234512345.1299", 12, 2),
+                    new DecimalCase("999999999999999999", 18, 0),
+                    new DecimalCase("1234512345.1234512345", 20, 10),
+                    new DecimalCase("-1234512345.1234512345", 20, 10),
+                    new DecimalCase("1234512345.1234512345", 15, 5),
+                    new DecimalCase("-1234512345.1234512345", 15, 5),
+                    new DecimalCase("12345123451234512345E-10", 20, 10),
+                    new DecimalCase("-12345123451234512345E-10", 20, 10),
+                    new DecimalCase("12345123451234512345E-10", 15, 5),
+                    new DecimalCase("-12345123451234512345E-10", 15, 5),
+                    new DecimalCase("999999999999999999999", 21, 0),
+                    new DecimalCase("-999999999999999999999", 21, 0),
+                    new 
DecimalCase("0.00000000000000000000123456789123456789", 38, 38),
+                    new 
DecimalCase("-0.00000000000000000000123456789123456789", 38, 38),
+                    new 
DecimalCase("0.00000000000000000000123456789123456789", 29, 29),
+                    new 
DecimalCase("-0.00000000000000000000123456789123456789", 29, 29),
+                    new DecimalCase("123456789123E-27", 18, 18),
+                    new DecimalCase("-123456789123E-27", 18, 18),
+                    new DecimalCase("123456789999E-27", 18, 18),
+                    new DecimalCase("-123456789999E-27", 18, 18),
+                    new DecimalCase("123456789123456789E-36", 18, 18),
+                    new DecimalCase("-123456789123456789E-36", 18, 18),
+                    new DecimalCase("123456789999999999E-36", 18, 18),
+                    new DecimalCase("-123456789999999999E-36", 18, 18));
+
+    private static Stream<Arguments> decimalCases() {
+        return Arrays.stream(Mode.values())
+                .flatMap(
+                        mode ->
+                                DECIMAL_CASES.stream()
+                                        .map(c -> arguments(mode, c.str, 
c.precision, c.scale)));
+    }
+
+    private static void checkBasic(Mode mode, String str, int len) {
+        BinaryStringData s1 = fromString(mode, str);
         BinaryStringData s2 = fromBytes(str.getBytes(StandardCharsets.UTF_8));
-        assertThat(len).isEqualTo(s1.numChars());
-        assertThat(len).isEqualTo(s2.numChars());
+        assertThat(s1.numChars()).isEqualTo(len);
+        assertThat(s2.numChars()).isEqualTo(len);
 
-        assertThat(str).isEqualTo(s1.toString());
-        assertThat(str).isEqualTo(s2.toString());
+        assertThat(s1.toString()).isEqualTo(str);
+        assertThat(s2.toString()).isEqualTo(str);

Review Comment:
   didn't catch this earlier
   however it looks like all such things with this pattern (~20 occurrences)
   could be replaced in a way like
   ```java
           assertThat(s1).hasToString(str);
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to