76 lines
2.7 KiB
JavaScript
76 lines
2.7 KiB
JavaScript
// -*- 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)
|