blob: 3b4fbf51e041c55fbc9b0225c686629921d2ccdc [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests CSSLength.parse, CSSShadowModel.parseTextShadow, and CSSShadowModel.parseBoxShadow.\n`);
await TestRunner.loadModule("inline_editor");
TestRunner.addResult('-----CSSLengths-----');
dumpCSSLength('10px');
dumpCSSLength('10PX');
dumpCSSLength('-10px');
dumpCSSLength('+10px');
dumpCSSLength('10.11px');
dumpCSSLength('.11px');
dumpCSSLength('10e3px');
dumpCSSLength('10E3px');
dumpCSSLength('10.11e3px');
dumpCSSLength('-10.11e-3px');
dumpCSSLength('0px');
dumpCSSLength('0');
dumpCSSLength('-0.0');
dumpCSSLength('+0.0');
dumpCSSLength('0e-3');
// Start invalid lengths.
dumpCSSLength('');
dumpCSSLength('10');
dumpCSSLength('10 px');
dumpCSSLength('10.px');
dumpCSSLength('10pxx');
dumpCSSLength('10.10.10px');
dumpCSSLength('hello10pxhello');
TestRunner.addResult('\n-----Text Shadows-----');
dumpTextShadow('0 0');
dumpTextShadow('1px 2px');
dumpTextShadow('1px 2px black');
dumpTextShadow('1px 2px 2px');
dumpTextShadow('rgb(0, 0, 0) 1px 2px 2px');
dumpTextShadow('1px 2px 2px rgb(0, 0, 0)');
dumpTextShadow('1px 2px black, 0 0 #ffffff');
dumpTextShadow('1px -2px black, 0 0 rgb(0, 0, 0), 3px 3.5px 3px');
// Start invalid text shadows.
dumpTextShadow('');
dumpTextShadow('0');
dumpTextShadow('1 2 black');
dumpTextShadow('1px black 2px');
dumpTextShadow('1px 2px 2px 3px');
dumpTextShadow('inset 1px 2px 2px');
dumpTextShadow('red 1px 2px 2px red');
dumpTextShadow('1px 2px rgb(0, 0, 0) 2px');
dumpTextShadow('hello 1px 2px');
dumpTextShadow('1px 2px black 0 0 #ffffff');
dumpTextShadow('1px2px');
dumpTextShadow('1px 2pxrgb(0, 0, 0)');
dumpTextShadow('1px 2px black,, 0 0 #ffffff');
TestRunner.addResult('\n-----Box Shadows-----');
dumpBoxShadow('0 0');
dumpBoxShadow('1px 2px');
dumpBoxShadow('1px 2px black');
dumpBoxShadow('1px 2px 2px');
dumpBoxShadow('1px 2px 2px 3px');
dumpBoxShadow('inset 1px 2px');
dumpBoxShadow('1px 2px inset');
dumpBoxShadow('INSET 1px 2px 2px 3px');
dumpBoxShadow('rgb(0, 0, 0) 1px 2px 2px');
dumpBoxShadow('inset rgb(0, 0, 0) 1px 2px 2px');
dumpBoxShadow('inset 1px 2px 2px 3px rgb(0, 0, 0)');
dumpBoxShadow('1px 2px 2px 3px rgb(0, 0, 0) inset');
dumpBoxShadow('1px 2px black, inset 0 0 #ffffff');
dumpBoxShadow('1px -2px black, inset 0 0 rgb(0, 0, 0), 3px 3.5px 3px 4px');
// Start invalid box shadows.
dumpBoxShadow('');
dumpBoxShadow('0');
dumpBoxShadow('1 2 black');
dumpBoxShadow('1px black 2px');
dumpBoxShadow('1px 2px 2px 3px 4px');
dumpBoxShadow('1px 2px 2px inset 3px');
dumpBoxShadow('inset 1px 2px 2px inset');
dumpBoxShadow('1px 2px rgb(0, 0, 0) 2px');
dumpBoxShadow('hello 1px 2px');
dumpBoxShadow('1px 2px black 0 0 #ffffff');
dumpBoxShadow('1px2px');
dumpBoxShadow('1px 2pxrgb(0, 0, 0)');
dumpBoxShadow('1px 2px black,, 0 0 #ffffff');
TestRunner.completeTest();
function dumpCSSLength(lengthText) {
var length = InlineEditor.CSSLength.parse(lengthText);
var statusText = length !== null ? 'Succeeded: ' + length.asCSSText() : 'Failed';
TestRunner.addResult('"' + lengthText + '", Parsing ' + statusText);
}
function dumpTextShadow(shadowText) {
dumpShadow(shadowText, false);
}
function dumpBoxShadow(shadowText) {
dumpShadow(shadowText, true);
}
function dumpShadow(shadowText, isBoxShadow) {
var shadows = isBoxShadow ? InlineEditor.CSSShadowModel.parseBoxShadow(shadowText) :
InlineEditor.CSSShadowModel.parseTextShadow(shadowText);
var output = [];
for (var i = 0; i < shadows.length; i++)
output.push(shadows[i].asCSSText());
var statusText = shadows.length !== 0 ? 'Succeeded: ' + output.join(', ') : 'Failed';
TestRunner.addResult('"' + shadowText + '", Parsing ' + statusText);
}
})();