Github user greghogan commented on a diff in the pull request:
https://github.com/apache/flink/pull/4169#discussion_r126374745
--- Diff:
flink-java/src/test/java/org/apache/flink/api/java/utils/ParameterToolTest.java
---
@@ -154,4 +149,149 @@ public void testFromGenericOptionsParser() throws
IOException {
ParameterTool parameter =
ParameterTool.fromGenericOptionsParser(new String[]{"-D", "input=myInput",
"-DexpectedCount=15"});
validate(parameter);
}
+
+ @Test
+ public void testUnrequestedBoolean() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-boolean", "true"});
+ Assert.assertEquals(Sets.newHashSet("boolean"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertTrue(parameter.getBoolean("boolean"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertTrue(parameter.getBoolean("boolean"));
+ }
+
+ @Test
+ public void testUnrequestedByte() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-byte", "1"});
+ Assert.assertEquals(Sets.newHashSet("byte"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(1, parameter.getByte("byte"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(1, parameter.getByte("byte"));
+ }
+
+ @Test
+ public void testUnrequestedShort() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-short", "2"});
+ Assert.assertEquals(Sets.newHashSet("short"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(2, parameter.getShort("short"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(2, parameter.getShort("short"));
+ }
+
+ @Test
+ public void testUnrequestedInt() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-int", "4"});
+ Assert.assertEquals(Sets.newHashSet("int"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(4, parameter.getByte("int"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(4, parameter.getByte("int"));
+ }
+
+ @Test
+ public void testUnrequestedLong() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-long", "8"});
+ Assert.assertEquals(Sets.newHashSet("long"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(8, parameter.getByte("long"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(8, parameter.getByte("long"));
+ }
+
+ @Test
+ public void testUnrequestedFloat() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-float", "4"});
+ Assert.assertEquals(Sets.newHashSet("float"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(4.0, parameter.getFloat("float"), 0.00001);
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(4.0, parameter.getFloat("float"), 0.00001);
+ }
+
+ @Test
+ public void testUnrequestedDouble() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-double", "8"});
+ Assert.assertEquals(Sets.newHashSet("double"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals(8.0, parameter.getDouble("double"),
0.00001);
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals(8.0, parameter.getDouble("double"),
0.00001);
+ }
+
+ @Test
+ public void testUnrequestedString() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-string", "â"});
+ Assert.assertEquals(Sets.newHashSet("string"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals("â", parameter.get("string"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals("â", parameter.get("string"));
+ }
+
+ @Test
+ public void testUnrequestedHas() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-boolean"});
+ Assert.assertEquals(Sets.newHashSet("boolean"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertTrue(parameter.has("boolean"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertTrue(parameter.has("boolean"));
+ }
+
+ @Test
+ public void testUnrequestedRequired() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{"-required", "â"});
+ Assert.assertEquals(Sets.newHashSet("required"),
parameter.getUnrequestedParameters());
+
+ // test parameter access
+ Assert.assertEquals("â", parameter.getRequired("required"));
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ // test repeated access
+ Assert.assertEquals("â", parameter.getRequired("required"));
+ }
+
+ @Test
+ public void testUnrequestedUnknown() {
+ ParameterTool parameter = ParameterTool.fromArgs(new
String[]{});
+ Assert.assertEquals(Collections.emptySet(),
parameter.getUnrequestedParameters());
+
+ Assert.assertTrue(parameter.getBoolean("boolean", true));
+ Assert.assertEquals(0, parameter.getByte("byte", (byte) 0));
+ Assert.assertEquals(0, parameter.getShort("short", (short) 0));
+ Assert.assertEquals(0, parameter.getInt("int", 0));
+ Assert.assertEquals(0, parameter.getLong("long", 0));
+ Assert.assertEquals(0, parameter.getFloat("float", 0), 0.00001);
+ Assert.assertEquals(0, parameter.getDouble("double", 0),
0.00001);
+ Assert.assertEquals("0", parameter.get("string", "0"));
+ }
--- End diff --
I've added tests with multiple existing parameters, accessors with default
values, and testing after the parse exception as you have given.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---