You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.9 KiB
JavaScript

8 months ago
/*
* osc.js: An Open Sound Control library for JavaScript that works in both the browser and Node.js
*
* Cross-Platform osc.js Transport Tests
*
* Copyright 2015-2016, Colin Clark
* Licensed under the MIT and GPL 3 licenses.
*/
/*global require*/
var fluid = fluid || require("infusion"),
jqUnit = jqUnit || require("node-jqunit"),
osc = osc || require("../src/platforms/osc-node.js");
(function () {
"use strict";
var QUnit = fluid.registerNamespace("QUnit");
QUnit.module("Error handling");
var portErrorTester = function (expectedErrorMsg) {
var port = new osc.Port();
port.on("message", function () {
QUnit.ok(false, "A message event should not have been emitted for an invalid message.");
QUnit.start();
});
port.on("error", function (err) {
QUnit.ok(err.message.indexOf(expectedErrorMsg) > -1,
"An error event should be emitted for an invalid message.");
QUnit.start();
});
return port;
};
QUnit.asyncTest("Decoding malformed messages", function () {
var port = portErrorTester("packet didn't contain an OSC address or a #bundle string");
port.decodeOSC(
// "0oscillator/4/frequency" | ",f" | 440
new Uint8Array([
0, 0x6f, 0x73, 0x63,
0x69, 0x6c, 0x6c, 0x61,
0x74, 0x6f, 0x72, 0x2f,
0x34, 0x2f, 0x66, 0x72,
0x65, 0x71, 0x75, 0x65,
0x6e, 0x63, 0x79, 0,
0x2c, 0x66, 0, 0,
0x43, 0xdc, 0, 0
])
);
});
QUnit.asyncTest("Encoding a malformed message", function () {
var expectedErrorMsg = "packet was not recognized as a valid OSC";
var port = portErrorTester(expectedErrorMsg);
port.encodeOSC({
address: "0oscillator/4/frequency",
args: 440
});
});
}());