tenfourfox/devtools/server/tests/unit/test_ScriptStore.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

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);
}