public void Validate(IControllerDispatcher dispatcher)
        {
            var ctrlrs = dispatcher.GetControllers(testUrl);
            Assert.AreEqual(testControllers.Length, ctrlrs.Length, "Controller queues lengths are different.");
            int i=0;
            foreach (var controllerInfo in ctrlrs)
            {
                Assert.AreEqual(controllerInfo.BindPoint.Controller.ControllerTypeName, testControllers[i],"Controller names are different at position: {0}",i);
                i++;
            }

            //TODO: Check whether right controllers are returned.
        }
        public void Validate(IControllerDispatcher dispatcher, int urlNumber)
        {
			Func<String, ControllerInvocationInfo, String> sumStr = (oldStr, invInfo) => oldStr += "+" + invInfo.BindPoint.Controller.ControllerTypeName;

            var ctrlrs = dispatcher.GetControllers(testUrl);

            if (!rootGroup.HasDuplicate)
                Assert.AreEqual(rootGroup.GetCount(), ctrlrs.Count, "Controller queues lengths are different. URL:{0}; Return Controllers:{1}, URL Number: {2} ", testUrl, ctrlrs.Aggregate(String.Empty, sumStr), urlNumber);

			int i = 0;
			foreach (var controllerInfo in ctrlrs)
			{
				Assert.IsTrue(rootGroup.ValidateNext(controllerInfo.BindPoint.Controller.ControllerTypeName), "Controller names are different at position: {0}; Controllers:{1}; URL Number: {2}", i,ctrlrs.Aggregate(String.Empty,sumStr), urlNumber);
				i++;
			}


		}