You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by mg...@apache.org on 2022/04/20 19:57:18 UTC

[avro] branch master updated: AVRO-3497 Simplify conditional expression (#1658)

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/master by this push:
     new 9d87a206b AVRO-3497 Simplify conditional expression (#1658)
9d87a206b is described below

commit 9d87a206b52de7dc9402be711a51b72cb3c11160
Author: Kyle Schoonover <ky...@minmaxcorp.com>
AuthorDate: Wed Apr 20 12:57:04 2022 -0700

    AVRO-3497 Simplify conditional expression (#1658)
    
    * AVRO-3497 Simplify conditional expression
    
    * Added null check back
    
    * Updated tests
---
 lang/csharp/src/apache/main/Generic/GenericEnum.cs | 12 ++--
 .../src/apache/test/Generic/GenericEnumTests.cs    | 72 ++++++++++++++++++++++
 2 files changed, 80 insertions(+), 4 deletions(-)

diff --git a/lang/csharp/src/apache/main/Generic/GenericEnum.cs b/lang/csharp/src/apache/main/Generic/GenericEnum.cs
index db58bb1ec..27bba94ce 100644
--- a/lang/csharp/src/apache/main/Generic/GenericEnum.cs
+++ b/lang/csharp/src/apache/main/Generic/GenericEnum.cs
@@ -70,10 +70,14 @@ namespace Avro.Generic
         /// <inheritdoc/>
         public override bool Equals(object obj)
         {
-            if (obj == this) return true;
-            return (obj != null && obj is GenericEnum)
-                ? Value.Equals((obj as GenericEnum).Value, System.StringComparison.Ordinal)
-                : false;
+            if (obj == this)
+            {
+                return true;
+            }
+
+            return obj != null
+                && obj.GetType() == typeof(GenericEnum)
+                && Value.Equals(((GenericEnum)obj).Value, System.StringComparison.Ordinal);
         }
 
         /// <inheritdoc/>
diff --git a/lang/csharp/src/apache/test/Generic/GenericEnumTests.cs b/lang/csharp/src/apache/test/Generic/GenericEnumTests.cs
new file mode 100644
index 000000000..aba0038ea
--- /dev/null
+++ b/lang/csharp/src/apache/test/Generic/GenericEnumTests.cs
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Avro.Generic;
+using NUnit.Framework;
+
+namespace Avro.test.Generic
+{
+    [TestFixture]
+    public class GenericEnumTests
+    {
+        private const string baseSchema = "{\"type\": \"enum\", \"name\": \"Test\", \"symbols\": " +
+            "[\"Unknown\", \"A\", \"B\"], \"default\": \"Unknown\" }";
+
+        [Test]
+        public void TestEquals()
+        {
+            GenericEnum genericEnum = GetBaseGenericEnum();
+            GenericEnum genericEnum2 = GetBaseGenericEnum();
+
+            Assert.IsTrue(genericEnum.Equals(genericEnum2));
+        }
+
+        [Test]
+        public void TestEqualsNotEqual()
+        {
+            GenericEnum genericEnum = GetBaseGenericEnum();
+            GenericEnum genericEnum2 = new GenericEnum(Schema.Parse(baseSchema) as EnumSchema, "B");
+
+            Assert.IsFalse(genericEnum.Equals(genericEnum2));
+        }
+
+        [Test]
+        public void TestEqualsObject()
+        {
+            GenericEnum genericEnum = GetBaseGenericEnum();
+            object genericEnum2 = genericEnum;
+
+            Assert.IsTrue(genericEnum.Equals(genericEnum2));
+        }
+
+        [Test]
+        public void TestEqualsObjectNullObject()
+        {
+            GenericEnum genericEnum = GetBaseGenericEnum();
+
+            Assert.IsFalse(genericEnum.Equals(null));
+        }
+
+        private GenericEnum GetBaseGenericEnum()
+        {
+            GenericEnum genericEnum = new GenericEnum(Schema.Parse(baseSchema) as EnumSchema, "A");
+
+            return genericEnum;
+        }
+    }
+}