//
// Test shutdown of a kernel.
//
casper.notebook_test(function () {
    // XXX: test.begin allows named sections but requires casperjs 1.1.0-DEV.
    //      We will put it back into place when the next version of casper is
    //      released. Following that, all instances of this.test can be changed
    //      to just test.
    //this.test.begin("shutdown tests (notebook)", 2, function(test) {

    // Our shutdown test closes the browser window, which will delete the
    // casper browser object, and the rest of the test suite will fail with
    // errors that look like:
    //
    //   "Error: cannot access member `evaluate' of deleted QObject"
    //
    // So what we do here is make a quick popup window, and run the test inside
    // of it.
    this.then(function() {
        this.evaluate(function(url){
            window.open(url);
        }, {url : this.getCurrentUrl()});
    })

    this.waitForPopup('');
    this.withPopup('', function () {
        this.thenEvaluate(function () {
            $('#kill_and_exit').click();
        });

        this.thenEvaluate(function () {
            var cell = IPython.notebook.get_cell(0);
            cell.set_text('a=10; print(a)');
            cell.execute();
        });

        this.then(function () {
            var outputs = this.evaluate(function() {
                return IPython.notebook.get_cell(0).output_area.outputs;
            })
            this.test.assertEquals(outputs.length, 0, "after shutdown: no execution results");
            this.test.assertNot(this.kernel_running(),
                'after shutdown: IPython.notebook.kernel.running is false ');
        });
    });

//}); // end of test.begin
});