public void TestURLParamters()
        {
            CheckoutShoppingCartRequest request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "USD", 120);
            ParameterizedUrl            url     = request.AddParameterizedUrl("http://localhost/default.aspx?url1=test$&url2=false&url3=@@Hello^World");

            url = request.AddParameterizedUrl("http://crazyurl.com:8888/crazy dir/default.aspx?url1=test$&url2=false&url3=@@Hello^World", true);

            //Create a second Param
            url = request.AddParameterizedUrl("http://localhost/order.aspx", true);

            ParameterizedUrl theUrl = new ParameterizedUrl("http://localhost/purl.aspx");

            request.AddParameterizedUrl(theUrl);

            url.AddParameter("orderid", UrlParameterType.OrderID);
            url.AddParameter("ordertotal", UrlParameterType.OrderTotal);

            try {
                url.AddParameter(string.Empty, UrlParameterType.BillingCity);
                Assert.Fail("Empty parameters names are not allowed.");
            }
            catch {
            }

            try {
                url.AddParameter("Test", UrlParameterType.Unknown);
                Assert.Fail("Unknown Parameter type is not allowed.");
            }
            catch {
            }

            //needed for 100% coverage
            ParameterizedUrls testUrls = new ParameterizedUrls();

            testUrls.AddUrl("http://localhost/test.aspx");
            testUrls.AddUrl(new ParameterizedUrl("http://localhost/new.aspx"));

            //Now get the XML
            byte[] cart = request.GetXml();

            XmlDocument         doc = new XmlDocument();
            XmlNamespaceManager ns  = new XmlNamespaceManager(doc.NameTable);

            ns.AddNamespace("d", "http://checkout.google.com/schema/2");
            ns.AddNamespace(string.Empty, "http://checkout.google.com/schema/2");

            using (MemoryStream ms = new MemoryStream(cart)) {
                doc.Load(ms);
            }

            XmlNodeList nodeList = doc.SelectNodes("/d:checkout-shopping-cart/d:checkout-flow-support/d:merchant-checkout-flow-support/d:parameterized-urls/d:parameterized-url/d:parameters/d:url-parameter", ns);

            Assert.AreEqual(2, nodeList.Count);

            int index = 0;

            foreach (XmlElement node in nodeList)
            {
                string name = node.GetAttribute("name");
                string type = node.GetAttribute("type");
                if (index == 0)
                {
                    Assert.AreEqual("orderid", name);
                    Assert.AreEqual("order-id", type);
                }
                else
                {
                    Assert.AreEqual("ordertotal", name);
                    Assert.AreEqual("order-total", type);
                }
                index++;
            }
        }