fune/devtools/server/tests/unit/test_breakpoint-actor-map.js
Michael Brennan 8229796378 Bug 1325989 - Resolve ESLint issues in devtools/server/tests/unit. r=jryans
--HG--
extra : rebase_source : 855f1da9fc88af46e8be78c94762a90df29cb75f
2017-03-18 12:26:05 +01:00

185 lines
5.8 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/ */
"use strict";
// Test the functionality of the BreakpointActorMap object.
const { BreakpointActorMap } = require("devtools/server/actors/script");
function run_test() {
test_get_actor();
test_set_actor();
test_delete_actor();
test_find_actors();
test_duplicate_actors();
}
function test_get_actor() {
let bpStore = new BreakpointActorMap();
let location = {
originalSourceActor: { actor: "actor1" },
originalLine: 3
};
let columnLocation = {
originalSourceActor: { actor: "actor2" },
originalLine: 5,
originalColumn: 15
};
// Shouldn't have breakpoint
do_check_eq(null, bpStore.getActor(location),
"Breakpoint not added and shouldn't exist.");
bpStore.setActor(location, {});
do_check_true(!!bpStore.getActor(location),
"Breakpoint added but not found in Breakpoint Store.");
bpStore.deleteActor(location);
do_check_eq(null, bpStore.getActor(location),
"Breakpoint removed but still exists.");
// Same checks for breakpoint with a column
do_check_eq(null, bpStore.getActor(columnLocation),
"Breakpoint with column not added and shouldn't exist.");
bpStore.setActor(columnLocation, {});
do_check_true(!!bpStore.getActor(columnLocation),
"Breakpoint with column added but not found in Breakpoint Store.");
bpStore.deleteActor(columnLocation);
do_check_eq(null, bpStore.getActor(columnLocation),
"Breakpoint with column removed but still exists in Breakpoint Store.");
}
function test_set_actor() {
// Breakpoint with column
let bpStore = new BreakpointActorMap();
let location = {
originalSourceActor: { actor: "actor1" },
originalLine: 10,
originalColumn: 9
};
bpStore.setActor(location, {});
do_check_true(!!bpStore.getActor(location),
"We should have the column breakpoint we just added");
// Breakpoint without column (whole line breakpoint)
location = {
originalSourceActor: { actor: "actor2" },
originalLine: 103
};
bpStore.setActor(location, {});
do_check_true(!!bpStore.getActor(location),
"We should have the whole line breakpoint we just added");
}
function test_delete_actor() {
// Breakpoint with column
let bpStore = new BreakpointActorMap();
let location = {
originalSourceActor: { actor: "actor1" },
originalLine: 10,
originalColumn: 9
};
bpStore.setActor(location, {});
bpStore.deleteActor(location);
do_check_eq(bpStore.getActor(location), null,
"We should not have the column breakpoint anymore");
// Breakpoint without column (whole line breakpoint)
location = {
originalSourceActor: { actor: "actor2" },
originalLine: 103
};
bpStore.setActor(location, {});
bpStore.deleteActor(location);
do_check_eq(bpStore.getActor(location), null,
"We should not have the whole line breakpoint anymore");
}
function test_find_actors() {
let bps = [
{ originalSourceActor: { actor: "actor1" }, originalLine: 10 },
{ originalSourceActor: { actor: "actor1" }, originalLine: 10, originalColumn: 3 },
{ originalSourceActor: { actor: "actor1" }, originalLine: 10, originalColumn: 10 },
{ originalSourceActor: { actor: "actor1" }, originalLine: 23, originalColumn: 89 },
{ originalSourceActor: { actor: "actor2" }, originalLine: 10, originalColumn: 1 },
{ originalSourceActor: { actor: "actor2" }, originalLine: 20, originalColumn: 5 },
{ originalSourceActor: { actor: "actor2" }, originalLine: 30, originalColumn: 34 },
{ originalSourceActor: { actor: "actor2" }, originalLine: 40, originalColumn: 56 }
];
let bpStore = new BreakpointActorMap();
for (let bp of bps) {
bpStore.setActor(bp, bp);
}
// All breakpoints
let bpSet = new Set(bps);
for (let bp of bpStore.findActors()) {
bpSet.delete(bp);
}
do_check_eq(bpSet.size, 0,
"Should be able to iterate over all breakpoints");
// Breakpoints by URL
bpSet = new Set(bps.filter(bp => {
return bp.originalSourceActor.actorID === "actor1";
}));
for (let bp of bpStore.findActors({ originalSourceActor: { actorID: "actor1" } })) {
bpSet.delete(bp);
}
do_check_eq(bpSet.size, 0,
"Should be able to filter the iteration by url");
// Breakpoints by URL and line
bpSet = new Set(bps.filter(bp => {
return bp.originalSourceActor.actorID === "actor1" && bp.originalLine === 10;
}));
let first = true;
for (let bp of bpStore.findActors({ originalSourceActor: { actorID: "actor1" },
originalLine: 10 })) {
if (first) {
do_check_eq(bp.originalColumn, undefined,
"Should always get the whole line breakpoint first");
first = false;
} else {
do_check_neq(bp.originalColumn, undefined,
"Should not get the whole line breakpoint any time other than first.");
}
bpSet.delete(bp);
}
do_check_eq(bpSet.size, 0,
"Should be able to filter the iteration by url and line");
}
function test_duplicate_actors() {
let bpStore = new BreakpointActorMap();
// Breakpoint with column
let location = {
originalSourceActor: { actorID: "foo-actor" },
originalLine: 10,
originalColumn: 9
};
bpStore.setActor(location, {});
bpStore.setActor(location, {});
do_check_eq(bpStore.size, 1, "We should have only 1 column breakpoint");
bpStore.deleteActor(location);
// Breakpoint without column (whole line breakpoint)
location = {
originalSourceActor: { actorID: "foo-actor" },
originalLine: 15
};
bpStore.setActor(location, {});
bpStore.setActor(location, {});
do_check_eq(bpStore.size, 1, "We should have only 1 whole line breakpoint");
bpStore.deleteActor(location);
}