public void Equals() { using (var url1 = NSUrl.FromString("http://www.xamarin.com/ios")) using (var url2 = NSUrl.FromString("http://www.xamarin.com")) using (var url3 = new NSUrl("http://www.xamarin.com")) { Assert.That(url1.GetHashCode(), Is.Not.EqualTo(url2.GetHashCode()), "GetHashCode 1-2"); // created differently but still identical Assert.That(url2.GetHashCode(), Is.EqualTo(url3.GetHashCode()), "GetHashCode 2-3"); // NSObject Assert.False(url1.Equals((NSObject)url2), "Equals(NSObject) 1-2"); Assert.True(url2.Equals((NSObject)url3), "Equals(NSObject) 2-3"); Assert.False(url1.Equals((NSObject)null), "Equals(NSObject) null"); // NSUrl / IEquatable<NSUrl> Assert.False(url1.Equals(url2), "Equals(NSUrl) 1-2"); Assert.True(url2.Equals(url3), "Equals(NSUrl) 2-3"); Assert.False(url1.Equals((NSUrl)null), "Equals(NSUrl) null"); } }