7
7
use Sabberworm \CSS \CSSList \AtRuleBlockList ;
8
8
use Sabberworm \CSS \Parser ;
9
9
use Sabberworm \CSS \Renderable ;
10
+ use Sabberworm \CSS \Settings ;
10
11
11
12
/**
12
13
* @covers \Sabberworm\CSS\CSSList\AtRuleBlockList
13
14
*/
14
15
final class AtRuleBlockListTest extends TestCase
15
16
{
17
+ /**
18
+ * @return array<string, array{0: string}>
19
+ */
20
+ public static function provideMinWidthMediaRule (): array
21
+ {
22
+ return [
23
+ 'without spaces around arguments ' => ['@media(min-width: 768px){.class{color:red}} ' ],
24
+ 'with spaces around arguments ' => ['@media (min-width: 768px) {.class{color:red}} ' ],
25
+ ];
26
+ }
27
+
28
+ /**
29
+ * @return array<string, array{0: string}>
30
+ */
31
+ public static function provideSyntacticlyCorrectAtRule (): array
32
+ {
33
+ return [
34
+ 'media print ' => ['@media print { html { background: white; color: black; } } ' ],
35
+ 'keyframes ' => ['@keyframes mymove { from { top: 0px; } } ' ],
36
+ 'supports ' => ['
37
+ @supports (display: flex) {
38
+ .flex-container > * {
39
+ text-shadow: 0 0 2px blue;
40
+ float: none;
41
+ }
42
+ .flex-container {
43
+ display: flex;
44
+ }
45
+ }
46
+ ' ],
47
+ ];
48
+ }
49
+
16
50
/**
17
51
* @test
18
52
*/
@@ -43,23 +77,12 @@ public function implementsCommentable()
43
77
self ::assertInstanceOf (Commentable::class, $ subject );
44
78
}
45
79
46
- /**
47
- * @return array<string, array<int, string>>
48
- */
49
- public static function mediaRuleDataProvider ()
50
- {
51
- return [
52
- 'without spaces around arguments ' => ['@media(min-width: 768px){.class{color:red}} ' ],
53
- 'with spaces around arguments ' => ['@media (min-width: 768px) {.class{color:red}} ' ],
54
- ];
55
- }
56
-
57
80
/**
58
81
* @test
59
82
*
60
83
* @param string $css
61
84
*
62
- * @dataProvider mediaRuleDataProvider
85
+ * @dataProvider provideMinWidthMediaRule
63
86
*/
64
87
public function parsesRuleNameOfMediaQueries ($ css )
65
88
{
@@ -74,7 +97,7 @@ public function parsesRuleNameOfMediaQueries($css)
74
97
*
75
98
* @param string $css
76
99
*
77
- * @dataProvider mediaRuleDataProvider
100
+ * @dataProvider provideMinWidthMediaRule
78
101
*/
79
102
public function parsesArgumentsOfMediaQueries ($ css )
80
103
{
@@ -83,4 +106,17 @@ public function parsesArgumentsOfMediaQueries($css)
83
106
84
107
self ::assertSame ('(min-width: 768px) ' , $ atRuleBlockList ->atRuleArgs ());
85
108
}
109
+
110
+ /**
111
+ * @test
112
+ *
113
+ * @dataProvider provideMinWidthMediaRule
114
+ * @dataProvider provideSyntacticlyCorrectAtRule
115
+ */
116
+ public function parsesSyntacticlyCorrectAtRuleInStrictMode (string $ css ): void
117
+ {
118
+ $ contents = (new Parser ($ css , Settings::create ()->beStrict ()))->parse ()->getContents ();
119
+
120
+ self ::assertNotEmpty ($ contents , 'Failing CSS: ` ' . $ css . '` ' );
121
+ }
86
122
}
0 commit comments