123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /* -*- 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);
- }
|