@@ -5,74 +5,88 @@ const assert = require('node:assert/strict');
5
5
const parsers = require ( '../lib/parsers' ) ;
6
6
7
7
describe ( 'valueType' , ( ) => {
8
- it ( 'returns color for red ' , ( ) => {
9
- let input = 'red' ;
8
+ it ( 'returns null or empty string for null ' , ( ) => {
9
+ let input = null ;
10
10
let output = parsers . valueType ( input ) ;
11
11
12
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
12
+ assert . strictEqual ( output , parsers . TYPES . NULL_OR_EMPTY_STR ) ;
13
13
} ) ;
14
14
15
- it ( 'returns color for #nnnnnn ' , ( ) => {
16
- let input = '#fefefe ' ;
15
+ it ( 'returns null or empty string for empty string ' , ( ) => {
16
+ let input = '' ;
17
17
let output = parsers . valueType ( input ) ;
18
18
19
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
19
+ assert . strictEqual ( output , parsers . TYPES . NULL_OR_EMPTY_STR ) ;
20
20
} ) ;
21
21
22
- it ( 'returns color for rgb(n, n, n) ' , ( ) => {
23
- let input = 'rgb(10, 10, 10)' ;
22
+ it ( 'returns undefined for undefined ' , ( ) => {
23
+ let input = undefined ;
24
24
let output = parsers . valueType ( input ) ;
25
25
26
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
26
+ assert . strictEqual ( output , undefined ) ;
27
27
} ) ;
28
28
29
- it ( 'returns color for rgb(p, p, p) ' , ( ) => {
30
- let input = 'rgb(10%, 10%, 10%)' ;
29
+ it ( 'returns integer for 1 ' , ( ) => {
30
+ let input = 1 ;
31
31
let output = parsers . valueType ( input ) ;
32
32
33
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
33
+ assert . strictEqual ( output , parsers . TYPES . INTEGER ) ;
34
34
} ) ;
35
35
36
- it ( 'returns color for rgba(n, n, n, n) ' , ( ) => {
37
- let input = 'rgba(10, 10, 10, 1)' ;
36
+ it ( 'returns number for 1.1 ' , ( ) => {
37
+ let input = 1.1 ;
38
38
let output = parsers . valueType ( input ) ;
39
39
40
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
40
+ assert . strictEqual ( output , parsers . TYPES . NUMBER ) ;
41
41
} ) ;
42
42
43
- it ( 'returns color for rgba(n, n, n, n) with decimal alpha ' , ( ) => {
44
- let input = 'rgba(10, 10, 10, 0.5) ' ;
43
+ it ( 'returns length for 100ch ' , ( ) => {
44
+ let input = '100ch ' ;
45
45
let output = parsers . valueType ( input ) ;
46
46
47
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
47
+ assert . strictEqual ( output , parsers . TYPES . LENGTH ) ;
48
48
} ) ;
49
49
50
- it ( 'returns color for rgba(p, p, p, n) ' , ( ) => {
51
- let input = 'rgba( 10%, 10%, 10%, 1) ' ;
50
+ it ( 'returns percent for 10% ' , ( ) => {
51
+ let input = '10%' ;
52
52
let output = parsers . valueType ( input ) ;
53
53
54
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
54
+ assert . strictEqual ( output , parsers . TYPES . PERCENT ) ;
55
55
} ) ;
56
56
57
- it ( 'returns color for rgba(p, p, p, n) with decimal alpha ' , ( ) => {
58
- let input = 'rgba(10%, 10%, 10%, 0.5 )' ;
57
+ it ( 'returns url for url(https://example.com) ' , ( ) => {
58
+ let input = 'url(https://example.com )' ;
59
59
let output = parsers . valueType ( input ) ;
60
60
61
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
61
+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
62
62
} ) ;
63
63
64
- it ( 'returns color for transparent keyword ' , ( ) => {
65
- let input = 'transparent ' ;
64
+ it ( 'returns url for url("https://example.com") ' , ( ) => {
65
+ let input = 'url("https://example.com") ' ;
66
66
let output = parsers . valueType ( input ) ;
67
67
68
- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
68
+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
69
69
} ) ;
70
70
71
- it ( 'returns length for 100ch ' , ( ) => {
72
- let input = '100ch ' ;
71
+ it ( 'returns url for url(foo.png) ' , ( ) => {
72
+ let input = 'url(foo.png) ' ;
73
73
let output = parsers . valueType ( input ) ;
74
74
75
- assert . strictEqual ( output , parsers . TYPES . LENGTH ) ;
75
+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
76
+ } ) ;
77
+
78
+ it ( 'returns url for url("foo.png")' , ( ) => {
79
+ let input = 'url("foo.png")' ;
80
+ let output = parsers . valueType ( input ) ;
81
+
82
+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
83
+ } ) ;
84
+
85
+ it ( 'returns undefined for url(var(--foo))' , ( ) => {
86
+ let input = 'url(var(--foo))' ;
87
+ let output = parsers . valueType ( input ) ;
88
+
89
+ assert . strictEqual ( output , undefined ) ;
76
90
} ) ;
77
91
78
92
it ( 'returns var from calc(100px * var(--foo))' , ( ) => {
@@ -116,6 +130,111 @@ describe('valueType', () => {
116
130
117
131
assert . strictEqual ( output , parsers . TYPES . CALC ) ;
118
132
} ) ;
133
+
134
+ it ( 'returns string from "foo"' , ( ) => {
135
+ let input = '"foo"' ;
136
+ let output = parsers . valueType ( input ) ;
137
+
138
+ assert . strictEqual ( output , parsers . TYPES . STRING ) ;
139
+ } ) ;
140
+
141
+ it ( "returns string from 'foo'" , ( ) => {
142
+ let input = "'foo'" ;
143
+ let output = parsers . valueType ( input ) ;
144
+
145
+ assert . strictEqual ( output , parsers . TYPES . STRING ) ;
146
+ } ) ;
147
+
148
+ it ( 'returns angle for 90deg' , ( ) => {
149
+ let input = '90deg' ;
150
+ let output = parsers . valueType ( input ) ;
151
+
152
+ assert . strictEqual ( output , parsers . TYPES . ANGLE ) ;
153
+ } ) ;
154
+
155
+ it ( 'returns color for red' , ( ) => {
156
+ let input = 'red' ;
157
+ let output = parsers . valueType ( input ) ;
158
+
159
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
160
+ } ) ;
161
+
162
+ it ( 'returns color for #nnnnnn' , ( ) => {
163
+ let input = '#fefefe' ;
164
+ let output = parsers . valueType ( input ) ;
165
+
166
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
167
+ } ) ;
168
+
169
+ it ( 'returns color for rgb(n, n, n)' , ( ) => {
170
+ let input = 'rgb(10, 10, 10)' ;
171
+ let output = parsers . valueType ( input ) ;
172
+
173
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
174
+ } ) ;
175
+
176
+ it ( 'returns color for rgb(p, p, p)' , ( ) => {
177
+ let input = 'rgb(10%, 10%, 10%)' ;
178
+ let output = parsers . valueType ( input ) ;
179
+
180
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
181
+ } ) ;
182
+
183
+ it ( 'returns color for rgba(n, n, n, n)' , ( ) => {
184
+ let input = 'rgba(10, 10, 10, 1)' ;
185
+ let output = parsers . valueType ( input ) ;
186
+
187
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
188
+ } ) ;
189
+
190
+ it ( 'returns color for rgba(n, n, n, n) with decimal alpha' , ( ) => {
191
+ let input = 'rgba(10, 10, 10, 0.5)' ;
192
+ let output = parsers . valueType ( input ) ;
193
+
194
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
195
+ } ) ;
196
+
197
+ it ( 'returns color for rgba(p, p, p, n)' , ( ) => {
198
+ let input = 'rgba(10%, 10%, 10%, 1)' ;
199
+ let output = parsers . valueType ( input ) ;
200
+
201
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
202
+ } ) ;
203
+
204
+ it ( 'returns color for rgba(p, p, p, n) with decimal alpha' , ( ) => {
205
+ let input = 'rgba(10%, 10%, 10%, 0.5)' ;
206
+ let output = parsers . valueType ( input ) ;
207
+
208
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
209
+ } ) ;
210
+
211
+ it ( 'returns color for transparent keyword' , ( ) => {
212
+ let input = 'transparent' ;
213
+ let output = parsers . valueType ( input ) ;
214
+
215
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
216
+ } ) ;
217
+
218
+ it ( 'returns gradient for linear-gradient(red, blue)' , ( ) => {
219
+ let input = 'linear-gradient(red, blue)' ;
220
+ let output = parsers . valueType ( input ) ;
221
+
222
+ assert . strictEqual ( output , parsers . TYPES . GRADIENT ) ;
223
+ } ) ;
224
+
225
+ it ( 'returns color for legacy activeborder' , ( ) => {
226
+ let input = 'ActiveBorder' ;
227
+ let output = parsers . valueType ( input ) ;
228
+
229
+ assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
230
+ } ) ;
231
+
232
+ it ( 'returns keyword for else' , ( ) => {
233
+ let input = 'foo' ;
234
+ let output = parsers . valueType ( input ) ;
235
+
236
+ assert . strictEqual ( output , parsers . TYPES . KEYWORD ) ;
237
+ } ) ;
119
238
} ) ;
120
239
121
240
describe ( 'parseInteger' , ( ) => {
0 commit comments