public void TestQueryTerms() { String testUrl = "tcp://*****:*****@127.0.0.1:4001/cuae"; URL url = new URL(testUrl); Assert.IsFalse(url.HasTerms()); testUrl = "tcp://*****:*****@127.0.0.1:4001/cuae?term1=500"; url = new URL(testUrl); Assert.IsTrue(url.HasTerms()); Assert.IsTrue(url.HasTerm("term1")); Assert.IsTrue(url.HasTerm("term1", "500")); Assert.IsTrue(url.HasTerm("term1", 500)); Assert.IsFalse(url.HasTerm("term1", "1000")); Assert.IsFalse(url.HasTerm("term1", 1000)); Assert.IsFalse(url.HasMultipleValues("term1")); Assert.AreEqual("500", url.GetTerm("term1")); Assert.AreEqual(500, url.GetIntegerTerm("term1")); Assert.AreEqual("500", url.GetTerm("term1", "x")); Assert.AreEqual(500, url.GetIntegerTerm("term1", 2)); Assert.IsFalse(url.HasTerm("term2")); Assert.IsFalse(url.HasTerm("term2", "500")); Assert.IsFalse(url.HasTerm("term2", 500)); Assert.IsNull(url.GetTerm("term2")); Assert.IsNull(url.GetIntegerTerm("term2")); Assert.AreEqual("x", url.GetTerm("term2", "x")); Assert.AreEqual(2, url.GetIntegerTerm("term2", 2)); // multiple values of the same term url.AddTerm("term1", 500.5); Assert.IsTrue(url.HasMultipleValues("term1")); Assert.IsTrue(url.HasTerm("term1")); Assert.IsTrue(url.HasTerm("term1", "500")); Assert.IsTrue(url.HasTerm("term1", 500)); Assert.IsTrue(url.HasTerm("term1", "500.5")); Assert.IsTrue(url.HasTerm("term1", 500.5)); try { url.GetTerm("term1"); Assert.Fail("Exception wasn't thrown..."); } catch (Exception) { // ignore exception } string[] t = url.GetTerms("term1"); Assert.AreEqual(2, t.Length); Assert.AreEqual("500", t[0]); Assert.AreEqual("500.5", t[1]); // add another term => multiple terms url.AddTerm("term2", "value"); Assert.IsFalse(url.HasMultipleValues("term2")); Assert.IsTrue(url.HasTerm("term2")); Assert.IsTrue(url.HasTerm("term2", "value")); Assert.AreEqual("value", url.GetTerm("term2")); t = url.GetTermNames(); Assert.AreEqual(2, t.Length); Assert.AreEqual("term1", t[0]); Assert.AreEqual("term2", t[1]); // Console.WriteLine( url.ToString() ); // remove term Assert.IsFalse(url.RemoveTerm("term3")); Assert.IsTrue(url.RemoveTerm("term2")); Assert.IsFalse(url.HasTerm("term2")); t = url.GetTermNames(); Assert.AreEqual(1, t.Length); Assert.AreEqual("term1", t[0]); // remove one value from a list of values for a term Assert.IsTrue(url.RemoveTerm("term1", "500.5")); Assert.IsFalse(url.HasMultipleValues("term1")); Assert.AreEqual("500", url.GetTerm("term1")); // clear terms url.ClearTerms(); Assert.IsFalse(url.HasTerms()); Assert.AreEqual(0, url.GetTermNames().Length); Assert.AreEqual("tcp://*****:*****@127.0.0.1:4001/cuae", url.ToString()); }