ruby_css_lint 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.document +5 -0
  2. data/Gemfile +13 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.rdoc +19 -0
  5. data/Rakefile +71 -0
  6. data/VERSION +1 -0
  7. data/csslint/CHANGELOG +286 -0
  8. data/csslint/LICENSE +20 -0
  9. data/csslint/README.md +25 -0
  10. data/csslint/build.xml +242 -0
  11. data/csslint/demos/CSSLintDemo.htm +105 -0
  12. data/csslint/demos/demo.css +43 -0
  13. data/csslint/lib/js.jar +0 -0
  14. data/csslint/lib/jshint.js +3963 -0
  15. data/csslint/lib/parserlib.js +6295 -0
  16. data/csslint/lib/yuitest-rhino-cli.js +3955 -0
  17. data/csslint/lib/yuitest.js +4561 -0
  18. data/csslint/npm/package.json +30 -0
  19. data/csslint/release/csslint-node.js +9125 -0
  20. data/csslint/release/csslint-rhino.js +9390 -0
  21. data/csslint/release/csslint-tests.js +1921 -0
  22. data/csslint/release/csslint-worker.js +9148 -0
  23. data/csslint/release/csslint-wsh.js +9477 -0
  24. data/csslint/release/csslint.js +9127 -0
  25. data/csslint/release/npm/cli.js +307 -0
  26. data/csslint/release/npm/lib/csslint-node.js +9125 -0
  27. data/csslint/release/npm/package.json +30 -0
  28. data/csslint/src/cli/common.js +215 -0
  29. data/csslint/src/cli/node.js +87 -0
  30. data/csslint/src/cli/rhino.js +47 -0
  31. data/csslint/src/cli/wsh.js +134 -0
  32. data/csslint/src/core/CSSLint.js +181 -0
  33. data/csslint/src/core/Reporter.js +161 -0
  34. data/csslint/src/core/Util.js +62 -0
  35. data/csslint/src/formatters/checkstyle-xml.js +109 -0
  36. data/csslint/src/formatters/compact.js +59 -0
  37. data/csslint/src/formatters/csslint-xml.js +68 -0
  38. data/csslint/src/formatters/lint-xml.js +69 -0
  39. data/csslint/src/formatters/text.js +64 -0
  40. data/csslint/src/rules/adjoining-classes.js +45 -0
  41. data/csslint/src/rules/box-model.js +93 -0
  42. data/csslint/src/rules/box-sizing.js +28 -0
  43. data/csslint/src/rules/compatible-vendor-prefixes.js +171 -0
  44. data/csslint/src/rules/display-property-grouping.js +117 -0
  45. data/csslint/src/rules/duplicate-background-images.js +37 -0
  46. data/csslint/src/rules/duplicate-properties.js +46 -0
  47. data/csslint/src/rules/empty-rules.js +34 -0
  48. data/csslint/src/rules/errors.js +23 -0
  49. data/csslint/src/rules/fallback-colors.js +67 -0
  50. data/csslint/src/rules/floats.js +36 -0
  51. data/csslint/src/rules/font-faces.js +30 -0
  52. data/csslint/src/rules/font-sizes.js +35 -0
  53. data/csslint/src/rules/gradients.js +69 -0
  54. data/csslint/src/rules/ids.js +50 -0
  55. data/csslint/src/rules/import.js +23 -0
  56. data/csslint/src/rules/important.js +37 -0
  57. data/csslint/src/rules/known-properties.js +29 -0
  58. data/csslint/src/rules/outline-none.js +73 -0
  59. data/csslint/src/rules/overqualified-elements.js +63 -0
  60. data/csslint/src/rules/qualified-headings.js +38 -0
  61. data/csslint/src/rules/regex-selectors.js +44 -0
  62. data/csslint/src/rules/rules-count.js +28 -0
  63. data/csslint/src/rules/shorthand.js +87 -0
  64. data/csslint/src/rules/star-property-hack.js +27 -0
  65. data/csslint/src/rules/text-indent.js +53 -0
  66. data/csslint/src/rules/underscore-property-hack.js +27 -0
  67. data/csslint/src/rules/unique-headings.js +74 -0
  68. data/csslint/src/rules/universal-selector.js +35 -0
  69. data/csslint/src/rules/unqualified-attributes.js +42 -0
  70. data/csslint/src/rules/vendor-prefix.js +143 -0
  71. data/csslint/src/rules/zero-units.js +34 -0
  72. data/csslint/src/worker/Worker.js +26 -0
  73. data/csslint/tests/all-rules.js +64 -0
  74. data/csslint/tests/core/CSSLint.js +22 -0
  75. data/csslint/tests/core/Reporter.js +36 -0
  76. data/csslint/tests/css/width-100.html +76 -0
  77. data/csslint/tests/formatters/checkstyle-xml.js +44 -0
  78. data/csslint/tests/formatters/compact.js +47 -0
  79. data/csslint/tests/formatters/csslint-xml.js +42 -0
  80. data/csslint/tests/formatters/lint-xml.js +43 -0
  81. data/csslint/tests/formatters/text.js +36 -0
  82. data/csslint/tests/rules/adjoining-classes.js +31 -0
  83. data/csslint/tests/rules/box-model.js +211 -0
  84. data/csslint/tests/rules/box-sizing.js +23 -0
  85. data/csslint/tests/rules/compatible-vendor-prefixes.js +56 -0
  86. data/csslint/tests/rules/display-property-grouping.js +213 -0
  87. data/csslint/tests/rules/duplicate-background-images.js +25 -0
  88. data/csslint/tests/rules/duplicate-properties.js +54 -0
  89. data/csslint/tests/rules/empty-rules.js +18 -0
  90. data/csslint/tests/rules/errors.js +17 -0
  91. data/csslint/tests/rules/fallback-colors.js +162 -0
  92. data/csslint/tests/rules/floats.js +35 -0
  93. data/csslint/tests/rules/font-faces.js +28 -0
  94. data/csslint/tests/rules/font-sizes.js +30 -0
  95. data/csslint/tests/rules/gradients.js +60 -0
  96. data/csslint/tests/rules/ids.js +25 -0
  97. data/csslint/tests/rules/import.js +18 -0
  98. data/csslint/tests/rules/important.js +27 -0
  99. data/csslint/tests/rules/known-properties.js +44 -0
  100. data/csslint/tests/rules/outline-none.js +50 -0
  101. data/csslint/tests/rules/overqualified-elements.js +41 -0
  102. data/csslint/tests/rules/qualified-headings.js +19 -0
  103. data/csslint/tests/rules/regex-selectors.js +52 -0
  104. data/csslint/tests/rules/shorthand.js +36 -0
  105. data/csslint/tests/rules/star-property-hack.js +24 -0
  106. data/csslint/tests/rules/text-indent.js +55 -0
  107. data/csslint/tests/rules/underscore-property-hack.js +24 -0
  108. data/csslint/tests/rules/unique-headings.js +47 -0
  109. data/csslint/tests/rules/universal-selector.js +31 -0
  110. data/csslint/tests/rules/unqualified-attributes.js +37 -0
  111. data/csslint/tests/rules/vendor-prefix.js +76 -0
  112. data/csslint/tests/rules/zero-units.js +44 -0
  113. data/csslint/tests/testrunner.htm +138 -0
  114. data/js.jar +0 -0
  115. data/lib/ruby_css_lint.rb +168 -0
  116. data/test/helper.rb +17 -0
  117. data/test/test_ruby_css_lint.rb +7 -0
  118. metadata +240 -0
