diff --git a/src/css/Properties.js b/src/css/Properties.js index 0bceae8d..afb74168 100644 --- a/src/css/Properties.js +++ b/src/css/Properties.js @@ -50,7 +50,7 @@ var Properties = { "-o-animation-name" : { multi: "none | ", comma: true }, "-o-animation-play-state" : { multi: "running | paused", comma: true }, - "appearance" : "icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit", + "appearance" : "icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit", "azimuth" : function (expression) { var simple = " | leftwards | rightwards | inherit", direction = "left-side | far-left | left | center-left | center | center-right | right | far-right | right-side", diff --git a/src/css/ValidationTypes.js b/src/css/ValidationTypes.js index 538cd710..a27ab7b6 100644 --- a/src/css/ValidationTypes.js +++ b/src/css/ValidationTypes.js @@ -177,7 +177,7 @@ var ValidationTypes = { }, "": function(part){ - return this[""](part) || this[""](part); + return part.value >= 0 && (this[""](part) || this[""](part)); }, "": function(part){ diff --git a/tests/css/CSSParserTests.htm b/tests/css/CSSParserTests.htm index 0e6f72f5..4c464c43 100644 --- a/tests/css/CSSParserTests.htm +++ b/tests/css/CSSParserTests.htm @@ -1797,6 +1797,50 @@

CSS Parser Tests

}, + testPaddingLeft1: function(){ + var parser = new Parser({ strict: true}); + parser.addListener("property", function(event){ + assert.isNull(event.invalid); + }); + var result = parser.parse(".foo { padding-left: 6px; }"); + + }, + + testPaddingLeft2: function(){ + var parser = new Parser({ strict: true}); + parser.addListener("property", function(event){ + assert.isNull(event.invalid); + }); + var result = parser.parse(".foo { padding-left: 3%; }"); + }, + + testPaddingLeft3: function(){ + var parser = new Parser({ strict: true}); + parser.addListener("property", function(event){ + assert.isNull(event.invalid); + }); + var result = parser.parse(".foo { padding-left: inherit; }"); + + }, + + testInvalidPaddingLeft1: function(){ + var parser = new Parser({ strict: true}); + parser.addListener("property", function(event){ + assert.isNotNull(event.invalid); + assert.areEqual("Expected length greater than 0, percentage greater than 0 or inherit but found '-10px'.", event.invalid.message); + }); + var result = parser.parse(".foo { padding-left: -10px; }"); + }, + + testInvalidPaddingLeft2: function(){ + var parser = new Parser({ strict: true}); + parser.addListener("property", function(event){ + assert.isNotNull(event.invalid); + assert.areEqual("Expected length, percentage or inherit but found 'auto'.", event.invalid.message); + }); + var result = parser.parse(".foo { padding-left: auto; }"); + }, + testBorderWidth1: function(){ var parser = new Parser({ strict: true}); parser.addListener("property", function(event){ diff --git a/tests/css/Validation.js b/tests/css/Validation.js index 53691856..6e8c7d55 100644 --- a/tests/css/Validation.js +++ b/tests/css/Validation.js @@ -1054,6 +1054,21 @@ } })); + suite.add(new ValidationTestCase({ + property: "padding-left", + + valid: [ + "6px", + "3%", + "inherit" + ], + + invalid: { + "-10px" : "Expected ( | inherit) but found '-10px'.", + "auto" : "Expected ( | inherit) but found 'auto'." + } + })); + suite.add(new ValidationTestCase({ property: "will-change",