mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-02-12 13:31:30 +00:00
169 lines
3.4 KiB
JavaScript
169 lines
3.4 KiB
JavaScript
/* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test the functionality of ScriptStore.
|
|
|
|
const ScriptStore = require("devtools/server/actors/utils/ScriptStore");
|
|
|
|
// Fixtures
|
|
|
|
const firstSource = "firstSource";
|
|
const secondSource = "secondSource";
|
|
const thirdSource = "thirdSource";
|
|
|
|
const scripts = new Set([
|
|
{
|
|
url: "a.js",
|
|
source: firstSource,
|
|
startLine: 1,
|
|
lineCount: 100,
|
|
global: "g1"
|
|
},
|
|
{
|
|
url: "a.js",
|
|
source: firstSource,
|
|
startLine: 1,
|
|
lineCount: 40,
|
|
global: "g1"
|
|
},
|
|
{
|
|
url: "a.js",
|
|
source: firstSource,
|
|
startLine: 50,
|
|
lineCount: 100,
|
|
global: "g1"
|
|
},
|
|
{
|
|
url: "a.js",
|
|
source: firstSource,
|
|
startLine: 60,
|
|
lineCount: 90,
|
|
global: "g1"
|
|
},
|
|
{
|
|
url: "index.html",
|
|
source: secondSource,
|
|
startLine: 150,
|
|
lineCount: 1,
|
|
global: "g2"
|
|
},
|
|
{
|
|
url: "index.html",
|
|
source: thirdSource,
|
|
startLine: 200,
|
|
lineCount: 100,
|
|
global: "g2"
|
|
},
|
|
{
|
|
url: "index.html",
|
|
source: thirdSource,
|
|
startLine: 250,
|
|
lineCount: 10,
|
|
global: "g2"
|
|
},
|
|
{
|
|
url: "index.html",
|
|
source: thirdSource,
|
|
startLine: 275,
|
|
lineCount: 5,
|
|
global: "g2"
|
|
}
|
|
]);
|
|
|
|
function contains(script, line) {
|
|
return script.startLine <= line &&
|
|
line < script.startLine + script.lineCount;
|
|
}
|
|
|
|
function run_test() {
|
|
testAddScript();
|
|
testAddScripts();
|
|
testGetSources();
|
|
testGetScriptsBySource();
|
|
testGetScriptsBySourceAndLine();
|
|
testGetScriptsByURL();
|
|
testGetScriptsByURLAndLine();
|
|
}
|
|
|
|
function testAddScript() {
|
|
const ss = new ScriptStore();
|
|
|
|
for (let s of scripts) {
|
|
ss.addScript(s);
|
|
}
|
|
|
|
equal(ss.getAllScripts().length, scripts.size);
|
|
|
|
for (let s of ss.getAllScripts()) {
|
|
ok(scripts.has(s));
|
|
}
|
|
}
|
|
|
|
function testAddScripts() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts]);
|
|
|
|
equal(ss.getAllScripts().length, scripts.size);
|
|
|
|
for (let s of ss.getAllScripts()) {
|
|
ok(scripts.has(s));
|
|
}
|
|
}
|
|
|
|
function testGetSources() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts])
|
|
|
|
const expected = new Set([firstSource, secondSource, thirdSource]);
|
|
const actual = ss.getSources();
|
|
equal(expected.size, actual.length);
|
|
|
|
for (let s of actual) {
|
|
ok(expected.has(s));
|
|
expected.delete(s);
|
|
}
|
|
}
|
|
|
|
function testGetScriptsBySource() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts]);
|
|
|
|
const expected = [...scripts].filter(s => s.source === thirdSource);
|
|
const actual = ss.getScriptsBySource(thirdSource);
|
|
|
|
deepEqual(actual, expected);
|
|
}
|
|
|
|
function testGetScriptsBySourceAndLine() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts]);
|
|
|
|
const expected = [...scripts].filter(
|
|
s => s.source === firstSource && contains(s, 65))
|
|
const actual = ss.getScriptsBySourceAndLine(firstSource, 65);
|
|
|
|
deepEqual(actual, expected);
|
|
}
|
|
|
|
function testGetScriptsByURL() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts]);
|
|
|
|
const expected = [...scripts].filter(s => s.url === "index.html");
|
|
const actual = ss.getScriptsByURL("index.html");
|
|
|
|
deepEqual(actual, expected);
|
|
}
|
|
|
|
function testGetScriptsByURLAndLine() {
|
|
const ss = new ScriptStore();
|
|
ss.addScripts([...scripts]);
|
|
|
|
const expected = [...scripts].filter(
|
|
s => s.url === "index.html" && contains(s, 250))
|
|
const actual = ss.getScriptsByURLAndLine("index.html", 250);
|
|
|
|
deepEqual(actual, expected);
|
|
}
|