No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

119 líneas
4.1KB

  1. Sub Test_Router_MatchesExactRoot()
  2. Dim router
  3. Dim result
  4. Set router = New Router
  5. router.AddRoute "/", "Home"
  6. Set result = router.Match("/")
  7. AssertNotNothing result, "Router should match the exact '/' route"
  8. AssertEquals "Home", result.Item("ControllerName"), "Matched controller name for '/'"
  9. End Sub
  10. Sub Test_Router_CapturesNamedParam()
  11. Dim router
  12. Dim result
  13. Set router = New Router
  14. router.AddRoute "/greet/{name}", "Greet"
  15. Set result = router.Match("/greet/Ada")
  16. AssertNotNothing result, "Router should match a pattern route"
  17. AssertEquals "Greet", result.Item("ControllerName"), "Matched controller name for pattern route"
  18. AssertTrue result.Item("Params").Exists("name"), "Captured params should contain 'name'"
  19. AssertEquals "Ada", result.Item("Params").Item("name"), "Captured 'name' param value"
  20. End Sub
  21. Sub Test_Router_ReturnsNothingWhenNoRouteMatches()
  22. Dim router
  23. Dim result
  24. Set router = New Router
  25. router.AddRoute "/", "Home"
  26. router.AddRoute "/greet/{name}", "Greet"
  27. Set result = router.Match("/does-not-exist")
  28. AssertIsNothing result, "Router should return Nothing when no pattern matches"
  29. End Sub
  30. Sub Test_Router_SegmentCountMustMatch()
  31. Dim router
  32. Dim result
  33. Set router = New Router
  34. router.AddRoute "/greet/{name}", "Greet"
  35. Set result = router.Match("/greet/Ada/extra")
  36. AssertIsNothing result, "An extra path segment should not match a shorter pattern"
  37. End Sub
  38. Sub Test_Router_LiteralSegmentsMatchCaseInsensitively()
  39. Dim router
  40. Dim result
  41. Set router = New Router
  42. router.AddRoute "/greet/{name}", "Greet"
  43. Set result = router.Match("/GREET/Ada")
  44. AssertNotNothing result, "Literal segments should match regardless of case"
  45. AssertEquals "Ada", result.Item("Params").Item("name"), "Param value should preserve original case"
  46. End Sub
  47. Sub Test_Router_FirstRegisteredMatchWins()
  48. Dim router
  49. Dim result
  50. Set router = New Router
  51. router.AddRoute "/greet/world", "SpecificGreet"
  52. router.AddRoute "/greet/{name}", "Greet"
  53. Set result = router.Match("/greet/world")
  54. AssertEquals "SpecificGreet", result.Item("ControllerName"), "More specific route registered first should win"
  55. End Sub
  56. Sub Test_Router_CapturesMultipleNamedParams()
  57. Dim router
  58. Dim result
  59. Set router = New Router
  60. router.AddRoute "/greet/{name}/{id}", "Greet"
  61. Set result = router.Match("/greet/Ada/42")
  62. AssertNotNothing result, "Router should match a pattern with two {param} segments"
  63. AssertEquals "Ada", result.Item("Params").Item("name"), "First captured param value"
  64. AssertEquals "42", result.Item("Params").Item("id"), "Second captured param value"
  65. End Sub
  66. Sub Test_Router_SameControllerDifferentSegmentCountsCoexist()
  67. Dim router
  68. Dim shortResult
  69. Dim longResult
  70. Set router = New Router
  71. router.AddRoute "/greet/{name}", "Greet"
  72. router.AddRoute "/greet/{name}/{id}", "Greet"
  73. Set shortResult = router.Match("/greet/Ada")
  74. Set longResult = router.Match("/greet/Ada/42")
  75. AssertFalse shortResult.Item("Params").Exists("id"), "The one-segment route should not capture an 'id'"
  76. AssertTrue longResult.Item("Params").Exists("id"), "The two-segment route should capture an 'id'"
  77. AssertEquals "42", longResult.Item("Params").Item("id"), "The two-segment route's 'id' value"
  78. End Sub
  79. RunTest "Router matches the exact root route", "Test_Router_MatchesExactRoot"
  80. RunTest "Router captures a named {param} segment", "Test_Router_CapturesNamedParam"
  81. RunTest "Router returns Nothing when nothing matches", "Test_Router_ReturnsNothingWhenNoRouteMatches"
  82. RunTest "Router requires matching segment counts", "Test_Router_SegmentCountMustMatch"
  83. RunTest "Router matches literal segments case-insensitively", "Test_Router_LiteralSegmentsMatchCaseInsensitively"
  84. RunTest "Router: first registered match wins", "Test_Router_FirstRegisteredMatchWins"
  85. RunTest "Router captures multiple {param} segments in one pattern", "Test_Router_CapturesMultipleNamedParams"
  86. RunTest "Router: routes with different segment counts to the same controller coexist", "Test_Router_SameControllerDifferentSegmentCountsCoexist"

Powered by TurnKey Linux.