Skip to content

Commit 370c277

Browse files
committed
use tape in test/ast.coffee
1 parent ac4db06 commit 370c277

File tree

1 file changed

+189
-191
lines changed

1 file changed

+189
-191
lines changed

test/ast.coffee

+189-191
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
test = require 'tape'
12
UrlPattern = require '../lib/url-pattern'
23

34
{
@@ -8,194 +9,191 @@ UrlPattern = require '../lib/url-pattern'
89

910
parse = UrlPattern.newParser(UrlPattern.defaultOptions).pattern
1011

11-
module.exports =
12-
'astNodeToRegexString and astNodeToNames':
13-
14-
'just static alphanumeric': (test) ->
15-
parsed = parse 'user42'
16-
test.equal astNodeToRegexString(parsed.value), '^user42$'
17-
test.deepEqual astNodeToNames(parsed.value), []
18-
test.done()
19-
20-
'just static escaped': (test) ->
21-
parsed = parse '/api/v1/users'
22-
test.equal astNodeToRegexString(parsed.value), '^\\/api\\/v1\\/users$'
23-
test.deepEqual astNodeToNames(parsed.value), []
24-
test.done()
25-
26-
'just single char variable': (test) ->
27-
parsed = parse ':a'
28-
test.equal astNodeToRegexString(parsed.value), '^([a-zA-Z0-9-_~ %]+)$'
29-
test.deepEqual astNodeToNames(parsed.value), ['a']
30-
test.done()
31-
32-
'just variable': (test) ->
33-
parsed = parse ':variable'
34-
test.equal astNodeToRegexString(parsed.value), '^([a-zA-Z0-9-_~ %]+)$'
35-
test.deepEqual astNodeToNames(parsed.value), ['variable']
36-
test.done()
37-
38-
'just wildcard': (test) ->
39-
parsed = parse '*'
40-
test.equal astNodeToRegexString(parsed.value), '^(.*?)$'
41-
test.deepEqual astNodeToNames(parsed.value), ['_']
42-
test.done()
43-
44-
'just optional static': (test) ->
45-
parsed = parse '(foo)'
46-
test.equal astNodeToRegexString(parsed.value), '^(?:foo)?$'
47-
test.deepEqual astNodeToNames(parsed.value), []
48-
test.done()
49-
50-
'just optional variable': (test) ->
51-
parsed = parse '(:foo)'
52-
test.equal astNodeToRegexString(parsed.value), '^(?:([a-zA-Z0-9-_~ %]+))?$'
53-
test.deepEqual astNodeToNames(parsed.value), ['foo']
54-
test.done()
55-
56-
'just optional wildcard': (test) ->
57-
parsed = parse '(*)'
58-
test.equal astNodeToRegexString(parsed.value), '^(?:(.*?))?$'
59-
test.deepEqual astNodeToNames(parsed.value), ['_']
60-
test.done()
61-
62-
'getParam':
63-
64-
'no side effects': (test) ->
65-
next = {}
66-
test.equal null, getParam {}, 'one', next
67-
test.deepEqual next, {}
68-
69-
# value
70-
71-
next = {}
72-
test.equal 1, getParam {one: 1}, 'one', next
73-
test.deepEqual next, {}
74-
75-
next = {one: 0}
76-
test.equal 1, getParam {one: 1}, 'one', next
77-
test.deepEqual next, {one: 0}
78-
79-
next = {one: 1}
80-
test.equal null, getParam {one: 1}, 'one', next
81-
test.deepEqual next, {one: 1}
82-
83-
next = {one: 2}
84-
test.equal null, getParam {one: 1}, 'one', next
85-
test.deepEqual next, {one: 2}
86-
87-
# array
88-
89-
next = {}
90-
test.equal 1, getParam {one: [1]}, 'one', next
91-
test.deepEqual next, {}
92-
93-
next = {one: 0}
94-
test.equal 1, getParam {one: [1]}, 'one', next
95-
test.deepEqual next, {one: 0}
96-
97-
next = {one: 1}
98-
test.equal null, getParam {one: [1]}, 'one', next
99-
test.deepEqual next, {one: 1}
100-
101-
next = {one: 2}
102-
test.equal null, getParam {one: [1]}, 'one', next
103-
test.deepEqual next, {one: 2}
104-
105-
next = {one: 0}
106-
test.equal 1, getParam {one: [1, 2, 3]}, 'one', next
107-
test.deepEqual next, {one: 0}
108-
109-
next = {one: 1}
110-
test.equal 2, getParam {one: [1, 2, 3]}, 'one', next
111-
test.deepEqual next, {one: 1}
112-
113-
next = {one: 2}
114-
test.equal 3, getParam {one: [1, 2, 3]}, 'one', next
115-
test.deepEqual next, {one: 2}
116-
117-
next = {one: 3}
118-
test.equal null, getParam {one: [1, 2, 3]}, 'one', next
119-
test.deepEqual next, {one: 3}
120-
121-
test.done()
122-
123-
'side effects': (test) ->
124-
next = {}
125-
test.equal 1, getParam {one: 1}, 'one', next, true
126-
test.deepEqual next, {one: 1}
127-
128-
next = {one: 0}
129-
test.equal 1, getParam {one: 1}, 'one', next, true
130-
test.deepEqual next, {one: 1}
131-
132-
# array
133-
134-
next = {}
135-
test.equal 1, getParam {one: [1]}, 'one', next, true
136-
test.deepEqual next, {one: 1}
137-
138-
next = {one: 0}
139-
test.equal 1, getParam {one: [1]}, 'one', next, true
140-
test.deepEqual next, {one: 1}
141-
142-
next = {one: 0}
143-
test.equal 1, getParam {one: [1, 2, 3]}, 'one', next, true
144-
test.deepEqual next, {one: 1}
145-
146-
next = {one: 1}
147-
test.equal 2, getParam {one: [1, 2, 3]}, 'one', next, true
148-
test.deepEqual next, {one: 2}
149-
150-
next = {one: 2}
151-
test.equal 3, getParam {one: [1, 2, 3]}, 'one', next, true
152-
test.deepEqual next, {one: 3}
153-
154-
test.done()
155-
156-
'side effects errors': (test) ->
157-
test.expect 2 * 6
158-
159-
next = {}
160-
try
161-
getParam {}, 'one', next, true
162-
catch e
163-
test.equal e.message, "no values provided for key `one`"
164-
test.deepEqual next, {}
165-
166-
next = {one: 1}
167-
try
168-
getParam {one: 1}, 'one', next, true
169-
catch e
170-
test.equal e.message, "too few values provided for key `one`"
171-
test.deepEqual next, {one: 1}
172-
173-
next = {one: 2}
174-
try
175-
getParam {one: 2}, 'one', next, true
176-
catch e
177-
test.equal e.message, "too few values provided for key `one`"
178-
test.deepEqual next, {one: 2}
179-
180-
next = {one: 1}
181-
try
182-
getParam {one: [1]}, 'one', next, true
183-
catch e
184-
test.equal e.message, "too few values provided for key `one`"
185-
test.deepEqual next, {one: 1}
186-
187-
next = {one: 2}
188-
try
189-
getParam {one: [1]}, 'one', next, true
190-
catch e
191-
test.equal e.message, "too few values provided for key `one`"
192-
test.deepEqual next, {one: 2}
193-
194-
next = {one: 3}
195-
try
196-
getParam {one: [1, 2, 3]}, 'one', next, true
197-
catch e
198-
test.equal e.message, "too few values provided for key `one`"
199-
test.deepEqual next, {one: 3}
200-
201-
test.done()
12+
test 'astNodeToRegexString and astNodeToNames', (t) ->
13+
t.test 'just static alphanumeric', (t) ->
14+
parsed = parse 'user42'
15+
t.equal astNodeToRegexString(parsed.value), '^user42$'
16+
t.deepEqual astNodeToNames(parsed.value), []
17+
t.end()
18+
19+
t.test 'just static escaped', (t) ->
20+
parsed = parse '/api/v1/users'
21+
t.equal astNodeToRegexString(parsed.value), '^\\/api\\/v1\\/users$'
22+
t.deepEqual astNodeToNames(parsed.value), []
23+
t.end()
24+
25+
t.test 'just single char variable', (t) ->
26+
parsed = parse ':a'
27+
t.equal astNodeToRegexString(parsed.value), '^([a-zA-Z0-9-_~ %]+)$'
28+
t.deepEqual astNodeToNames(parsed.value), ['a']
29+
t.end()
30+
31+
t.test 'just variable', (t) ->
32+
parsed = parse ':variable'
33+
t.equal astNodeToRegexString(parsed.value), '^([a-zA-Z0-9-_~ %]+)$'
34+
t.deepEqual astNodeToNames(parsed.value), ['variable']
35+
t.end()
36+
37+
t.test 'just wildcard', (t) ->
38+
parsed = parse '*'
39+
t.equal astNodeToRegexString(parsed.value), '^(.*?)$'
40+
t.deepEqual astNodeToNames(parsed.value), ['_']
41+
t.end()
42+
43+
t.test 'just optional static', (t) ->
44+
parsed = parse '(foo)'
45+
t.equal astNodeToRegexString(parsed.value), '^(?:foo)?$'
46+
t.deepEqual astNodeToNames(parsed.value), []
47+
t.end()
48+
49+
t.test 'just optional variable', (t) ->
50+
parsed = parse '(:foo)'
51+
t.equal astNodeToRegexString(parsed.value), '^(?:([a-zA-Z0-9-_~ %]+))?$'
52+
t.deepEqual astNodeToNames(parsed.value), ['foo']
53+
t.end()
54+
55+
t.test 'just optional wildcard', (t) ->
56+
parsed = parse '(*)'
57+
t.equal astNodeToRegexString(parsed.value), '^(?:(.*?))?$'
58+
t.deepEqual astNodeToNames(parsed.value), ['_']
59+
t.end()
60+
61+
test 'getParam', (t) ->
62+
t.test 'no side effects', (t) ->
63+
next = {}
64+
t.equal undefined, getParam {}, 'one', next
65+
t.deepEqual next, {}
66+
67+
# value
68+
69+
next = {}
70+
t.equal 1, getParam {one: 1}, 'one', next
71+
t.deepEqual next, {}
72+
73+
next = {one: 0}
74+
t.equal 1, getParam {one: 1}, 'one', next
75+
t.deepEqual next, {one: 0}
76+
77+
next = {one: 1}
78+
t.equal undefined, getParam {one: 1}, 'one', next
79+
t.deepEqual next, {one: 1}
80+
81+
next = {one: 2}
82+
t.equal undefined, getParam {one: 1}, 'one', next
83+
t.deepEqual next, {one: 2}
84+
85+
# array
86+
87+
next = {}
88+
t.equal 1, getParam {one: [1]}, 'one', next
89+
t.deepEqual next, {}
90+
91+
next = {one: 0}
92+
t.equal 1, getParam {one: [1]}, 'one', next
93+
t.deepEqual next, {one: 0}
94+
95+
next = {one: 1}
96+
t.equal undefined, getParam {one: [1]}, 'one', next
97+
t.deepEqual next, {one: 1}
98+
99+
next = {one: 2}
100+
t.equal undefined, getParam {one: [1]}, 'one', next
101+
t.deepEqual next, {one: 2}
102+
103+
next = {one: 0}
104+
t.equal 1, getParam {one: [1, 2, 3]}, 'one', next
105+
t.deepEqual next, {one: 0}
106+
107+
next = {one: 1}
108+
t.equal 2, getParam {one: [1, 2, 3]}, 'one', next
109+
t.deepEqual next, {one: 1}
110+
111+
next = {one: 2}
112+
t.equal 3, getParam {one: [1, 2, 3]}, 'one', next
113+
t.deepEqual next, {one: 2}
114+
115+
next = {one: 3}
116+
t.equal undefined, getParam {one: [1, 2, 3]}, 'one', next
117+
t.deepEqual next, {one: 3}
118+
119+
t.end()
120+
121+
t.test 'side effects', (t) ->
122+
next = {}
123+
t.equal 1, getParam {one: 1}, 'one', next, true
124+
t.deepEqual next, {one: 1}
125+
126+
next = {one: 0}
127+
t.equal 1, getParam {one: 1}, 'one', next, true
128+
t.deepEqual next, {one: 1}
129+
130+
# array
131+
132+
next = {}
133+
t.equal 1, getParam {one: [1]}, 'one', next, true
134+
t.deepEqual next, {one: 1}
135+
136+
next = {one: 0}
137+
t.equal 1, getParam {one: [1]}, 'one', next, true
138+
t.deepEqual next, {one: 1}
139+
140+
next = {one: 0}
141+
t.equal 1, getParam {one: [1, 2, 3]}, 'one', next, true
142+
t.deepEqual next, {one: 1}
143+
144+
next = {one: 1}
145+
t.equal 2, getParam {one: [1, 2, 3]}, 'one', next, true
146+
t.deepEqual next, {one: 2}
147+
148+
next = {one: 2}
149+
t.equal 3, getParam {one: [1, 2, 3]}, 'one', next, true
150+
t.deepEqual next, {one: 3}
151+
152+
t.end()
153+
154+
t.test 'side effects errors', (t) ->
155+
t.plan 2 * 6
156+
157+
next = {}
158+
try
159+
getParam {}, 'one', next, true
160+
catch e
161+
t.equal e.message, "no values provided for key `one`"
162+
t.deepEqual next, {}
163+
164+
next = {one: 1}
165+
try
166+
getParam {one: 1}, 'one', next, true
167+
catch e
168+
t.equal e.message, "too few values provided for key `one`"
169+
t.deepEqual next, {one: 1}
170+
171+
next = {one: 2}
172+
try
173+
getParam {one: 2}, 'one', next, true
174+
catch e
175+
t.equal e.message, "too few values provided for key `one`"
176+
t.deepEqual next, {one: 2}
177+
178+
next = {one: 1}
179+
try
180+
getParam {one: [1]}, 'one', next, true
181+
catch e
182+
t.equal e.message, "too few values provided for key `one`"
183+
t.deepEqual next, {one: 1}
184+
185+
next = {one: 2}
186+
try
187+
getParam {one: [1]}, 'one', next, true
188+
catch e
189+
t.equal e.message, "too few values provided for key `one`"
190+
t.deepEqual next, {one: 2}
191+
192+
next = {one: 3}
193+
try
194+
getParam {one: [1, 2, 3]}, 'one', next, true
195+
catch e
196+
t.equal e.message, "too few values provided for key `one`"
197+
t.deepEqual next, {one: 3}
198+
199+
t.end()

0 commit comments

Comments
 (0)