mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-28 23:31:56 +00:00
51323f232a
The actors/styles.js file contained two actors. This change moves each actor in its own file. A shared actors/utils/style-utils file is also created to host shared helpers. Differential Revision: https://phabricator.services.mozilla.com/D95297
143 lines
3.2 KiB
JavaScript
143 lines
3.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { getRuleText } = require("devtools/server/actors/utils/style-utils");
|
|
|
|
const TEST_DATA = [
|
|
{
|
|
desc: "Empty input",
|
|
input: "",
|
|
line: 1,
|
|
column: 1,
|
|
throws: true,
|
|
},
|
|
{
|
|
desc: "Simplest test case",
|
|
input: "#id{color:red;background:yellow;}",
|
|
line: 1,
|
|
column: 1,
|
|
expected: { offset: 4, text: "color:red;background:yellow;" },
|
|
},
|
|
{
|
|
desc: "Multiple rules test case",
|
|
input:
|
|
"#id{color:red;background:yellow;}.class-one .class-two " +
|
|
"{ position:absolute; line-height: 45px}",
|
|
line: 1,
|
|
column: 34,
|
|
expected: { offset: 56, text: " position:absolute; line-height: 45px" },
|
|
},
|
|
{
|
|
desc: "Unclosed rule",
|
|
input: "#id{color:red;background:yellow;",
|
|
line: 1,
|
|
column: 1,
|
|
expected: { offset: 4, text: "color:red;background:yellow;" },
|
|
},
|
|
{
|
|
desc: "Null input",
|
|
input: null,
|
|
line: 1,
|
|
column: 1,
|
|
throws: true,
|
|
},
|
|
{
|
|
desc: "Missing loc",
|
|
input: "#id{color:red;background:yellow;}",
|
|
throws: true,
|
|
},
|
|
{
|
|
desc: "Multi-lines CSS",
|
|
input: [
|
|
"/* this is a multi line css */",
|
|
"body {",
|
|
" color: green;",
|
|
" background-repeat: no-repeat",
|
|
"}",
|
|
" /*something else here */",
|
|
"* {",
|
|
" color: purple;",
|
|
"}",
|
|
].join("\n"),
|
|
line: 7,
|
|
column: 1,
|
|
expected: { offset: 116, text: "\n color: purple;\n" },
|
|
},
|
|
{
|
|
desc: "Multi-lines CSS and multi-line rule",
|
|
input: [
|
|
"/* ",
|
|
"* some comments",
|
|
"*/",
|
|
"",
|
|
"body {",
|
|
" margin: 0;",
|
|
" padding: 15px 15px 2px 15px;",
|
|
" color: red;",
|
|
"}",
|
|
"",
|
|
"#header .btn, #header .txt {",
|
|
" font-size: 100%;",
|
|
"}",
|
|
"",
|
|
"#header #information {",
|
|
" color: #dddddd;",
|
|
" font-size: small;",
|
|
"}",
|
|
].join("\n"),
|
|
line: 5,
|
|
column: 1,
|
|
expected: {
|
|
offset: 30,
|
|
text:
|
|
"\n margin: 0;\n padding: 15px 15px 2px 15px;\n color: red;\n",
|
|
},
|
|
},
|
|
{
|
|
desc: "Content string containing a } character",
|
|
input: " #id{border:1px solid red;content: '}';color:red;}",
|
|
line: 1,
|
|
column: 4,
|
|
expected: {
|
|
offset: 7,
|
|
text: "border:1px solid red;content: '}';color:red;",
|
|
},
|
|
},
|
|
{
|
|
desc: "Rule contains no tokens",
|
|
input: "div{}",
|
|
line: 1,
|
|
column: 1,
|
|
expected: { offset: 4, text: "" },
|
|
},
|
|
];
|
|
|
|
function run_test() {
|
|
for (const test of TEST_DATA) {
|
|
info("Starting test: " + test.desc);
|
|
info("Input string " + test.input);
|
|
let output;
|
|
try {
|
|
output = getRuleText(test.input, test.line, test.column);
|
|
if (test.throws) {
|
|
info("Test should have thrown");
|
|
Assert.ok(false);
|
|
}
|
|
} catch (e) {
|
|
info("getRuleText threw an exception with the given input string");
|
|
if (test.throws) {
|
|
info("Exception expected");
|
|
Assert.ok(true);
|
|
} else {
|
|
info("Exception unexpected\n" + e);
|
|
Assert.ok(false);
|
|
}
|
|
}
|
|
if (output) {
|
|
deepEqual(output, test.expected);
|
|
}
|
|
}
|
|
}
|