summaryrefslogtreecommitdiff
path: root/test/js/tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js/tests.js')
-rw-r--r--test/js/tests.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/test/js/tests.js b/test/js/tests.js
new file mode 100644
index 00000000..d298cebe
--- /dev/null
+++ b/test/js/tests.js
@@ -0,0 +1,90 @@
+// To make the code more testable, we monkeypatch some of it.
+$.extend(coverage, {
+ line_elt: function(n) {
+ return $(coverage.fixture + " .t" + n);
+ },
+ num_elt: function(n) {
+ return $(coverage.fixture + " .n" + n);
+ },
+ scroll_to_selection: function() {}
+});
+
+// Test helpers
+
+function selection_is(sel) {
+ equals(coverage.sel_begin, sel[0]);
+ equals(coverage.sel_end, sel[1]);
+}
+
+// Tests
+
+$.each([
+ ['rrwwrr', [1,3], [5,7]],
+ ['rb', [1,2], [2,3]],
+ ['wrrwrrw', [2,4], [5,7]],
+ ['rrrbbb', [1,4], [4,7]]
+], function(i, params) {
+
+ var id = params[0];
+ var fixture = "#"+id;
+ var c1 = params[1];
+ var c2 = params[2];
+
+ function setup() {
+ coverage.fixture = fixture;
+ };
+
+ test("first chunk on line 1 "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ selection_is(c1);
+ });
+
+ test("move to next chunk "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ coverage.to_next_chunk();
+ selection_is(c2);
+ });
+
+ test("move to first chunk "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ coverage.to_next_chunk();
+ coverage.to_first_chunk();
+ selection_is(c1);
+ });
+
+ test("move to previous chunk "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ coverage.to_next_chunk();
+ coverage.to_prev_chunk();
+ selection_is(c1);
+ });
+
+ test("next doesn't move after last chunk "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ coverage.to_next_chunk();
+ coverage.to_next_chunk();
+ selection_is(c2);
+ });
+
+ test("prev doesn't move before first chunk "+id, function() {
+ setup();
+ coverage.to_first_chunk();
+ coverage.to_next_chunk();
+ coverage.to_prev_chunk();
+ coverage.to_prev_chunk();
+ selection_is(c1);
+ });
+
+});
+
+test("jump from a line selected", function() {
+ coverage.fixture = "#rrwwrr";
+ coverage.set_sel(3, 4);
+ coverage.to_next_chunk();
+ selection_is([5,7]);
+});