Browse Source

2008-09-07 Atsushi Enomoto <[email protected]>

	* UriTemplate.cs : implement IsEquivalentTo().
	* UriTemplateEquivalenceComparer.cs : implement.

	* UriTemplateEquivalenceComparerTest.cs : new test.

	* System.ServiceModel.Web_test.dll.sources :
	  added UriTemplateEquivalenceComparerTest.cs.


svn path=/trunk/mcs/; revision=141409
Atsushi Eno 16 years ago
parent
commit
d8cd2bea1a

+ 5 - 0
mcs/class/System.ServiceModel.Web/ChangeLog

@@ -1,3 +1,8 @@
+2009-09-07  Atsushi Enomoto  <[email protected]>
+
+	* System.ServiceModel.Web_test.dll.sources :
+	  added UriTemplateEquivalenceComparerTest.cs.
+
 2009-09-02  Atsushi Enomoto  <[email protected]>
 
 	* Makefile : use System.Core.

+ 1 - 0
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources

@@ -27,3 +27,4 @@ System.ServiceModel.Web/WebOperationContextTest.cs
 System.ServiceModel.Web/WebServiceHostTest.cs
 System.ServiceModel/WebHttpBindingTest.cs
 System/UriTemplateTest.cs
+System/UriTemplateEquivalenceComparerTest.cs

+ 5 - 0
mcs/class/System.ServiceModel.Web/System/ChangeLog

@@ -1,3 +1,8 @@
+2008-09-07  Atsushi Enomoto  <[email protected]>
+
+	* UriTemplate.cs : implement IsEquivalentTo().
+	* UriTemplateEquivalenceComparer.cs : implement.
+
 2008-09-07  Atsushi Enomoto  <[email protected]>
 
 	* UriTemplate.cs : add BindByName() overloads with Dictionary.

+ 1 - 2
mcs/class/System.ServiceModel.Web/System/UriTemplate.cs

@@ -181,12 +181,11 @@ namespace System
 
 		// Compare
 
-		[MonoTODO]
 		public bool IsEquivalentTo (UriTemplate other)
 		{
 			if (other == null)
 				throw new ArgumentNullException ("other");
-			return new UriTemplateEquivalenceComparer ().Equals (this, other);
+			return this.template == other.template;
 		}
 
 		// Match

+ 5 - 4
mcs/class/System.ServiceModel.Web/System/UriTemplateEquivalenceComparer.cs

@@ -36,16 +36,17 @@ namespace System
 		{
 		}
 
-		[MonoTODO]
 		public bool Equals (UriTemplate x, UriTemplate y)
 		{
-			throw new NotImplementedException ();
+			if (x == null)
+				return y == null;
+			return y != null && x.IsEquivalentTo (y);
 		}
 
-		[MonoTODO]
 		public int GetHashCode (UriTemplate obj)
 		{
-			throw new NotImplementedException ();
+			// gets string's hash code
+			return obj.ToString ().GetHashCode ();
 		}
 	}
 }

+ 4 - 0
mcs/class/System.ServiceModel.Web/Test/System/ChangeLog

@@ -1,3 +1,7 @@
+2009-09-07  Atsushi Enomoto  <[email protected]>
+
+	* UriTemplateEquivalenceComparerTest.cs : new test.
+
 2009-09-07  Atsushi Enomoto  <[email protected]>
 
 	* UriTemplateTest.cs :

+ 57 - 0
mcs/class/System.ServiceModel.Web/Test/System/UriTemplateEquivalenceComparerTest.cs

@@ -0,0 +1,57 @@
+//
+// UriTemplateEquivalenceComparerTest.cs
+//
+// Author:
+//	Atsushi Enomoto  <[email protected]>
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using NUnit.Framework;
+
+namespace MonoTests.System
+{
+	[TestFixture]
+	public class UriTemplateEquivalenceComparerTest
+	{
+		[Test]
+		public void Compare ()
+		{
+			var t1 = new UriTemplate ("urn:foo");
+			var t2 = new UriTemplate ("urn:bar");
+			var t3 = new UriTemplate ("urn:foo", true);
+			var dic = new Dictionary<string,string> ();
+			dic.Add ("foo", "v1");
+			var t4 = new UriTemplate ("urn:foo", dic);
+			var c = new UriTemplateEquivalenceComparer ();
+			Assert.IsFalse (c.Equals (t1, t2), "#1");
+			Assert.IsTrue (c.Equals (t1, t3), "#2");
+			Assert.IsTrue (c.Equals (t1, t4), "#3");
+			Assert.IsTrue (c.Equals (null, null), "#4");
+			Assert.IsFalse (c.Equals (null, t1), "#5");
+			Assert.IsFalse (c.Equals (t1, null), "#6");
+		}
+	}
+}