@@ -5,74 +5,88 @@ const assert = require('node:assert/strict');
55const parsers = require ( '../lib/parsers' ) ;
66
77describe ( 'valueType' , ( ) => {
8- it ( 'returns color for red ' , ( ) => {
9- let input = 'red' ;
8+ it ( 'returns null or empty string for null ' , ( ) => {
9+ let input = null ;
1010 let output = parsers . valueType ( input ) ;
1111
12- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
12+ assert . strictEqual ( output , parsers . TYPES . NULL_OR_EMPTY_STR ) ;
1313 } ) ;
1414
15- it ( 'returns color for #nnnnnn ' , ( ) => {
16- let input = '#fefefe ' ;
15+ it ( 'returns null or empty string for empty string ' , ( ) => {
16+ let input = '' ;
1717 let output = parsers . valueType ( input ) ;
1818
19- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
19+ assert . strictEqual ( output , parsers . TYPES . NULL_OR_EMPTY_STR ) ;
2020 } ) ;
2121
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 ;
2424 let output = parsers . valueType ( input ) ;
2525
26- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
26+ assert . strictEqual ( output , undefined ) ;
2727 } ) ;
2828
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 ;
3131 let output = parsers . valueType ( input ) ;
3232
33- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
33+ assert . strictEqual ( output , parsers . TYPES . INTEGER ) ;
3434 } ) ;
3535
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 ;
3838 let output = parsers . valueType ( input ) ;
3939
40- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
40+ assert . strictEqual ( output , parsers . TYPES . NUMBER ) ;
4141 } ) ;
4242
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 ' ;
4545 let output = parsers . valueType ( input ) ;
4646
47- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
47+ assert . strictEqual ( output , parsers . TYPES . LENGTH ) ;
4848 } ) ;
4949
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%' ;
5252 let output = parsers . valueType ( input ) ;
5353
54- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
54+ assert . strictEqual ( output , parsers . TYPES . PERCENT ) ;
5555 } ) ;
5656
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 )' ;
5959 let output = parsers . valueType ( input ) ;
6060
61- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
61+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
6262 } ) ;
6363
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") ' ;
6666 let output = parsers . valueType ( input ) ;
6767
68- assert . strictEqual ( output , parsers . TYPES . COLOR ) ;
68+ assert . strictEqual ( output , parsers . TYPES . URL ) ;
6969 } ) ;
7070
71- it ( 'returns length for 100ch ' , ( ) => {
72- let input = '100ch ' ;
71+ it ( 'returns url for url(foo.png) ' , ( ) => {
72+ let input = 'url(foo.png) ' ;
7373 let output = parsers . valueType ( input ) ;
7474
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 ) ;
7690 } ) ;
7791
7892 it ( 'returns var from calc(100px * var(--foo))' , ( ) => {
@@ -116,6 +130,111 @@ describe('valueType', () => {
116130
117131 assert . strictEqual ( output , parsers . TYPES . CALC ) ;
118132 } ) ;
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+ } ) ;
119238} ) ;
120239
121240describe ( 'parseInteger' , ( ) => {
0 commit comments