@@ -0,0 +1,211 @@
1
+ (function(){
2
+
3
+ /*global YUITest, CSSLint*/
4
+ var Assert = YUITest.Assert;
5
+
6
+ YUITest.TestRunner.add(new YUITest.TestCase({
7
+
8
+ name: "Box Model Rule Errors",
9
+
10
+ "Using width and padding should result in a warning": function(){
11
+ var result = CSSLint.verify(".foo { width: 100px; padding: 10px; }", { "box-model": 1 });
12
+ Assert.areEqual(1, result.messages.length);
13
+ Assert.areEqual("warning", result.messages[0].type);
14
+ Assert.areEqual("Using width with padding can sometimes make elements larger than you expect.", result.messages[0].message);
15
+ },
16
+
17
+ "Using width when padding is zero should not result in a warning": function(){
18
+ var result = CSSLint.verify(".foo { width: 100px; padding: 0; }", { "box-model": 1 });
19
+ Assert.areEqual(0, result.messages.length);
20
+ },
21
+
22
+ "Using width and padding-left should result in a warning": function(){
23
+ var result = CSSLint.verify(".foo { width: 100px; padding-left: 10px; }", { "box-model": 1 });
24
+ Assert.areEqual(1, result.messages.length);
25
+ Assert.areEqual("warning", result.messages[0].type);
26
+ Assert.areEqual("Using width with padding-left can sometimes make elements larger than you expect.", result.messages[0].message);
27
+ },
28
+
29
+ "Using width when padding-left is zero should not result in a warning": function(){
30
+ var result = CSSLint.verify(".foo { width: 100px; padding-left: 0; }", { "box-model": 1 });
31
+ Assert.areEqual(0, result.messages.length);
32
+ },
33
+
34
+ "Using width and padding-right should result in a warning": function(){
35
+ var result = CSSLint.verify(".foo { width: 100px; padding-right: 10px; }", { "box-model": 1 });
36
+ Assert.areEqual(1, result.messages.length);
37
+ Assert.areEqual("warning", result.messages[0].type);
38
+ Assert.areEqual("Using width with padding-right can sometimes make elements larger than you expect.", result.messages[0].message);
39
+ },
40
+
41
+ "Using width when padding-right is zero should not result in a warning": function(){
42
+ var result = CSSLint.verify(".foo { width: 100px; padding-right: 0; }", { "box-model": 1 });
43
+ Assert.areEqual(0, result.messages.length);
44
+ },
45
+
46
+ "Using width and padding-top should not result in a warning": function(){
47
+ var result = CSSLint.verify(".foo { width: 100px; padding-top: 10px; }", { "box-model": 1 });
48
+ Assert.areEqual(0, result.messages.length);
49
+ },
50
+
51
+ "Using width and padding-bottom should not result in a warning": function(){
52
+ var result = CSSLint.verify(".foo { width: 100px; padding-bottom: 10px; }", { "box-model": 1 });
53
+ Assert.areEqual(0, result.messages.length);
54
+ },
55
+
56
+ "Using width and padding-to-bottom should not result in a warning": function(){
57
+ var result = CSSLint.verify(".foo { width: 100px; padding: 10px 0; }", { "box-model": 1 });
58
+ Assert.areEqual(0, result.messages.length);
59
+ },
60
+
61
+ "Using width and border should result in a warning": function(){
62
+ var result = CSSLint.verify(".foo { width: 100px; border: 10px; }", { "box-model": 1 });
63
+ Assert.areEqual(1, result.messages.length);
64
+ Assert.areEqual("warning", result.messages[0].type);
65
+ Assert.areEqual("Using width with border can sometimes make elements larger than you expect.", result.messages[0].message);
66
+ },
67
+
68
+ "Using width and border-left should result in a warning": function(){
69
+ var result = CSSLint.verify(".foo { width: 100px; border-left: 10px; }", { "box-model": 1 });
70
+ Assert.areEqual(1, result.messages.length);
71
+ Assert.areEqual("warning", result.messages[0].type);
72
+ Assert.areEqual("Using width with border-left can sometimes make elements larger than you expect.", result.messages[0].message);
73
+ },
74
+
75
+ "Using width when border-left is zero should not result in a warning": function(){
76
+ var result = CSSLint.verify(".foo { width: 100px; border-left: 0; }", { "box-model": 1 });
77
+ Assert.areEqual(0, result.messages.length);
78
+ },
79
+
80
+ "Using width and border-right should result in a warning": function(){
81
+ var result = CSSLint.verify(".foo { width: 100px; border-right: 10px; }", { "box-model": 1 });
82
+ Assert.areEqual(1, result.messages.length);
83
+ Assert.areEqual("warning", result.messages[0].type);
84
+ Assert.areEqual("Using width with border-right can sometimes make elements larger than you expect.", result.messages[0].message);
85
+ },
86
+
87
+ "Using width when border-right is zero should not result in a warning": function(){
88
+ var result = CSSLint.verify(".foo { width: 100px; border-right: 0; }", { "box-model": 1 });
89
+ Assert.areEqual(0, result.messages.length);
90
+ },
91
+
92
+ "Using width and border-top should not result in a warning": function(){
93
+ var result = CSSLint.verify(".foo { width: 100px; border-top: 10px; }", { "box-model": 1 });
94
+ Assert.areEqual(0, result.messages.length);
95
+ },
96
+
97
+ "Using width and border-bottom should not result in a warning": function(){
98
+ var result = CSSLint.verify(".foo { width: 100px; border-bottom: 10px; }", { "box-model": 1 });
99
+ Assert.areEqual(0, result.messages.length);
100
+ },
101
+
102
+ "Using height and padding should result in a warning": function(){
103
+ var result = CSSLint.verify(".foo { height: 100px; padding: 10px; }", { "box-model": 1 });
104
+ Assert.areEqual(1, result.messages.length);
105
+ Assert.areEqual("warning", result.messages[0].type);
106
+ Assert.areEqual("Using height with padding can sometimes make elements larger than you expect.", result.messages[0].message);
107
+ },
108
+
109
+ "Using height when padding is zero should not result in a warning": function(){
110
+ var result = CSSLint.verify(".foo { height: 100px; padding: 0; }", { "box-model": 1 });
111
+ Assert.areEqual(0, result.messages.length);
112
+ },
113
+
114
+ "Using height and padding-left should not result in a warning": function(){
115
+ var result = CSSLint.verify(".foo { height: 100px; padding-left: 10px; }", { "box-model": 1 });
116
+ Assert.areEqual(0, result.messages.length);
117
+ },
118
+
119
+ "Using height and padding-right should not result in a warning": function(){
120
+ var result = CSSLint.verify(".foo { height: 100px; padding-right: 10px; }", { "box-model": 1 });
121
+ Assert.areEqual(0, result.messages.length);
122
+ },
123
+
124
+ "Using height and padding-left-right should not result in a warning": function(){
125
+ var result = CSSLint.verify(".foo { height: 100px; padding: 0 10px; }", { "box-model": 1 });
126
+ Assert.areEqual(0, result.messages.length);
127
+ },
128
+
129
+ "Using height and padding-top should result in a warning": function(){
130
+ var result = CSSLint.verify(".foo { height: 100px; padding-top: 10px; }", { "box-model": 1 });
131
+ Assert.areEqual(1, result.messages.length);
132
+ Assert.areEqual("warning", result.messages[0].type);
133
+ Assert.areEqual("Using height with padding-top can sometimes make elements larger than you expect.", result.messages[0].message);
134
+ },
135
+
136
+ "Using height when padding-top is zero should not result in a warning": function(){
137
+ var result = CSSLint.verify(".foo { height: 100px; padding-top: 0; }", { "box-model": 1 });
138
+ Assert.areEqual(0, result.messages.length);
139
+ },
140
+
141
+ "Using height and padding-bottom should result in a warning": function(){
142
+ var result = CSSLint.verify(".foo { height: 100px; padding-bottom: 10px; }", { "box-model": 1 });
143
+ Assert.areEqual(1, result.messages.length);
144
+ Assert.areEqual("warning", result.messages[0].type);
145
+ Assert.areEqual("Using height with padding-bottom can sometimes make elements larger than you expect.", result.messages[0].message);
146
+ },
147
+
148
+ "Using height when padding-bottom is zero should not result in a warning": function(){
149
+ var result = CSSLint.verify(".foo { height: 100px; padding-bottom: 0; }", { "box-model": 1 });
150
+ Assert.areEqual(0, result.messages.length);
151
+ },
152
+
153
+ "Using height and border should result in a warning": function(){
154
+ var result = CSSLint.verify(".foo { height: 100px; border: 10px; }", { "box-model": 1 });
155
+ Assert.areEqual(1, result.messages.length);
156
+ Assert.areEqual("warning", result.messages[0].type);
157
+ Assert.areEqual("Using height with border can sometimes make elements larger than you expect.", result.messages[0].message);
158
+ },
159
+
160
+ "Using height and border: none should not result in a warning": function(){
161
+ var result = CSSLint.verify(".foo { height: 100px; border: none; }", { "box-model": 1 });
162
+ Assert.areEqual(0, result.messages.length);
163
+ },
164
+
165
+ "Using height and border: 0 should not result in a warning": function(){
166
+ var result = CSSLint.verify(".foo { height: 100px; border: 0; }", { "box-model": 1 });
167
+ Assert.areEqual(0, result.messages.length);
168
+ },
169
+
170
+ "Using height and border-left should not result in a warning": function(){
171
+ var result = CSSLint.verify(".foo { height: 100px; border-left: 10px; }", { "box-model": 1 });
172
+ Assert.areEqual(0, result.messages.length);
173
+ },
174
+
175
+ "Using height and border-right should not result in a warning": function(){
176
+ var result = CSSLint.verify(".foo { height: 100px; border-right: 10px; }", { "box-model": 1 });
177
+ Assert.areEqual(0, result.messages.length);
178
+ },
179
+
180
+ "Using height and border-top should result in a warning": function(){
181
+ var result = CSSLint.verify(".foo { height: 100px; border-top: 10px; }", { "box-model": 1 });
182
+ Assert.areEqual(1, result.messages.length);
183
+ Assert.areEqual("warning", result.messages[0].type);
184
+ Assert.areEqual("Using height with border-top can sometimes make elements larger than you expect.", result.messages[0].message);
185
+ },
186
+
187
+ "Using height when border-top is zero should not result in a warning": function(){
188
+ var result = CSSLint.verify(".foo { height: 100px; border-top: 0; }", { "box-model": 1 });
189
+ Assert.areEqual(0, result.messages.length);
190
+ },
191
+
192
+ "Using height and border-bottom should result in a warning": function(){
193
+ var result = CSSLint.verify(".foo { height: 100px; border-bottom: 10px; }", { "box-model": 1 });
194
+ Assert.areEqual(1, result.messages.length);
195
+ Assert.areEqual("warning", result.messages[0].type);
196
+ Assert.areEqual("Using height with border-bottom can sometimes make elements larger than you expect.", result.messages[0].message);
197
+ },
198
+
199
+ "Using height when border-bottom is zero should not result in a warning": function(){
200
+ var result = CSSLint.verify(".foo { height: 100px; border-bottom: 0px; }", { "box-model": 1 });
201
+ Assert.areEqual(0, result.messages.length);
202
+ },
203
+
204
+ "Using height when border-bottom is zero should not result in a warning": function(){
205
+ var result = CSSLint.verify(".foo { height: 100px; border-bottom: 0; }", { "box-model": 1 });
206
+ Assert.areEqual(0, result.messages.length);
207
+ }
208
+
209
+ }));
210
+
211
+ })();
@@ -0,0 +1,23 @@
1
+ (function(){
2
+
3
+ /*global YUITest, CSSLint*/
4
+ var Assert = YUITest.Assert;
5
+
6
+ YUITest.TestRunner.add(new YUITest.TestCase({
7
+
8
+ name: "Box Sizing Rule Errors",
9
+
10
+ "Using box-sizing should result in a warning": function(){
11
+ var result = CSSLint.verify(".foo { box-sizing: border-box; }", { "box-sizing": 1 });
12
+ Assert.areEqual(1, result.messages.length);
13
+ Assert.areEqual("warning", result.messages[0].type);
14
+ Assert.areEqual("The box-sizing property isn't supported in IE6 and IE7.", result.messages[0].message);
15
+ },
16
+
17
+ "No box-sizing should not result in a warning": function(){
18
+ var result = CSSLint.verify(".foo { width: 100px; padding: 0; }", { "box-sizing": 1 });
19
+ Assert.areEqual(0, result.messages.length);
20
+ }
21
+ }));
22
+
23
+ })();
@@ -0,0 +1,56 @@
1
+ (function(){
2
+
3
+ /*global YUITest, CSSLint*/
4
+ var Assert = YUITest.Assert;
5
+
6
+ YUITest.TestRunner.add(new YUITest.TestCase({
7
+
8
+ name: "Compatible Vendor Prefix Warnings",
9
+
10
+ "Using -webkit-border-radius should warn to also include -moz-border-radius.": function(){
11
+ var result = CSSLint.verify("h1 { -webkit-border-radius: 5px; }", { "compatible-vendor-prefixes": 1 });
12
+ Assert.areEqual(1, result.messages.length);
13
+ Assert.areEqual("warning", result.messages[0].type);
14
+ Assert.areEqual("The property -moz-border-radius is compatible with -webkit-border-radius and should be included as well.", result.messages[0].message);
15
+ Assert.areEqual(6, result.messages[0].col);
16
+ Assert.areEqual(1, result.messages[0].line);
17
+ },
18
+
19
+ "Using -webkit-transition and -moz-transition should warn to also include -o-transition and -ms-transition.": function(){
20
+ var result = CSSLint.verify("h1 { -webkit-transition: height 20px 1s; -moz-transition: height 20px 1s; }", { "compatible-vendor-prefixes": 1 });
21
+ Assert.areEqual(2, result.messages.length);
22
+ Assert.areEqual("warning", result.messages[0].type);
23
+ Assert.areEqual("The property -o-transition is compatible with -webkit-transition and -moz-transition and should be included as well.", result.messages[0].message);
24
+ Assert.areEqual(6, result.messages[0].col);
25
+ Assert.areEqual(1, result.messages[0].line);
26
+ Assert.areEqual("warning", result.messages[1].type);
27
+ Assert.areEqual("The property -ms-transition is compatible with -webkit-transition and -moz-transition and should be included as well.", result.messages[1].message);
28
+ Assert.areEqual(6, result.messages[1].col);
29
+ Assert.areEqual(1, result.messages[1].line);
30
+
31
+ },
32
+
33
+ "Using -webkit-transform should warn to also include -moz-transform, -ms-transform, and -o-transform.": function(){
34
+ var result = CSSLint.verify("div.box { -webkit-transform: translate(50px, 100px); }", { "compatible-vendor-prefixes": 3 });
35
+ Assert.areEqual(3, result.messages.length);
36
+ Assert.areEqual("warning", result.messages[0].type);
37
+ Assert.areEqual("The property -moz-transform is compatible with -webkit-transform and should be included as well.", result.messages[0].message);
38
+ Assert.areEqual("warning", result.messages[1].type);
39
+ Assert.areEqual("The property -ms-transform is compatible with -webkit-transform and should be included as well.", result.messages[1].message);
40
+ Assert.areEqual("warning", result.messages[2].type);
41
+ Assert.areEqual("The property -o-transform is compatible with -webkit-transform and should be included as well.", result.messages[2].message);
42
+ },
43
+
44
+ "Using all compatible vendor prefixes for animation should be allowed with no warnings.": function(){
45
+ var result = CSSLint.verify(".next:focus { -moz-animation: 'diagonal-slide' 5s 10; -webkit-animation: 'diagonal-slide' 5s 10; -ms-animation: 'diagonal-slide' 5s 10; }", { "compatible-vendor-prefixes": 0 });
46
+ Assert.areEqual(0, result.messages.length);
47
+ },
48
+
49
+ "Using box-shadow with no vendor prefixes should be allowed with no warnings.": function(){
50
+ var result = CSSLint.verify("h1 { box-shadow: 5px 5px 5px #ccc; }", { "compatible-vendor-prefixes": 0 });
51
+ Assert.areEqual(0, result.messages.length);
52
+ }
53
+
54
+ }));
55
+
56
+ })();
@@ -0,0 +1,213 @@
1
+ (function(){
2
+
3
+ /*global YUITest, CSSLint*/
4
+ var Assert = YUITest.Assert;
5
+
6
+ YUITest.TestRunner.add(new YUITest.TestCase({
7
+
8
+ name: "Display Property Grouping Rule Errors",
9
+
10
+ /*
11
+ * - float should not be used with inline-block
12
+ * - height, width, margin-top, margin-bottom, float should not be used with inline
13
+ * - vertical-align should not be used with block
14
+ * - margin, float should not be used with table-*
15
+ */
16
+ "Float with inline-block should result in a warning": function(){
17
+ var result = CSSLint.verify(".foo { float: left; display: inline-block; }", { "display-property-grouping": 1 });
18
+ Assert.areEqual(1, result.messages.length);
19
+ Assert.areEqual("warning", result.messages[0].type);
20
+ Assert.areEqual("float can't be used with display: inline-block.", result.messages[0].message);
21
+ },
22
+
23
+ "Float with inline should result in a warning": function(){
24
+ var result = CSSLint.verify(".foo { float: left; display: inline; }", { "display-property-grouping": 1 });
25
+ Assert.areEqual(1, result.messages.length);
26
+ Assert.areEqual("warning", result.messages[0].type);
27
+ Assert.areEqual("display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).", result.messages[0].message);
28
+ },
29
+
30
+ "Float:none with inline-block should not result in a warning": function(){
31
+ var result = CSSLint.verify(".foo { float: none; display: inline-block; }", { "display-property-grouping": 1 });
32
+ Assert.areEqual(0, result.messages.length);
33
+ },
34
+
35
+ "Float:none with inline should result not in a warning": function(){
36
+ var result = CSSLint.verify(".foo { float: none; display: inline; }", { "display-property-grouping": 1 });
37
+ Assert.areEqual(0, result.messages.length);
38
+ },
39
+
40
+ "Height with inline should result in a warning": function(){
41
+ var result = CSSLint.verify(".foo { height: 100px; display: inline; }", { "display-property-grouping": 1 });
42
+ Assert.areEqual(1, result.messages.length);
43
+ Assert.areEqual("warning", result.messages[0].type);
44
+ Assert.areEqual("height can't be used with display: inline.", result.messages[0].message);
45
+ },
46
+
47
+ "Width with inline should result in a warning": function(){
48
+ var result = CSSLint.verify(".foo { width: 100px; display: inline; }", { "display-property-grouping": 1 });
49
+ Assert.areEqual(1, result.messages.length);
50
+ Assert.areEqual("warning", result.messages[0].type);
51
+ Assert.areEqual("width can't be used with display: inline.", result.messages[0].message);
52
+ },
53
+
54
+ "Margin with inline should result in a warning": function(){
55
+ var result = CSSLint.verify(".foo { margin: 100px; display: inline; }", { "display-property-grouping": 1 });
56
+ Assert.areEqual(1, result.messages.length);
57
+ Assert.areEqual("warning", result.messages[0].type);
58
+ Assert.areEqual("margin can't be used with display: inline.", result.messages[0].message);
59
+ },
60
+
61
+ "Margin-left with inline should not result in a warning": function(){
62
+ var result = CSSLint.verify(".foo { margin-left: 100px; display: inline; }", { "display-property-grouping": 1 });
63
+ Assert.areEqual(0, result.messages.length);
64
+ },
65
+
66
+ "Margin-right with inline should not result in a warning": function(){
67
+ var result = CSSLint.verify(".foo { margin-right: 100px; display: inline; }", { "display-property-grouping": 1 });
68
+ Assert.areEqual(0, result.messages.length);
69
+ },
70
+
71
+ "Margin-top with inline should result in a warning": function(){
72
+ var result = CSSLint.verify(".foo { margin-top: 100px; display: inline; }", { "display-property-grouping": 1 });
73
+ Assert.areEqual(1, result.messages.length);
74
+ Assert.areEqual("warning", result.messages[0].type);
75
+ Assert.areEqual("margin-top can't be used with display: inline.", result.messages[0].message);
76
+ },
77
+
78
+ "Margin-bottom with inline should result in a warning": function(){
79
+ var result = CSSLint.verify(".foo { margin-bottom: 100px; display: inline; }", { "display-property-grouping": 1 });
80
+ Assert.areEqual(1, result.messages.length);
81
+ Assert.areEqual("warning", result.messages[0].type);
82
+ Assert.areEqual("margin-bottom can't be used with display: inline.", result.messages[0].message);
83
+ },
84
+
85
+ "Padding with inline should not result in a warning": function(){
86
+ var result = CSSLint.verify(".foo { padding: 100px; display: inline; }", { "display-property-grouping": 1 });
87
+ Assert.areEqual(0, result.messages.length);
88
+ },
89
+
90
+ "Padding-left with inline should not result in a warning": function(){
91
+ var result = CSSLint.verify(".foo { padding-left: 100px; display: inline; }", { "display-property-grouping": 1 });
92
+ Assert.areEqual(0, result.messages.length);
93
+ },
94
+
95
+ "Padding-right with inline should not result in a warning": function(){
96
+ var result = CSSLint.verify(".foo { padding-right: 100px; display: inline; }", { "display-property-grouping": 1 });
97
+ Assert.areEqual(0, result.messages.length);
98
+ },
99
+
100
+ "Padding-top with inline should not result in a warning": function(){
101
+ var result = CSSLint.verify(".foo { padding-top: 100px; display: inline; }", { "display-property-grouping": 1 });
102
+ Assert.areEqual(0, result.messages.length);
103
+ },
104
+
105
+ "Padding-bottom with inline should result in a warning": function(){
106
+ var result = CSSLint.verify(".foo { padding-bottom: 100px; display: inline; }", { "display-property-grouping": 1 });
107
+ Assert.areEqual(0, result.messages.length);
108
+ },
109
+
110
+ "Vertical-align with block should result in a warning": function(){
111
+ var result = CSSLint.verify(".foo { vertical-align: bottom; display: block; }", { "display-property-grouping": 1 });
112
+ Assert.areEqual(1, result.messages.length);
113
+ Assert.areEqual("warning", result.messages[0].type);
114
+ Assert.areEqual("vertical-align can't be used with display: block.", result.messages[0].message);
115
+ },
116
+
117
+ "Margin with table-cell should result in a warning": function(){
118
+ var result = CSSLint.verify(".foo { margin: 100px; display: table-cell; }", { "display-property-grouping": 1 });
119
+ Assert.areEqual(1, result.messages.length);
120
+ Assert.areEqual("warning", result.messages[0].type);
121
+ Assert.areEqual("margin can't be used with display: table-cell.", result.messages[0].message);
122
+ },
123
+
124
+ "Margin-left with table-cell should result in a warning": function(){
125
+ var result = CSSLint.verify(".foo { margin-left: 100px; display: table-cell; }", { "display-property-grouping": 1 });
126
+ Assert.areEqual(1, result.messages.length);
127
+ Assert.areEqual("warning", result.messages[0].type);
128
+ Assert.areEqual("margin-left can't be used with display: table-cell.", result.messages[0].message);
129
+ },
130
+
131
+ "Margin-right with table-cell should result in a warning": function(){
132
+ var result = CSSLint.verify(".foo { margin-right: 100px; display: table-cell; }", { "display-property-grouping": 1 });
133
+ Assert.areEqual(1, result.messages.length);
134
+ Assert.areEqual("warning", result.messages[0].type);
135
+ Assert.areEqual("margin-right can't be used with display: table-cell.", result.messages[0].message);
136
+ },
137
+
138
+ "Margin-top with table-cell should result in a warning": function(){
139
+ var result = CSSLint.verify(".foo { margin-top: 100px; display: table-cell; }", { "display-property-grouping": 1 });
140
+ Assert.areEqual(1, result.messages.length);
141
+ Assert.areEqual("warning", result.messages[0].type);
142
+ Assert.areEqual("margin-top can't be used with display: table-cell.", result.messages[0].message);
143
+ },
144
+
145
+ "Margin-bottom with table-cell should result in a warning": function(){
146
+ var result = CSSLint.verify(".foo { margin-bottom: 100px; display: table-cell; }", { "display-property-grouping": 1 });
147
+ Assert.areEqual(1, result.messages.length);
148
+ Assert.areEqual("warning", result.messages[0].type);
149
+ Assert.areEqual("margin-bottom can't be used with display: table-cell.", result.messages[0].message);
150
+ },
151
+
152
+ "Margin with table-row should result in a warning": function(){
153
+ var result = CSSLint.verify(".foo { margin: 100px; display: table-row; }", { "display-property-grouping": 1 });
154
+ Assert.areEqual(1, result.messages.length);
155
+ Assert.areEqual("warning", result.messages[0].type);
156
+ Assert.areEqual("margin can't be used with display: table-row.", result.messages[0].message);
157
+ },
158
+
159
+ "Margin-left with table-row should result in a warning": function(){
160
+ var result = CSSLint.verify(".foo { margin-left: 100px; display: table-row; }", { "display-property-grouping": 1 });
161
+ Assert.areEqual(1, result.messages.length);
162
+ Assert.areEqual("warning", result.messages[0].type);
163
+ Assert.areEqual("margin-left can't be used with display: table-row.", result.messages[0].message);
164
+ },
165
+
166
+ "Margin-right with table-row should result in a warning": function(){
167
+ var result = CSSLint.verify(".foo { margin-right: 100px; display: table-row; }", { "display-property-grouping": 1 });
168
+ Assert.areEqual(1, result.messages.length);
169
+ Assert.areEqual("warning", result.messages[0].type);
170
+ Assert.areEqual("margin-right can't be used with display: table-row.", result.messages[0].message);
171
+ },
172
+
173
+ "Margin-top with table-row should result in a warning": function(){
174
+ var result = CSSLint.verify(".foo { margin-top: 100px; display: table-row; }", { "display-property-grouping": 1 });
175
+ Assert.areEqual(1, result.messages.length);
176
+ Assert.areEqual("warning", result.messages[0].type);
177
+ Assert.areEqual("margin-top can't be used with display: table-row.", result.messages[0].message);
178
+ },
179
+
180
+ "Margin-bottom with table-row should result in a warning": function(){
181
+ var result = CSSLint.verify(".foo { margin-bottom: 100px; display: table-row; }", { "display-property-grouping": 1 });
182
+ Assert.areEqual(1, result.messages.length);
183
+ Assert.areEqual("warning", result.messages[0].type);
184
+ Assert.areEqual("margin-bottom can't be used with display: table-row.", result.messages[0].message);
185
+ },
186
+
187
+ "Float with table-row should result in a warning": function(){
188
+ var result = CSSLint.verify(".foo { float: left; display: table-row; }", { "display-property-grouping": 1 });
189
+ Assert.areEqual(1, result.messages.length);
190
+ Assert.areEqual("warning", result.messages[0].type);
191
+ Assert.areEqual("float can't be used with display: table-row.", result.messages[0].message);
192
+ },
193
+
194
+ "Float with table-cell should result in a warning": function(){
195
+ var result = CSSLint.verify(".foo { float: left; display: table-cell; }", { "display-property-grouping": 1 });
196
+ Assert.areEqual(1, result.messages.length);
197
+ Assert.areEqual("warning", result.messages[0].type);
198
+ Assert.areEqual("float can't be used with display: table-cell.", result.messages[0].message);
199
+ },
200
+
201
+ "Float:none with table-row should not result in a warning": function(){
202
+ var result = CSSLint.verify(".foo { float: none; display: table-row; }", { "display-property-grouping": 1 });
203
+ Assert.areEqual(0, result.messages.length);
204
+ },
205
+
206
+ "Float:none with table-cell should not result in a warning": function(){
207
+ var result = CSSLint.verify(".foo { float: none; display: table-cell; }", { "display-property-grouping": 1 });
208
+ Assert.areEqual(0, result.messages.length);
209
+ }
210
+
211
+ }));
212
+
213
+ })();