From 10f6ad0c6416ee7b84427b30a3068fec2005e6aa Mon Sep 17 00:00:00 2001 From: YalinLi0312 Date: Wed, 24 Mar 2021 16:18:02 -0700 Subject: [PATCH 1/3] Change the accessbility to virtual for Resource.Id --- .../Azure.ResourceManager.Core/src/Resources/Resource.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/Resource.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/Resource.cs index 86a35ac05cf7..a8638d1c689b 100644 --- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/Resource.cs +++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/Resource.cs @@ -14,7 +14,7 @@ public abstract class Resource : IEquatable, IEquatable, IComp /// /// Gets or sets the resource identifier. /// - public abstract ResourceIdentifier Id { get; protected set; } + public virtual ResourceIdentifier Id { get; protected set; } /// /// Gets the name. From 16a340d710e783d845d9e05d27c5bc57d56c5979 Mon Sep 17 00:00:00 2001 From: Jonathan Cardenas Date: Thu, 15 Apr 2021 19:18:32 -0700 Subject: [PATCH 2/3] Operators == and != overloads in ResourceIdentifier --- .../src/Resources/ResourceIdentifier.cs | 22 +++++++++++++++ .../tests/Unit/ResourceIdentifierTests.cs | 28 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentifier.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentifier.cs index 4c19a5cf59b0..ee3bf86c73f7 100644 --- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentifier.cs +++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentifier.cs @@ -446,5 +446,27 @@ public override int GetHashCode() /// /// The resource identifier. public static implicit operator string(ResourceIdentifier id) => id?.ToString(); + + /// + /// Operator overloading for '=='. + /// + /// Left ResourceIdentifier object to compare. + /// Right ResourceIdentifier object to compare. + /// + public static bool operator ==(ResourceIdentifier id1, ResourceIdentifier id2) + { + return ResourceIdentifier.Equals(id1,id2); + } + + /// + /// Operator overloading for '!='. + /// + /// Left ResourceIdentifier object to compare. + /// Right ResourceIdentifier object to compare. + /// + public static bool operator !=(ResourceIdentifier id1, ResourceIdentifier id2) + { + return !ResourceIdentifier.Equals(id1,id2); + } } } diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs index ab392e77bb3a..4775eebd5939 100644 --- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs +++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs @@ -637,5 +637,33 @@ public void TestAppendLocationChildResource(string resourceId, string childTypeN Assert.AreEqual(expected, resource.AppendChildResource(childTypeName, childResourceName).ToString()); } } + + [TestCase(TrackedResourceId, TrackedResourceId, true)] + [TestCase(ChildResourceId, ChildResourceId, true)] + [TestCase(null, null, true)] + [TestCase(TrackedResourceId, ChildResourceId, false)] + [TestCase(ChildResourceId, TrackedResourceId, false)] + [TestCase(TrackedResourceId, null, false)] + [TestCase(null, TrackedResourceId, false)] + public void EqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected) + { + ResourceIdentifier a = resourceProviderID1; + ResourceIdentifier b = resourceProviderID2; + Assert.AreEqual(expected, a == b); + } + + [TestCase(TrackedResourceId, TrackedResourceId, false)] + [TestCase(ChildResourceId, ChildResourceId, false)] + [TestCase(null, null, false)] + [TestCase(TrackedResourceId, ChildResourceId, true)] + [TestCase(ChildResourceId, TrackedResourceId, true)] + [TestCase(TrackedResourceId, null, true)] + [TestCase(null, TrackedResourceId, true)] + public void NotEqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected) + { + ResourceIdentifier a = resourceProviderID1; + ResourceIdentifier b = resourceProviderID2; + Assert.AreEqual(expected, a != b); + } } } From 1747ee37284d295ac39ca07dbfadfbf944921000 Mon Sep 17 00:00:00 2001 From: Jonathan Cardenas Date: Fri, 16 Apr 2021 13:12:28 -0700 Subject: [PATCH 3/3] Added EqualsToString Tests and TestCases --- .../tests/Unit/ResourceIdentifierTests.cs | 86 ++++++++++++++----- 1 file changed, 65 insertions(+), 21 deletions(-) diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs index 4775eebd5939..baf98dc8e3aa 100644 --- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs +++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/ResourceIdentifierTests.cs @@ -258,7 +258,7 @@ public void CheckHashCode(bool expected, string resourceId1, string resourceId2) [TestCase(ChildResourceId, TrackedResourceId, false)] [TestCase(TrackedResourceId, null, false)] [TestCase(null, TrackedResourceId, false)] - public void Equals(string resourceProviderID1, string resourceProviderID2, bool expected) + public void EqualsToResourceIdentifier(string resourceProviderID1, string resourceProviderID2, bool expected) { ResourceIdentifier a = resourceProviderID1; ResourceIdentifier b = resourceProviderID2; @@ -268,6 +268,22 @@ public void Equals(string resourceProviderID1, string resourceProviderID2, bool Assert.AreEqual(expected, ResourceIdentifier.Equals(a,b)); } + [TestCase(TrackedResourceId, TrackedResourceId, true)] + [TestCase(ChildResourceId, ChildResourceId, true)] + [TestCase(null, null, true)] + [TestCase(TrackedResourceId, ChildResourceId, false)] + [TestCase(ChildResourceId, TrackedResourceId, false)] + [TestCase(TrackedResourceId, null, false)] + [TestCase(null, TrackedResourceId, false)] + public void EqualsToString(string resourceProviderID1, string resourceProviderID2, bool expected) + { + ResourceIdentifier a = resourceProviderID1; + if (a != null) + Assert.AreEqual(expected, a.Equals(resourceProviderID2)); + + Assert.AreEqual(expected, ResourceIdentifier.Equals(a, resourceProviderID2)); + } + [Test] public void EqualsObj() { @@ -638,32 +654,60 @@ public void TestAppendLocationChildResource(string resourceId, string childTypeN } } - [TestCase(TrackedResourceId, TrackedResourceId, true)] - [TestCase(ChildResourceId, ChildResourceId, true)] - [TestCase(null, null, true)] - [TestCase(TrackedResourceId, ChildResourceId, false)] - [TestCase(ChildResourceId, TrackedResourceId, false)] - [TestCase(TrackedResourceId, null, false)] - [TestCase(null, TrackedResourceId, false)] - public void EqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected) + [TestCase(TrackedResourceId, TrackedResourceId, true, "object")] + [TestCase(ChildResourceId, ChildResourceId, true, "object")] + [TestCase(null, null, true, "object")] + [TestCase(TrackedResourceId, ChildResourceId, false, "object")] + [TestCase(ChildResourceId, TrackedResourceId, false, "object")] + [TestCase(TrackedResourceId, null, false, "object")] + [TestCase(null, TrackedResourceId, false, "object")] + [TestCase(TrackedResourceId, TrackedResourceId, true, "string")] + [TestCase(ChildResourceId, ChildResourceId, true, "string")] + [TestCase(null, null, true, "string")] + [TestCase(TrackedResourceId, ChildResourceId, false, "string")] + [TestCase(ChildResourceId, TrackedResourceId, false, "string")] + [TestCase(TrackedResourceId, null, false, "string")] + [TestCase(null, TrackedResourceId, false, "string")] + public void EqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected, string comparisonType) { ResourceIdentifier a = resourceProviderID1; - ResourceIdentifier b = resourceProviderID2; - Assert.AreEqual(expected, a == b); + if(comparisonType == "object") + { + ResourceIdentifier b = resourceProviderID2; + Assert.AreEqual(expected, a == b); + } + else + { + Assert.AreEqual(expected, a == resourceProviderID2); + } } - [TestCase(TrackedResourceId, TrackedResourceId, false)] - [TestCase(ChildResourceId, ChildResourceId, false)] - [TestCase(null, null, false)] - [TestCase(TrackedResourceId, ChildResourceId, true)] - [TestCase(ChildResourceId, TrackedResourceId, true)] - [TestCase(TrackedResourceId, null, true)] - [TestCase(null, TrackedResourceId, true)] - public void NotEqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected) + [TestCase(TrackedResourceId, TrackedResourceId, false, "object")] + [TestCase(ChildResourceId, ChildResourceId, false, "object")] + [TestCase(null, null, false, "object")] + [TestCase(TrackedResourceId, ChildResourceId, true, "object")] + [TestCase(ChildResourceId, TrackedResourceId, true, "object")] + [TestCase(TrackedResourceId, null, true, "object")] + [TestCase(null, TrackedResourceId, true, "object")] + [TestCase(TrackedResourceId, TrackedResourceId, false, "string")] + [TestCase(ChildResourceId, ChildResourceId, false, "string")] + [TestCase(null, null, false, "string")] + [TestCase(TrackedResourceId, ChildResourceId, true, "string")] + [TestCase(ChildResourceId, TrackedResourceId, true, "string")] + [TestCase(TrackedResourceId, null, true, "string")] + [TestCase(null, TrackedResourceId, true, "string")] + public void NotEqualsOperator(string resourceProviderID1, string resourceProviderID2, bool expected, string comparisonType) { ResourceIdentifier a = resourceProviderID1; - ResourceIdentifier b = resourceProviderID2; - Assert.AreEqual(expected, a != b); + if (comparisonType == "object") + { + ResourceIdentifier b = resourceProviderID2; + Assert.AreEqual(expected, a != b); + } + else + { + Assert.AreEqual(expected, a != resourceProviderID2); + } } } }