22
33import org .junit .jupiter .api .Test ;
44
5+ import java .util .Collections ;
6+ import java .util .HashMap ;
57import java .util .List ;
8+ import java .util .Map ;
69import java .util .function .Consumer ;
710
811import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -20,10 +23,52 @@ public void pathKeys() {
2023 pathKeys ("/" , keys -> assertEquals (0 , keys .size ()));
2124 pathKeys ("/foo/bar" , keys -> assertEquals (0 , keys .size ()));
2225 pathKeys ("/foo/*" , keys -> assertEquals (1 , keys .size ()));
26+ pathKeys ("/foo/*name" , keys -> assertEquals (1 , keys .size ()));
2327 pathKeys ("/foo/{x}" , keys -> assertEquals (1 , keys .size ()));
2428 }
2529
30+ @ Test
31+ public void reverseByPosition () {
32+ assertEquals ("/foo" , Router .reverse ("/{k}" , "foo" ));
33+ assertEquals ("/foo/bar" , Router .reverse ("/{k1}/{k2}" , "foo" , "bar" ));
34+ }
35+
36+ @ Test
37+ public void reverse () {
38+ assertEquals ("foo" , Router .reverse ("{foo}" , map ("foo" , "foo" )));
39+
40+ assertEquals ("/tail" , Router .reverse ("/*" , map ("*" , "tail" )));
41+
42+ assertEquals ("/file/video.mpg" , Router .reverse ("/file/*" , map ("*" , "video.mpg" )));
43+ assertEquals ("/file/video.mpg" , Router .reverse ("/file/*video" , map ("video" , "video.mpg" )));
44+
45+ assertEquals ("/123" , Router .reverse ("/{regex:\\ d+}" , map ("regex" , 123 )));
46+
47+ assertEquals ("/resources/123/edit" , Router .reverse ("/resources/{num:\\ d+}/edit" , map ("num" , 123 )));
48+
49+ assertEquals ("/prefix/v1/v2" , Router .reverse ("/prefix/{k1}/{k2}" , map ("k1" , "v1" , "k2" , "v2" )));
50+
51+ assertEquals ("/v1/suffix" , Router .reverse ("/{k1}/suffix" , map ("k1" , "v1" , "k2" , "v2" )));
52+
53+ assertEquals ("/foo/v" , Router .reverse ("/{name}/{k}" , map ("name" , "foo" , "k" , "v" )));
54+
55+ assertEquals ("/foo" , Router .reverse ("/{name}" , map ("name" , "foo" )));
56+
57+ assertEquals ("/" , Router .reverse ("/" , Collections .emptyMap ()));
58+ assertEquals ("/path" , Router .reverse ("/path" , Collections .emptyMap ()));
59+ assertEquals ("/path" , Router .reverse ("/path" , map ("k" , "v" )));
60+
61+ }
62+
2663 private void pathKeys (String pattern , Consumer <List <String >> consumer ) {
2764 consumer .accept (Router .pathKeys (pattern ));
2865 }
66+
67+ public Map <String , Object > map (Object ... values ) {
68+ Map <String , Object > map = new HashMap <>();
69+ for (int i = 0 ; i < values .length ; i += 2 ) {
70+ map .put (values [i ].toString (), values [i + 1 ]);
71+ }
72+ return map ;
73+ }
2974}
0 commit comments