Sub Test_Dispatcher_NoMatchDispatchesToNotFound() Dim app Dim dispatcher Dim controllerKey Dim controller Set app = New App Set dispatcher = New Dispatcher Response.Status = "200 OK" dispatcher.Dispatch app, Nothing, controllerKey, controller AssertEquals "NotFound", controllerKey, "A Nothing route match should dispatch to NotFound" AssertEquals "404 Not Found", Response.Status, "NotFoundController.Execute should have run and set a 404 status" End Sub Sub Test_Dispatcher_UnknownControllerNameFallsBackToNotFound() Dim app Dim dispatcher Dim controllerKey Dim controller Dim routeMatch Dim params Set app = New App Set dispatcher = New Dispatcher Set params = CreateObject("Scripting.Dictionary") Set routeMatch = CreateObject("Scripting.Dictionary") routeMatch.Add "ControllerName", "SomethingUnregistered" routeMatch.Add "Params", params Response.Status = "200 OK" dispatcher.Dispatch app, routeMatch, controllerKey, controller AssertEquals "NotFound", controllerKey, "An unrecognized controller key should fall back to NotFound" AssertEquals "404 Not Found", Response.Status, "The NotFound fallback should still run Execute" End Sub Sub Test_Dispatcher_DispatchesToHome() Dim app Dim dispatcher Dim controllerKey Dim controller Dim routeMatch Dim params Set app = New App Set dispatcher = New Dispatcher Set params = CreateObject("Scripting.Dictionary") Set routeMatch = CreateObject("Scripting.Dictionary") routeMatch.Add "ControllerName", "Home" routeMatch.Add "Params", params dispatcher.Dispatch app, routeMatch, controllerKey, controller AssertEquals "Home", controllerKey, "A Home route match should dispatch to Home" AssertEquals "None", controller.ServiceSummary, "The dispatched controller should be a working HomeController" End Sub Sub Test_Dispatcher_DispatchesToGreetWithParams() Dim app Dim dispatcher Dim controllerKey Dim controller Dim routeMatch Dim params Set app = New App Set dispatcher = New Dispatcher Set params = CreateObject("Scripting.Dictionary") params.Add "name", "Ada" Set routeMatch = CreateObject("Scripting.Dictionary") routeMatch.Add "ControllerName", "Greet" routeMatch.Add "Params", params dispatcher.Dispatch app, routeMatch, controllerKey, controller AssertEquals "Greet", controllerKey, "A Greet route match should dispatch to Greet" AssertEquals "Ada", controller.Name, "The dispatched GreetController should receive the captured 'name' param" End Sub RunTest "Dispatcher: no route match dispatches to NotFound", "Test_Dispatcher_NoMatchDispatchesToNotFound" RunTest "Dispatcher: unknown controller name falls back to NotFound", "Test_Dispatcher_UnknownControllerNameFallsBackToNotFound" RunTest "Dispatcher: dispatches to Home", "Test_Dispatcher_DispatchesToHome" RunTest "Dispatcher: dispatches to Greet with params", "Test_Dispatcher_DispatchesToGreetWithParams"