|
|
//
|
|
|
// Test code cell execution.
|
|
|
//
|
|
|
casper.notebook_test(function () {
|
|
|
this.evaluate(function () {
|
|
|
var cell = IPython.notebook.get_cell(0);
|
|
|
cell.set_text('a=10; print(a)');
|
|
|
cell.execute();
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(0);
|
|
|
|
|
|
// refactor this into just a get_output(0)
|
|
|
this.then(function () {
|
|
|
var result = this.get_output_cell(0);
|
|
|
this.test.assertEquals(result.text, '10\n', 'cell execute (using js)');
|
|
|
});
|
|
|
|
|
|
|
|
|
// do it again with the keyboard shortcut
|
|
|
this.thenEvaluate(function () {
|
|
|
var cell = IPython.notebook.get_cell(0);
|
|
|
cell.set_text('a=11; print(a)');
|
|
|
cell.clear_output();
|
|
|
});
|
|
|
|
|
|
this.then(function(){
|
|
|
|
|
|
this.trigger_keydown('shift-enter');
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(0);
|
|
|
|
|
|
this.then(function () {
|
|
|
var result = this.get_output_cell(0);
|
|
|
var num_cells = this.get_cells_length();
|
|
|
this.test.assertEquals(result.text, '11\n', 'cell execute (using ctrl-enter)');
|
|
|
this.test.assertEquals(num_cells, 2, 'shift-enter adds a new cell at the bottom')
|
|
|
});
|
|
|
|
|
|
// do it again with the keyboard shortcut
|
|
|
this.thenEvaluate(function () {
|
|
|
IPython.notebook.select(1);
|
|
|
IPython.notebook.delete_cell();
|
|
|
var cell = IPython.notebook.get_cell(0);
|
|
|
cell.set_text('a=12; print(a)');
|
|
|
cell.clear_output();
|
|
|
});
|
|
|
|
|
|
this.then(function(){
|
|
|
this.trigger_keydown('ctrl-enter');
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(0);
|
|
|
|
|
|
this.then(function () {
|
|
|
var result = this.get_output_cell(0);
|
|
|
var num_cells = this.get_cells_length();
|
|
|
this.test.assertEquals(result.text, '12\n', 'cell execute (using shift-enter)');
|
|
|
this.test.assertEquals(num_cells, 1, 'ctrl-enter adds no new cell at the bottom')
|
|
|
});
|
|
|
|
|
|
// press the "play" triangle button in the toolbar
|
|
|
this.thenEvaluate(function () {
|
|
|
var cell = IPython.notebook.get_cell(0);
|
|
|
IPython.notebook.select(0);
|
|
|
cell.clear_output();
|
|
|
cell.set_text('a=13; print(a)');
|
|
|
$("button[data-jupyter-action='ipython.run-select-next']")[0].click()
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(0);
|
|
|
|
|
|
this.then(function () {
|
|
|
var result = this.get_output_cell(0);
|
|
|
this.test.assertEquals(result.text, '13\n', 'cell execute (using "play" toolbar button)')
|
|
|
});
|
|
|
|
|
|
// run code with skip_exception
|
|
|
this.thenEvaluate(function () {
|
|
|
var cell0 = IPython.notebook.get_cell(0);
|
|
|
cell0.set_text('raise IOError');
|
|
|
IPython.notebook.insert_cell_below('code',0);
|
|
|
var cell1 = IPython.notebook.get_cell(1);
|
|
|
cell1.set_text('a=14; print(a)');
|
|
|
cell0.execute(false);
|
|
|
cell1.execute();
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(1);
|
|
|
|
|
|
this.then(function () {
|
|
|
var result = this.get_output_cell(1);
|
|
|
this.test.assertEquals(result.text, '14\n', "cell execute, don't stop on error");
|
|
|
});
|
|
|
|
|
|
this.thenEvaluate(function () {
|
|
|
var cell0 = IPython.notebook.get_cell(0);
|
|
|
cell0.set_text('raise IOError');
|
|
|
IPython.notebook.insert_cell_below('code',0);
|
|
|
var cell1 = IPython.notebook.get_cell(1);
|
|
|
cell1.set_text('a=14; print(a)');
|
|
|
cell0.execute();
|
|
|
cell1.execute();
|
|
|
});
|
|
|
|
|
|
this.wait_for_output(0);
|
|
|
|
|
|
this.then(function () {
|
|
|
var outputs = this.evaluate(function() {
|
|
|
return IPython.notebook.get_cell(1).output_area.outputs;
|
|
|
})
|
|
|
this.test.assertEquals(outputs.length, 0, 'cell execute, stop on error (default)');
|
|
|
});
|
|
|
});
|
|
|
|