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


##########
flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestUtils.java:
##########
@@ -605,6 +614,80 @@ public void eval(
         }
     }
 
+    /** Testing function. */
+    public static class ListStateFunction extends TestProcessTableFunctionBase 
{
+        public void eval(
+                Context ctx,
+                @StateHint ListView<String> s,
+                @ArgumentHint({TABLE_AS_SET, OPTIONAL_PARTITION_BY}) Row r)
+                throws Exception {
+            collectObjects(s.getList(), s.getClass().getSimpleName(), r);
+
+            // get
+            int count = s.getList().size();
+
+            // create
+            s.add(String.valueOf(count));
+
+            // null behavior
+            assertThatThrownBy(() -> s.add(null))
+                    .isInstanceOf(TableRuntimeException.class)
+                    .hasMessageContaining("List views don't support null 
values.");
+            assertThatThrownBy(() -> s.addAll(Arrays.asList("item0", null)))
+                    .isInstanceOf(TableRuntimeException.class)
+                    .hasMessageContaining("List views don't support null 
values.");
+
+            // clear
+            if (count == 2) {
+                ctx.clearState("s");
+            }
+        }
+    }
+
+    /** Testing function. */
+    public static class MapStateFunction extends TestProcessTableFunctionBase {
+        public void eval(
+                Context ctx,
+                @StateHint MapView<String, Integer> s,
+                @ArgumentHint({TABLE_AS_SET, OPTIONAL_PARTITION_BY}) Row r)
+                throws Exception {
+            final String viewToString =
+                    s.getMap().entrySet().stream()
+                            .map(Objects::toString)
+                            .sorted()
+                            .collect(Collectors.joining(", ", "{", "}"));
+            collectObjects(viewToString, s.getClass().getSimpleName(), r);
+
+            // get
+            final String name = r.getFieldAs("name");
+            int count = 1;
+            if (s.contains(name)) {
+                count = s.get(name);
+            }
+
+            // create
+            s.put("old" + name, count);
+            s.put(name, count + 1);
+
+            // null behavior
+            assertThatThrownBy(() -> s.put(null, 42))
+                    .isInstanceOf(TableRuntimeException.class)
+                    .hasMessageContaining("Map views don't support null 
keys.");
+            final Map<String, Integer> mapWithNull = new HashMap<>();
+            mapWithNull.put("key", 42);
+            mapWithNull.put(null, 42);
+            assertThatThrownBy(() -> s.putAll(mapWithNull))

Review Comment:
   nit: `Map.ofEntries`



-- 
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: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to