From d175a29bf2b771a6df3025b6c005775d4740346a Mon Sep 17 00:00:00 2001 From: Chen <19492223+chenqi0805@users.noreply.github.com> Date: Thu, 24 Feb 2022 17:02:38 -0600 Subject: [PATCH] MAINT: include null in equality operators Signed-off-by: Chen <19492223+chenqi0805@users.noreply.github.com> --- .../org/opensearch/dataprepper/expression/EqualOperator.java | 3 +++ .../opensearch/dataprepper/expression/NotEqualOperator.java | 3 +++ .../opensearch/dataprepper/expression/EqualOperatorTest.java | 3 +++ .../dataprepper/expression/NotEqualOperatorTest.java | 3 +++ 4 files changed, 12 insertions(+) diff --git a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/EqualOperator.java b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/EqualOperator.java index 330af2bfe5..1921526440 100644 --- a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/EqualOperator.java +++ b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/EqualOperator.java @@ -19,6 +19,9 @@ public Integer getSymbol() { @Override public Boolean eval(Object... args) { checkArgument(args.length == 2, "Operands length needs to be 2."); + if ((args[0] == null) || (args[1] == null)) { + return args[0] == null && args[1] == null; + } return args[0].equals(args[1]); } } diff --git a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/NotEqualOperator.java b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/NotEqualOperator.java index e7def68f0d..9ab8bef17a 100644 --- a/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/NotEqualOperator.java +++ b/data-prepper-expression/src/main/java/org/opensearch/dataprepper/expression/NotEqualOperator.java @@ -19,6 +19,9 @@ public Integer getSymbol() { @Override public Boolean eval(Object... args) { checkArgument(args.length == 2, "Operands length needs to be 2."); + if ((args[0] == null) || (args[1] == null)) { + return args[0] != null || args[1] != null; + } return !args[0].equals(args[1]); } } diff --git a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/EqualOperatorTest.java b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/EqualOperatorTest.java index e2a4d9dedf..789ffd78f3 100644 --- a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/EqualOperatorTest.java +++ b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/EqualOperatorTest.java @@ -28,6 +28,9 @@ void testEvalValidArgs() { final TestObject testObject3 = new TestObject("2"); assertThat(objectUnderTest.eval(testObject1, testObject2), is(true)); assertThat(objectUnderTest.eval(testObject1, testObject3), is(false)); + assertThat(objectUnderTest.eval(null, testObject1), is(false)); + assertThat(objectUnderTest.eval(testObject1, null), is(false)); + assertThat(objectUnderTest.eval(null, null), is(true)); } @Test diff --git a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/NotEqualOperatorTest.java b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/NotEqualOperatorTest.java index 8c29920237..58541c837e 100644 --- a/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/NotEqualOperatorTest.java +++ b/data-prepper-expression/src/test/java/org/opensearch/dataprepper/expression/NotEqualOperatorTest.java @@ -28,6 +28,9 @@ void testEvalValidArgs() { final TestObject testObject3 = new TestObject("2"); assertThat(objectUnderTest.eval(testObject1, testObject2), is(false)); assertThat(objectUnderTest.eval(testObject1, testObject3), is(true)); + assertThat(objectUnderTest.eval(null, testObject1), is(true)); + assertThat(objectUnderTest.eval(testObject1, null), is(true)); + assertThat(objectUnderTest.eval(null, null), is(false)); } @Test