5
5
'use strict' ;
6
6
7
7
import * as assert from 'assert' ;
8
- import { Parser } from '../../parser/cssParser' ;
9
- import { TokenType } from '../../parser/cssScanner' ;
8
+ import { Parser } from '../../parser/cssParser' ;
9
+ import { TokenType } from '../../parser/cssScanner' ;
10
10
import * as nodes from '../../parser/cssNodes' ;
11
- import { ParseError } from '../../parser/cssErrors' ;
11
+ import { ParseError } from '../../parser/cssErrors' ;
12
12
13
13
export function assertNode ( text : string , parser : Parser , f : ( ) => nodes . Node ) : nodes . Node {
14
14
let node = parser . internalParse ( text , f ) ;
@@ -45,7 +45,7 @@ export function assertError(text: string, parser: Parser, f: () => nodes.Node, e
45
45
46
46
suite ( 'CSS - Parser' , ( ) => {
47
47
48
- test ( 'Test stylesheet' , function ( ) {
48
+ test ( 'stylesheet' , function ( ) {
49
49
let parser = new Parser ( ) ;
50
50
assertNode ( '@charset "demo" ;' , parser , parser . _parseStylesheet . bind ( parser ) ) ;
51
51
assertNode ( 'body { margin: 0px; padding: 3em, 6em; }' , parser , parser . _parseStylesheet . bind ( parser ) ) ;
@@ -78,7 +78,7 @@ suite('CSS - Parser', () => {
78
78
assertError ( '@charset \'utf8\'' , parser , parser . _parseStylesheet . bind ( parser ) , ParseError . SemiColonExpected ) ;
79
79
} ) ;
80
80
81
- test ( 'Stylesheet /Panic /' , function ( ) {
81
+ test ( 'stylesheet /panic /' , function ( ) {
82
82
let parser = new Parser ( ) ;
83
83
assertError ( '#boo, far } \n.far boo {}' , parser , parser . _parseStylesheet . bind ( parser ) , ParseError . LeftCurlyExpected ) ;
84
84
assertError ( '#boo, far { far: 43px; \n.far boo {}' , parser , parser . _parseStylesheet . bind ( parser ) , ParseError . RightCurlyExpected ) ;
@@ -121,15 +121,30 @@ suite('CSS - Parser', () => {
121
121
assertError ( '@keyframes name { from, #123' , parser , parser . _parseKeyframe . bind ( parser ) , ParseError . PercentageExpected ) ;
122
122
} ) ;
123
123
124
- test ( 'Test import' , function ( ) {
124
+ test ( '@ import' , function ( ) {
125
125
let parser = new Parser ( ) ;
126
126
assertNode ( '@import "asdasdsa"' , parser , parser . _parseImport . bind ( parser ) ) ;
127
127
assertNode ( '@ImPort "asdsadsa"' , parser , parser . _parseImport . bind ( parser ) ) ;
128
128
assertNode ( '@import "asdasd" dsfsdf' , parser , parser . _parseImport . bind ( parser ) ) ;
129
129
assertError ( '@import' , parser , parser . _parseImport . bind ( parser ) , ParseError . URIOrStringExpected ) ;
130
130
} ) ;
131
131
132
- test ( 'Test media' , function ( ) {
132
+ test ( '@supports' , function ( ) {
133
+ let parser = new Parser ( ) ;
134
+ assertNode ( '@supports ( display: flexbox ) { body { display: flexbox } }' , parser , parser . _parseSupports . bind ( parser ) ) ;
135
+ assertNode ( '@supports not (display: flexbox) { .outline { box-shadow: 2px 2px 2px black; /* unprefixed last */ } }' , parser , parser . _parseSupports . bind ( parser ) ) ;
136
+ assertNode ( '@supports ( box-shadow: 2px 2px 2px black ) or ( -moz-box-shadow: 2px 2px 2px black ) or ( -webkit-box-shadow: 2px 2px 2px black ) { }' , parser , parser . _parseSupports . bind ( parser ) ) ;
137
+ assertNode ( '@supports ((transition-property: color) or (animation-name: foo)) and (transform: rotate(10deg)) { }' , parser , parser . _parseSupports . bind ( parser ) ) ;
138
+ assertNode ( '@supports ((display: flexbox)) { }' , parser , parser . _parseSupports . bind ( parser ) ) ;
139
+ assertNode ( '@supports (display: flexbox !important) { }' , parser , parser . _parseSupports . bind ( parser ) ) ;
140
+ assertNode ( '@supports (grid-area: auto) { @media screen and (min-width: 768px) { .me { } } }' , parser , parser . _parseSupports . bind ( parser ) ) ;
141
+ assertError ( '@supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) { }' , parser , parser . _parseSupports . bind ( parser ) , ParseError . LeftCurlyExpected ) ;
142
+ assertError ( '@supports display: flexbox { }' , parser , parser . _parseSupports . bind ( parser ) , ParseError . LeftParenthesisExpected ) ;
143
+ assertError ( '@supports (transition-property: color)or (animation-name: foo) { }' , parser , parser . _parseSupports . bind ( parser ) , ParseError . WhitespaceExpected ) ;
144
+ assertError ( '@supports (transition-property: color) or(animation-name: foo) { }' , parser , parser . _parseSupports . bind ( parser ) , ParseError . WhitespaceExpected ) ;
145
+ } ) ;
146
+
147
+ test ( '@media' , function ( ) {
133
148
let parser = new Parser ( ) ;
134
149
assertNode ( '@media asdsa { }' , parser , parser . _parseMedia . bind ( parser ) ) ;
135
150
assertNode ( '@meDia sadd{} ' , parser , parser . _parseMedia . bind ( parser ) ) ;
@@ -151,7 +166,7 @@ suite('CSS - Parser', () => {
151
166
assertError ( '@media not screen and (color:#234567 { }' , parser , parser . _parseMedia . bind ( parser ) , ParseError . RightParenthesisExpected ) ;
152
167
} ) ;
153
168
154
- test ( 'Test media_list' , function ( ) {
169
+ test ( 'media_list' , function ( ) {
155
170
let parser = new Parser ( ) ;
156
171
assertNode ( 'somename' , parser , parser . _parseMediaList . bind ( parser ) ) ;
157
172
assertNode ( 'somename, othername' , parser , parser . _parseMediaList . bind ( parser ) ) ;
@@ -164,7 +179,7 @@ suite('CSS - Parser', () => {
164
179
assertNode ( '-asda34s' , parser , parser . _parseMedium . bind ( parser ) ) ;
165
180
} ) ;
166
181
167
- test ( 'page' , function ( ) {
182
+ test ( '@ page' , function ( ) {
168
183
let parser = new Parser ( ) ;
169
184
assertNode ( '@page : name{ }' , parser , parser . _parsePage . bind ( parser ) ) ;
170
185
assertNode ( '@page :left, :right { }' , parser , parser . _parsePage . bind ( parser ) ) ;
@@ -213,7 +228,7 @@ suite('CSS - Parser', () => {
213
228
assertNode ( '+' , parser , parser . _parseUnaryOperator . bind ( parser ) ) ;
214
229
} ) ;
215
230
216
- test ( 'Property ' , function ( ) {
231
+ test ( 'property ' , function ( ) {
217
232
let parser = new Parser ( ) ;
218
233
assertNode ( 'asdsa' , parser , parser . _parseProperty . bind ( parser ) ) ;
219
234
assertNode ( 'asdsa334' , parser , parser . _parseProperty . bind ( parser ) ) ;
@@ -226,7 +241,7 @@ suite('CSS - Parser', () => {
226
241
assertNode ( 'somevar--' , parser , parser . _parseProperty . bind ( parser ) ) ;
227
242
} ) ;
228
243
229
- test ( 'Ruleset ' , function ( ) {
244
+ test ( 'ruleset ' , function ( ) {
230
245
let parser = new Parser ( ) ;
231
246
assertNode ( 'name{ }' , parser , parser . _parseRuleset . bind ( parser ) ) ;
232
247
assertNode ( ' name\n{ some : "asdas" }' , parser , parser . _parseRuleset . bind ( parser ) ) ;
@@ -255,7 +270,7 @@ suite('CSS - Parser', () => {
255
270
assertNode ( 'boo { @apply --custom-prop; background-color: red }' , parser , parser . _parseRuleset . bind ( parser ) ) ;
256
271
} ) ;
257
272
258
- test ( 'Ruleset /Panic/' , function ( ) {
273
+ test ( 'ruleset /Panic/' , function ( ) {
259
274
let parser = new Parser ( ) ;
260
275
// assertNode('boo { : value }', parser, parser._parseRuleset.bind(parser));
261
276
assertError ( 'boo { prop: ; }' , parser , parser . _parseRuleset . bind ( parser ) , ParseError . PropertyValueExpected ) ;
@@ -382,7 +397,7 @@ suite('CSS - Parser', () => {
382
397
assertFunction ( 'fun(value1, value2)' , parser , parser . _parseFunction . bind ( parser ) ) ;
383
398
} ) ;
384
399
385
- test ( 'Test Token prio' , function ( ) {
400
+ test ( 'test token prio' , function ( ) {
386
401
let parser = new Parser ( ) ;
387
402
assertNode ( '!important' , parser , parser . _parsePrio . bind ( parser ) ) ;
388
403
assertNode ( '!/*demo*/important' , parser , parser . _parsePrio . bind ( parser ) ) ;
@@ -398,7 +413,7 @@ suite('CSS - Parser', () => {
398
413
assertNode ( '#FFFFFFFF' , parser , parser . _parseHexColor . bind ( parser ) ) ;
399
414
} ) ;
400
415
401
- test ( 'Test class' , function ( ) {
416
+ test ( 'test class' , function ( ) {
402
417
let parser = new Parser ( ) ;
403
418
assertNode ( '.faa' , parser , parser . _parseClass . bind ( parser ) ) ;
404
419
assertNode ( 'faa' , parser , parser . _parseElementName . bind ( parser ) ) ;
@@ -407,20 +422,20 @@ suite('CSS - Parser', () => {
407
422
} ) ;
408
423
409
424
410
- test ( 'Prio ' , function ( ) {
425
+ test ( 'prio ' , function ( ) {
411
426
let parser = new Parser ( ) ;
412
427
assertNode ( '!important' , parser , parser . _parsePrio . bind ( parser ) ) ;
413
428
} ) ;
414
429
415
- test ( 'Expr ' , function ( ) {
430
+ test ( 'expr ' , function ( ) {
416
431
let parser = new Parser ( ) ;
417
432
assertNode ( '45,5px' , parser , parser . _parseExpr . bind ( parser ) ) ;
418
433
assertNode ( ' 45 , 5px ' , parser , parser . _parseExpr . bind ( parser ) ) ;
419
434
assertNode ( '5/6' , parser , parser . _parseExpr . bind ( parser ) ) ;
420
435
assertNode ( '36mm, -webkit-calc(100%-10px)' , parser , parser . _parseExpr . bind ( parser ) ) ;
421
436
} ) ;
422
437
423
- test ( 'Url ' , function ( ) {
438
+ test ( 'url ' , function ( ) {
424
439
let parser = new Parser ( ) ;
425
440
assertNode ( 'url(\'http://msft.com\')' , parser , parser . _parseURILiteral . bind ( parser ) ) ;
426
441
assertNode ( 'url("http://msft.com")' , parser , parser . _parseURILiteral . bind ( parser ) ) ;
0 commit comments