| Index: tools/telemetry/third_party/coverage/tests/js/tests.js
|
| diff --git a/tools/telemetry/third_party/coverage/tests/js/tests.js b/tools/telemetry/third_party/coverage/tests/js/tests.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..504a158e0de77ba547b0b81de95d6e54775b215b
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/coverage/tests/js/tests.js
|
| @@ -0,0 +1,207 @@
|
| +/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
|
| +/* For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt */
|
| +
|
| +// Tests of coverage.py HTML report chunk navigation.
|
| +/*global coverage, test, module, equals, jQuery, $ */
|
| +
|
| +// Test helpers
|
| +
|
| +function selection_is(sel) {
|
| + raw_selection_is(sel, true);
|
| +}
|
| +
|
| +function raw_selection_is(sel, check_highlight) {
|
| + var beg = sel[0], end = sel[1];
|
| + equals(coverage.sel_begin, beg);
|
| + equals(coverage.sel_end, end);
|
| + if (check_highlight) {
|
| + equals(coverage.code_container().find(".highlight").length, end-beg);
|
| + }
|
| +}
|
| +
|
| +function build_fixture(spec) {
|
| + var i, data;
|
| + $("#fixture-template").tmpl().appendTo("#qunit-fixture");
|
| + for (i = 0; i < spec.length; i++) {
|
| + data = {number: i+1, klass: spec.substr(i, 1)};
|
| + $("#lineno-template").tmpl(data).appendTo("#qunit-fixture .linenos");
|
| + $("#text-template").tmpl(data).appendTo("#qunit-fixture .text");
|
| + }
|
| + coverage.pyfile_ready(jQuery);
|
| +}
|
| +
|
| +// Tests
|
| +
|
| +// Zero-chunk tests
|
| +
|
| +module("Zero-chunk navigation", {
|
| + setup: function () {
|
| + build_fixture("wwww");
|
| + }
|
| +});
|
| +
|
| +test("set_sel defaults", function () {
|
| + coverage.set_sel(2);
|
| + equals(coverage.sel_begin, 2);
|
| + equals(coverage.sel_end, 3);
|
| +});
|
| +
|
| +test("No first chunk to select", function () {
|
| + coverage.to_first_chunk();
|
| +});
|
| +
|
| +// One-chunk tests
|
| +
|
| +$.each([
|
| + ['rrrrr', [1,6]],
|
| + ['r', [1,2]],
|
| + ['wwrrrr', [3,7]],
|
| + ['wwrrrrww', [3,7]],
|
| + ['rrrrww', [1,5]]
|
| +], function (i, params) {
|
| +
|
| + // Each of these tests uses a fixture with one highlighted chunks.
|
| + var id = params[0];
|
| + var c1 = params[1];
|
| +
|
| + module("One-chunk navigation - " + id, {
|
| + setup: function () {
|
| + build_fixture(id);
|
| + }
|
| + });
|
| +
|
| + test("First chunk", function () {
|
| + coverage.to_first_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("Next chunk is first chunk", function () {
|
| + coverage.to_next_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("There is no next chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("There is no prev chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_prev_chunk();
|
| + selection_is(c1);
|
| + });
|
| +});
|
| +
|
| +// Two-chunk tests
|
| +
|
| +$.each([
|
| + ['rrwwrrrr', [1,3], [5,9]],
|
| + ['rb', [1,2], [2,3]],
|
| + ['rbbbbbbbbbb', [1,2], [2,12]],
|
| + ['rrrrrrrrrrb', [1,11], [11,12]],
|
| + ['wrrwrrrrw', [2,4], [5,9]],
|
| + ['rrrbbb', [1,4], [4,7]]
|
| +], function (i, params) {
|
| +
|
| + // Each of these tests uses a fixture with two highlighted chunks.
|
| + var id = params[0];
|
| + var c1 = params[1];
|
| + var c2 = params[2];
|
| +
|
| + module("Two-chunk navigation - " + id, {
|
| + setup: function () {
|
| + build_fixture(id);
|
| + }
|
| + });
|
| +
|
| + test("First chunk", function () {
|
| + coverage.to_first_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("Next chunk is first chunk", function () {
|
| + coverage.to_next_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("Move to next chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + selection_is(c2);
|
| + });
|
| +
|
| + test("Move to first chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + coverage.to_first_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("Move to previous chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + coverage.to_prev_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| + test("Next doesn't move after last chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + coverage.to_next_chunk();
|
| + selection_is(c2);
|
| + });
|
| +
|
| + test("Prev doesn't move before first chunk", function () {
|
| + coverage.to_first_chunk();
|
| + coverage.to_next_chunk();
|
| + coverage.to_prev_chunk();
|
| + coverage.to_prev_chunk();
|
| + selection_is(c1);
|
| + });
|
| +
|
| +});
|
| +
|
| +module("Miscellaneous");
|
| +
|
| +test("Jump from a line selected", function () {
|
| + build_fixture("rrwwrr");
|
| + coverage.set_sel(3);
|
| + coverage.to_next_chunk();
|
| + selection_is([5,7]);
|
| +});
|
| +
|
| +// Tests of select_line_or_chunk.
|
| +
|
| +$.each([
|
| + // The data for each test: a spec for the fixture to build, and an array
|
| + // of the selection that will be selected by select_line_or_chunk for
|
| + // each line in the fixture.
|
| + ['rrwwrr', [[1,3], [1,3], [3,4], [4,5], [5,7], [5,7]]],
|
| + ['rb', [[1,2], [2,3]]],
|
| + ['r', [[1,2]]],
|
| + ['w', [[1,2]]],
|
| + ['www', [[1,2], [2,3], [3,4]]],
|
| + ['wwwrrr', [[1,2], [2,3], [3,4], [4,7], [4,7], [4,7]]],
|
| + ['rrrwww', [[1,4], [1,4], [1,4], [4,5], [5,6], [6,7]]],
|
| + ['rrrbbb', [[1,4], [1,4], [1,4], [4,7], [4,7], [4,7]]]
|
| +], function (i, params) {
|
| +
|
| + // Each of these tests uses a fixture with two highlighted chunks.
|
| + var id = params[0];
|
| + var sels = params[1];
|
| +
|
| + module("Select line or chunk - " + id, {
|
| + setup: function () {
|
| + build_fixture(id);
|
| + }
|
| + });
|
| +
|
| + $.each(sels, function (i, sel) {
|
| + i++;
|
| + test("Select line " + i, function () {
|
| + coverage.select_line_or_chunk(i);
|
| + raw_selection_is(sel);
|
| + });
|
| + });
|
| +});
|
|
|