You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.3 KiB
143 lines
4.3 KiB
//
|
|
// Test that the correct cells are executed when there are marked cells.
|
|
//
|
|
casper.notebook_test(function () {
|
|
var that = this;
|
|
var assert_outputs = function (expected, msg_prefix) {
|
|
var msg, i;
|
|
msg_prefix = "(assert_outputs) "+(msg_prefix || 'no prefix')+": ";
|
|
for (i = 0; i < that.get_cells_length(); i++) {
|
|
if (expected[i] === undefined) {
|
|
msg = msg_prefix + 'cell ' + i + ' not executed';
|
|
that.test.assertFalse(that.cell_has_outputs(i), msg);
|
|
|
|
} else {
|
|
msg = msg_prefix + 'cell ' + i + ' executed';
|
|
var out = that.get_output_cell(i, undefined, msg_prefix).text
|
|
that.test.assertEquals(out, expected[i], msg + 'out is: '+out);
|
|
}
|
|
}
|
|
};
|
|
|
|
this.then(function () {
|
|
this.set_cell_text(0, 'print("a")');
|
|
this.append_cell('print("b")');
|
|
this.append_cell('print("c")');
|
|
this.append_cell('print("d")');
|
|
this.test.assertEquals(this.get_cells_length(), 4, "correct number of cells");
|
|
});
|
|
|
|
this.then(function () {
|
|
this.select_cell(1);
|
|
this.select_cell(2, false);
|
|
});
|
|
|
|
this.then(function () {
|
|
this.evaluate(function () {
|
|
IPython.notebook.clear_all_output();
|
|
});
|
|
})
|
|
|
|
this.then(function(){
|
|
this.select_cell(1);
|
|
this.validate_notebook_state('before execute 1', 'command', 1);
|
|
this.select_cell(1);
|
|
this.select_cell(2, false);
|
|
this.trigger_keydown('ctrl-enter');
|
|
});
|
|
|
|
this.wait_for_output(1);
|
|
this.wait_for_output(2);
|
|
|
|
this.then(function () {
|
|
assert_outputs([undefined, 'b\n', 'c\n', undefined], 'run selected 1');
|
|
this.validate_notebook_state('run selected cells 1', 'command', 2);
|
|
});
|
|
|
|
|
|
// execute and insert below when there are selected cells
|
|
this.then(function () {
|
|
this.evaluate(function () {
|
|
IPython.notebook.clear_all_output();
|
|
});
|
|
|
|
this.select_cell(1);
|
|
this.validate_notebook_state('before execute 2', 'command', 1);
|
|
this.evaluate(function () {
|
|
$("#run_cell_insert_below").click();
|
|
});
|
|
});
|
|
|
|
this.wait_for_output(1);
|
|
|
|
this.then(function () {
|
|
assert_outputs([undefined, 'b\n', undefined, undefined , undefined],'run selected cells 2');
|
|
this.validate_notebook_state('run selected cells 2', 'edit', 2);
|
|
});
|
|
|
|
// check that it doesn't affect run all above
|
|
this.then(function () {
|
|
this.evaluate(function () {
|
|
IPython.notebook.clear_all_output();
|
|
});
|
|
|
|
this.select_cell(1);
|
|
this.validate_notebook_state('before execute 3', 'command', 1);
|
|
this.evaluate(function () {
|
|
$("#run_all_cells_above").click();
|
|
});
|
|
});
|
|
|
|
this.wait_for_output(0);
|
|
|
|
this.then(function () {
|
|
assert_outputs(['a\n', undefined, undefined, undefined],'run cells above');
|
|
this.validate_notebook_state('run cells above', 'command', 0);
|
|
});
|
|
|
|
// check that it doesn't affect run all below
|
|
this.then(function () {
|
|
this.evaluate(function () {
|
|
IPython.notebook.clear_all_output();
|
|
});
|
|
|
|
this.select_cell(1);
|
|
this.validate_notebook_state('before execute 4', 'command', 1);
|
|
this.evaluate(function () {
|
|
$("#run_all_cells_below").click();
|
|
});
|
|
});
|
|
|
|
this.wait_for_output(1);
|
|
this.wait_for_output(2);
|
|
this.wait_for_output(3);
|
|
|
|
this.then(function () {
|
|
assert_outputs([undefined, 'b\n', undefined, 'c\n', 'd\n'],'run cells below');
|
|
this.validate_notebook_state('run cells below', 'command', 4);
|
|
});
|
|
|
|
// check that it doesn't affect run all
|
|
this.then(function () {
|
|
this.evaluate(function () {
|
|
IPython.notebook.clear_all_output();
|
|
});
|
|
|
|
this.select_cell(1);
|
|
this.validate_notebook_state('before execute 5', 'command', 1);
|
|
this.evaluate(function () {
|
|
$("#run_all_cells").click();
|
|
});
|
|
});
|
|
|
|
this.wait_for_output(0);
|
|
this.wait_for_output(1);
|
|
this.wait_for_output(2);
|
|
this.wait_for_output(3);
|
|
|
|
this.then(function () {
|
|
assert_outputs(['a\n', 'b\n', undefined, 'c\n', 'd\n'],'run all cells');
|
|
this.validate_notebook_state('run all cells', 'command', 4);
|
|
});
|
|
});
|