public void resolve_entre_regras_ctx_e_assemblyName_e_uris_ok_ficam_handlers_esperados_iguais_ao_retornados_e_ctx_ola_assemblyName_adeus() { var c = new Contracts(); IHandler hroot = new RootHandler(); IHandler hcontext = new ContextNameHandler(); IHandler hnamespace = new NamespacePrefixContextHandler(); IHandler hassembly = new AssemblyNameContextHandler(); c.AddRule("/", hroot); c.AddRule("/ ", hnamespace); // exemplo de um terceiro handler, apenas para efeitos de testes c.AddRule("/{ctx}", hcontext); // colocar o esperado em ultimo na lista de regrashandlers IHandler hres, hres2; var d = c.ResolveUri("/ola", out hres); Assert.NotNull(hres); Assert.AreEqual(hcontext, hres); Assert.AreEqual("ctx", d.First().Key); Assert.AreEqual("ola", d.First().Value); c.AddRule("/{ctx}/as/{assemblyName}", hassembly); // colocar o esperado em ultimo na lista de regrashandlers var d2 = c.ResolveUri("/ola/as/adeus", out hres2); Assert.NotNull(hres2); Assert.AreEqual(hassembly, hres2); Assert.AreEqual("ctx", d2.First().Key); Assert.AreEqual("ola", d2.First().Value); Assert.AreEqual("assemblyName", d2.Last().Key); Assert.AreEqual("adeus", d2.Last().Value); }
public void resolve_entre_regra_ctx_e_uri_ola_ambos_ok_fica_handler_esperado_igual_ao_retornado() { var c = new Contracts(); IHandler h = new NamespacePrefixContextHandler(); c.AddRule("/{ctx}", h); IHandler hres; var d = c.ResolveUri("/ola", out hres); Assert.AreEqual(h, hres); }
public void resolve_entre_regra_ctx_e_uri_ola_com_subdir_a_ambos_com_barra_antes_fica_handler_esperado_diferente_do_retornado_nulo() { var c = new Contracts(); IHandler h = new NamespacePrefixContextHandler(); c.AddRule("/{ctx}", h); IHandler hres; var d = c.ResolveUri("/ola/a", out hres); Assert.Null(hres); Assert.AreNotEqual(h, hres); }
//private Contracts contracts; #region 3 Construtores de Router - nao utilizados //public Router() //{ // this.contracts = new Contracts(); //} //public Router(Contracts contracts) //{ // this.contracts = contracts ?? new Contracts(); //} //public Router(Contracts contracts, List<string> listTemplates, List<IHandler> listHandlers) //{ // this.contracts = contracts ?? new Contracts(); // if (((listTemplates != null) && (listHandlers != null)) && (listTemplates.Count == listHandlers.Count)) // { // for (int index = 0; index < listTemplates.Count; index++) // { // this.contracts.AddRule(listTemplates[index], listHandlers[index]); // } // } //} #endregion #region 2 Metodos Publicos AddRule e AddRules - nao utilizados //public void AddRule(string s, IHandler h) //{ // contracts.AddRule(s,h); //} //public void AddRules(List<string> listTemplates, List<IHandler> listHandlers) //{ // if (((listTemplates != null) && (listHandlers != null)) && (listTemplates.Count == listHandlers.Count)) // { // for (int index = 0; index < listTemplates.Count; index++) // { // contracts.AddRule(listTemplates[index], listHandlers[index]); // } // } //} #endregion #region Metodo Publico MatchAndExecute //public HandlerAnswer MatchAndExecute(string uriPedido) static public HandlerAnswer MatchAndExecute(Contracts contracts, string uriPedido) { IHandler handlerToExecute; if(contracts == null) { //throw new HandlerException("Lista de Templates nula, não há template correspondente ao endereço indicado: " + uriPedido); return (new NullsHandler(uriPedido,false)).Handle(); } else { Dictionary<string, string> paramsVarsReturned = contracts.ResolveUri(uriPedido, out handlerToExecute); if (handlerToExecute == null) { //throw new HandlerException("Handler nulo, não há template correspondente ao endereço indicado: " + uriPedido); handlerToExecute = new NullsHandler(uriPedido,true); } return handlerToExecute.Handle(paramsVarsReturned); } }
//private Contracts contracts; #region 3 Construtores de Router - nao utilizados //public Router() //{ // this.contracts = new Contracts(); //} //public Router(Contracts contracts) //{ // this.contracts = contracts ?? new Contracts(); //} //public Router(Contracts contracts, List<string> listTemplates, List<IHandler> listHandlers) //{ // this.contracts = contracts ?? new Contracts(); // if (((listTemplates != null) && (listHandlers != null)) && (listTemplates.Count == listHandlers.Count)) // { // for (int index = 0; index < listTemplates.Count; index++) // { // this.contracts.AddRule(listTemplates[index], listHandlers[index]); // } // } //} #endregion #region 2 Metodos Publicos AddRule e AddRules - nao utilizados //public void AddRule(string s, IHandler h) //{ // contracts.AddRule(s,h); //} //public void AddRules(List<string> listTemplates, List<IHandler> listHandlers) //{ // if (((listTemplates != null) && (listHandlers != null)) && (listTemplates.Count == listHandlers.Count)) // { // for (int index = 0; index < listTemplates.Count; index++) // { // contracts.AddRule(listTemplates[index], listHandlers[index]); // } // } //} #endregion #region Metodo Publico MatchAndExecute //public HandlerAnswer MatchAndExecute(string uriPedido) static public HandlerAnswer MatchAndExecute(Contracts contracts, string uriPedido) { IHandler handlerToExecute; if (contracts == null) { //throw new HandlerException("Lista de Templates nula, não há template correspondente ao endereço indicado: " + uriPedido); return((new NullsHandler(uriPedido, false)).Handle()); } else { Dictionary <string, string> paramsVarsReturned = contracts.ResolveUri(uriPedido, out handlerToExecute); if (handlerToExecute == null) { //throw new HandlerException("Handler nulo, não há template correspondente ao endereço indicado: " + uriPedido); handlerToExecute = new NullsHandler(uriPedido, true); } return(handlerToExecute.Handle(paramsVarsReturned)); } }