// -*- mode: js2; js-run: t -*- // // Copyright (c) 2010 Ivan Shvedunov. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials // provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. var swp = require("./swank-protocol"); var lisp = require("./lisp"); var Buffer = require('buffer').Buffer; var assert = require("assert"); var S = lisp.S, list = lisp.list, nil = lisp.nil; var expected = []; var parser = new swp.SwankParser( function onMessage (message) { assert.ok(expected.length > 0); var expectedMessage = expected.shift(); assert.deepEqual(expectedMessage, message); }); function feed (text) { for (var i = 1; i < arguments.length; ++i) expected.push(arguments[i]); parser.execute(text); assert.equal(0, expected.length); } // dispatch: see dispatch-event in swank.lisp feed("000"); feed("03b"); feed("(:emacs-rex (swank:connection-info) \"COMMON-LISP-USER\" t 1)", list(S(":emacs-rex"), list(S("swank:connection-info")), "COMMON-LISP-USER", S("t"), 1)); feed("0"); feed("0"); feed("0"); feed("03b(:emacs-rex (swank:connection-info)"); feed(" \"COMMON-LISP-USER\" t 1)000", list(S(":emacs-rex"), list(S("swank:connection-info")), "COMMON-LISP-USER", S("t"), 1)); feed("03b(:emacs-rex (swank:connection-info)"); feed(" \"COMMON-LISP-USER\" t 1"); feed(")", list(S(":emacs-rex"), list(S("swank:connection-info")), "COMMON-LISP-USER", S("t"), 1)); assert.equal( "000015(:return (:ok nil) 1)", swp.buildMessage(list(S(":return"), list(S(":ok"), nil), 1))); // TBD: check unicode string handling (use \uxxxx notation)