Merge branch 'master' of https://github.com/jupyter/notebook into list_hidden_files
commit
533e1984e2
@ -1,100 +0,0 @@
|
||||
|
||||
// Test
|
||||
casper.notebook_test(function () {
|
||||
var that = this;
|
||||
|
||||
var a = 'print("a")';
|
||||
var index = this.append_cell(a);
|
||||
|
||||
var b = 'print("b")';
|
||||
index = this.append_cell(b);
|
||||
|
||||
var c = 'print("c")';
|
||||
index = this.append_cell(c);
|
||||
|
||||
this.then(function () {
|
||||
var selectedIndex = this.evaluate(function () {
|
||||
Jupyter.notebook.select(0);
|
||||
return Jupyter.notebook.get_selected_index();
|
||||
});
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 1, 'only one cell is selected programmatically');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return $('.cell.jupyter-soft-selected, .cell.selected').length;
|
||||
}), 1, 'one cell is selected');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.extend_selection_by(1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 2, 'extend selection by one');
|
||||
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.extend_selection_by(-1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 1, 'contract selection by one');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.select(1);
|
||||
Jupyter.notebook.extend_selection_by(-1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 2, 'extend selection by one up');
|
||||
|
||||
// Test multiple markdown conversions.
|
||||
var cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_markdown();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'markdown';
|
||||
}), 'selected cells converted to markdown');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
|
||||
// Test multiple raw conversions.
|
||||
cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_raw();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'raw';
|
||||
}), 'selected cells converted to raw');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
|
||||
// Test multiple code conversions.
|
||||
cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_code();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'code';
|
||||
}), 'selected cells converted to code');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,65 @@
|
||||
def test_multiselect(notebook):
|
||||
def extend_selection_by(delta):
|
||||
notebook.browser.execute_script(
|
||||
"Jupyter.notebook.extend_selection_by(arguments[0]);", delta)
|
||||
|
||||
def n_selected_cells():
|
||||
return notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_selected_cells().length;")
|
||||
|
||||
a = 'print("a")'
|
||||
b = 'print("b")'
|
||||
c = 'print("c")'
|
||||
notebook.edit_cell(index=0, content=a)
|
||||
notebook.append(b, c)
|
||||
|
||||
notebook.focus_cell(0)
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Check that only one cell is selected according to CSS classes as well
|
||||
selected_css = notebook.browser.find_elements_by_css_selector(
|
||||
'.cell.jupyter-soft-selected, .cell.selected')
|
||||
assert len(selected_css) == 1
|
||||
|
||||
# Extend the selection down one
|
||||
extend_selection_by(1)
|
||||
assert n_selected_cells() == 2
|
||||
|
||||
# Contract the selection up one
|
||||
extend_selection_by(-1)
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Extend the selection up one
|
||||
notebook.focus_cell(1)
|
||||
extend_selection_by(-1)
|
||||
assert n_selected_cells() == 2
|
||||
|
||||
# Convert selected cells to Markdown
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_markdown();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['markdown', 'markdown', 'code']
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Convert selected cells to raw
|
||||
notebook.focus_cell(1)
|
||||
extend_selection_by(1)
|
||||
assert n_selected_cells() == 2
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_raw();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['markdown', 'raw', 'raw']
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Convert selected cells to code
|
||||
notebook.focus_cell(0)
|
||||
extend_selection_by(2)
|
||||
assert n_selected_cells() == 3
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_code();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['code'] * 3
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
||||
Loading…
Reference in new issue