1
- import type {
2
- MatchOptions ,
3
- Match ,
4
- ParseOptions ,
5
- Token ,
6
- CompileOptions ,
7
- ParamData ,
1
+ import {
2
+ type MatchOptions ,
3
+ type Match ,
4
+ type ParseOptions ,
5
+ type Token ,
6
+ type CompileOptions ,
7
+ type ParamData ,
8
+ TokenData ,
8
9
} from "./index.js" ;
9
10
10
11
export interface ParserTestSet {
11
12
path : string ;
12
13
options ?: ParseOptions ;
13
- expected : Token [ ] ;
14
+ expected : TokenData ;
15
+ }
16
+
17
+ export interface StringifyTestSet {
18
+ data : TokenData ;
19
+ options ?: ParseOptions ;
20
+ expected : string ;
14
21
}
15
22
16
23
export interface CompileTestSet {
@@ -34,56 +41,98 @@ export interface MatchTestSet {
34
41
export const PARSER_TESTS : ParserTestSet [ ] = [
35
42
{
36
43
path : "/" ,
37
- expected : [ { type : "text" , value : "/" } ] ,
44
+ expected : new TokenData ( [ { type : "text" , value : "/" } ] ) ,
38
45
} ,
39
46
{
40
47
path : "/:test" ,
41
- expected : [
48
+ expected : new TokenData ( [
42
49
{ type : "text" , value : "/" } ,
43
50
{ type : "param" , name : "test" } ,
44
- ] ,
51
+ ] ) ,
45
52
} ,
46
53
{
47
54
path : '/:"0"' ,
48
- expected : [
55
+ expected : new TokenData ( [
49
56
{ type : "text" , value : "/" } ,
50
57
{ type : "param" , name : "0" } ,
51
- ] ,
58
+ ] ) ,
52
59
} ,
53
60
{
54
61
path : "/:_" ,
55
- expected : [
62
+ expected : new TokenData ( [
56
63
{ type : "text" , value : "/" } ,
57
64
{ type : "param" , name : "_" } ,
58
- ] ,
65
+ ] ) ,
59
66
} ,
60
67
{
61
68
path : "/:café" ,
62
- expected : [
69
+ expected : new TokenData ( [
63
70
{ type : "text" , value : "/" } ,
64
71
{ type : "param" , name : "café" } ,
65
- ] ,
72
+ ] ) ,
66
73
} ,
67
74
{
68
75
path : '/:"123"' ,
69
- expected : [
76
+ expected : new TokenData ( [
70
77
{ type : "text" , value : "/" } ,
71
78
{ type : "param" , name : "123" } ,
72
- ] ,
79
+ ] ) ,
73
80
} ,
74
81
{
75
82
path : '/:"1\\"\\2\\"3"' ,
76
- expected : [
83
+ expected : new TokenData ( [
77
84
{ type : "text" , value : "/" } ,
78
85
{ type : "param" , name : '1"2"3' } ,
79
- ] ,
86
+ ] ) ,
80
87
} ,
81
88
{
82
89
path : "/*path" ,
83
- expected : [
90
+ expected : new TokenData ( [
84
91
{ type : "text" , value : "/" } ,
85
92
{ type : "wildcard" , name : "path" } ,
86
- ] ,
93
+ ] ) ,
94
+ } ,
95
+ ] ;
96
+
97
+ export const STRINGIFY_TESTS : StringifyTestSet [ ] = [
98
+ {
99
+ data : new TokenData ( [ { type : "text" , value : "/" } ] ) ,
100
+ expected : "/" ,
101
+ } ,
102
+ {
103
+ data : new TokenData ( [
104
+ { type : "text" , value : "/" } ,
105
+ { type : "param" , name : "test" } ,
106
+ ] ) ,
107
+ expected : "/:test" ,
108
+ } ,
109
+ {
110
+ data : new TokenData ( [
111
+ { type : "text" , value : "/" } ,
112
+ { type : "param" , name : "café" } ,
113
+ ] ) ,
114
+ expected : "/:café" ,
115
+ } ,
116
+ {
117
+ data : new TokenData ( [
118
+ { type : "text" , value : "/" } ,
119
+ { type : "param" , name : "0" } ,
120
+ ] ) ,
121
+ expected : '/:"0"' ,
122
+ } ,
123
+ {
124
+ data : new TokenData ( [
125
+ { type : "text" , value : "/" } ,
126
+ { type : "wildcard" , name : "test" } ,
127
+ ] ) ,
128
+ expected : "/*test" ,
129
+ } ,
130
+ {
131
+ data : new TokenData ( [
132
+ { type : "text" , value : "/" } ,
133
+ { type : "wildcard" , name : "0" } ,
134
+ ] ) ,
135
+ expected : '/*"0"' ,
87
136
} ,
88
137
] ;
89
138
0 commit comments