diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/ApiVersionsBase.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/ApiVersionsBase.cs
index d542b5b532a0..1682e5e1e602 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/ApiVersionsBase.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/ApiVersionsBase.cs
@@ -30,8 +30,8 @@ protected ApiVersionsBase(string value)
///
public static bool operator <(ApiVersionsBase left, ApiVersionsBase right)
{
- if (left is null)
- return true;
+ if (ReferenceEquals(null, left))
+ return !ReferenceEquals(null, right);
return left.CompareTo(right) == -1;
}
@@ -44,7 +44,7 @@ protected ApiVersionsBase(string value)
///
public static bool operator >(ApiVersionsBase left, ApiVersionsBase right)
{
- if (left is null)
+ if (ReferenceEquals(null, left))
return false;
return left.CompareTo(right) == 1;
@@ -57,6 +57,10 @@ protected ApiVersionsBase(string value)
/// API version value.
public static implicit operator string(ApiVersionsBase version)
{
+ if (ReferenceEquals(null, version))
+ {
+ return null;
+ }
return version._value;
}
@@ -109,7 +113,7 @@ public static implicit operator string(ApiVersionsBase version)
/// Comparison result in integer. 1 for greater than, 0 for equals to, and -1 for less than.
public int CompareTo(string other)
{
- if (other == null)
+ if (other is null)
{
return 1;
}
@@ -180,14 +184,9 @@ public override string ToString()
public override bool Equals(object obj)
{
if (obj is ApiVersionsBase)
- {
return Equals(obj as ApiVersionsBase);
- }
-
if (obj is string)
- {
return Equals(obj as string);
- }
return false;
}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/ApiVersionsBaseTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/ApiVersionsBaseTests.cs
index 827ca1a28e02..677c5f3e71a7 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/ApiVersionsBaseTests.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/ApiVersionsBaseTests.cs
@@ -173,6 +173,8 @@ private FakeResourceApiVersions ConvertFromString(string version)
return FakeResourceApiVersions.V2019_12_01_preview_1;
case "2019-12-01-foobar":
return FakeResourceApiVersions.V2019_12_01_foobar;
+ case null:
+ return null;
default:
throw new ArgumentException($"Version ({version}) was not valid");
}
@@ -212,5 +214,43 @@ public void GetHashCodeTest()
FakeResourceApiVersions version = FakeResourceApiVersions.Default;
Assert.AreEqual(version.ToString().GetHashCode(), version.GetHashCode());
}
+
+ [TestCase("2019-12-01", null)]
+ [TestCase("2020-06-01", "2019-12-01")]
+ public void TestGreaterThanTrue(string leftString, string rightString)
+ {
+ FakeResourceApiVersions left = ConvertFromString(leftString);
+ FakeResourceApiVersions right = ConvertFromString(rightString);
+ Assert.IsTrue(left > right);
+ }
+
+ [TestCase(null, "2019-12-01")]
+ [TestCase("2019-12-01", "2020-06-01")]
+ [TestCase(null, null)]
+ public void TestGreaterThanFalse(string leftString, string rightString)
+ {
+ FakeResourceApiVersions left = ConvertFromString(leftString);
+ FakeResourceApiVersions right = ConvertFromString(rightString);
+ Assert.IsFalse(left > right);
+ }
+
+ [TestCase(null, "2019-12-01")]
+ [TestCase("2019-12-01-foobar", "2019-12-01-preview-1")]
+ public void TestLessThanTrue(string leftString, string rightString)
+ {
+ FakeResourceApiVersions left = ConvertFromString(leftString);
+ FakeResourceApiVersions right = ConvertFromString(rightString);
+ Assert.IsTrue(left < right);
+ }
+
+ [TestCase("2019-12-01", null)]
+ [TestCase("2020-06-01", "2019-12-01-foobar")]
+ [TestCase(null, null)]
+ public void TestLessThanFalse(string leftString, string rightString)
+ {
+ FakeResourceApiVersions left = ConvertFromString(leftString);
+ FakeResourceApiVersions right = ConvertFromString(rightString);
+ Assert.IsFalse(left < right);
+ }
}
}