mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
adding streaming modes into split node
and add tests
This commit is contained in:
@@ -134,7 +134,7 @@ describe('range Node', function() {
|
||||
|
||||
var sinon = require('sinon');
|
||||
sinon.stub(rangeNode1, 'log', function(log) {
|
||||
if(log.indexOf("notnumber") > -1) {
|
||||
if (log.indexOf("notnumber") > -1) {
|
||||
done();
|
||||
} else {
|
||||
try {
|
||||
|
@@ -58,6 +58,47 @@ describe('SPLIT node', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('should split an array into multiple messages of a specified size', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]], arraySplt:3, arraySpltType:"len"},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
sn2.on("input", function(msg) {
|
||||
msg.should.have.property("parts");
|
||||
msg.parts.should.have.property("count",2);
|
||||
msg.parts.should.have.property("type","array");
|
||||
msg.parts.should.have.property("index");
|
||||
msg.payload.should.be.an.Array;
|
||||
if (msg.parts.index === 0) { msg.payload.length.should.equal(3); }
|
||||
if (msg.parts.index === 1) { msg.payload.length.should.equal(1); done(); }
|
||||
});
|
||||
sn1.receive({payload:[1,2,3,4]});
|
||||
});
|
||||
});
|
||||
|
||||
it('should split an object into pieces', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]]},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
var count = 0;
|
||||
sn2.on("input", function(msg) {
|
||||
msg.should.have.property("payload");
|
||||
msg.should.have.property("parts");
|
||||
msg.parts.should.have.property("type","object");
|
||||
msg.parts.should.have.property("key");
|
||||
msg.parts.should.have.property("count");
|
||||
msg.parts.should.have.property("index");
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal(1); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("2"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal(true); done(); }
|
||||
});
|
||||
sn1.receive({payload:{a:1,b:"2",c:true}});
|
||||
});
|
||||
});
|
||||
|
||||
it('should split a string into new-lines', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]]},
|
||||
{id:"sn2", type:"helper"}];
|
||||
@@ -69,12 +110,12 @@ describe('SPLIT node', function() {
|
||||
msg.parts.should.have.property("count",4);
|
||||
msg.parts.should.have.property("type","string");
|
||||
msg.parts.should.have.property("index");
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal("D"); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("a"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal("v"); }
|
||||
if (msg.parts.index === 3) { msg.payload.should.equal("e"); done(); }
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal("Da"); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("ve"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal(" "); }
|
||||
if (msg.parts.index === 3) { msg.payload.should.equal("CJ"); done(); }
|
||||
});
|
||||
sn1.receive({payload:"D\na\nv\ne"});
|
||||
sn1.receive({payload:"Da\nve\n \nCJ"});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -98,25 +139,93 @@ describe('SPLIT node', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('should split an object into pieces', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]]},
|
||||
it('should split a string into lengths', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]], splt:"2", spltType:"len"},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
var count = 0;
|
||||
sn2.on("input", function(msg) {
|
||||
msg.should.have.property("payload");
|
||||
msg.should.have.property("parts");
|
||||
msg.parts.should.have.property("type","object");
|
||||
msg.parts.should.have.property("key");
|
||||
msg.parts.should.have.property("count");
|
||||
msg.parts.should.have.property("count",4);
|
||||
msg.parts.should.have.property("ch","");
|
||||
msg.parts.should.have.property("index");
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal(1); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("2"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal(true); done(); }
|
||||
msg.parts.should.have.property("type","string");
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal("12"); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("34"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal("56"); }
|
||||
if (msg.parts.index === 3) { msg.payload.should.equal("78"); done(); }
|
||||
});
|
||||
sn1.receive({payload:{a:1,b:"2",c:true}});
|
||||
sn1.receive({payload:"12345678"});
|
||||
});
|
||||
});
|
||||
|
||||
it('should split a string on a specified char in stream mode', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]], splt:"\n", stream:true},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
sn2.on("input", function(msg) {
|
||||
msg.should.have.property("parts");
|
||||
msg.parts.should.have.property("ch","\n");
|
||||
msg.parts.should.have.property("index");
|
||||
msg.parts.should.have.property("type","string");
|
||||
if (msg.parts.index === 0) { msg.payload.should.equal("1"); }
|
||||
if (msg.parts.index === 1) { msg.payload.should.equal("2"); }
|
||||
if (msg.parts.index === 2) { msg.payload.should.equal("3"); }
|
||||
if (msg.parts.index === 3) { msg.payload.should.equal("4"); }
|
||||
if (msg.parts.index === 4) { msg.payload.should.equal("5"); }
|
||||
if (msg.parts.index === 5) { msg.payload.should.equal("6"); done(); }
|
||||
});
|
||||
sn1.receive({payload:"1\n2\n3\n"});
|
||||
sn1.receive({payload:"4\n5\n6\n"});
|
||||
});
|
||||
});
|
||||
|
||||
it('should split a buffer into lengths', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]], splt:"2", spltType:"len"},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
sn2.on("input", function(msg) {
|
||||
//console.log(msg);
|
||||
msg.should.have.property("parts");
|
||||
msg.payload.should.be.a.Buffer;
|
||||
msg.parts.should.have.property("count",4);
|
||||
msg.parts.should.have.property("index");
|
||||
msg.parts.should.have.property("type","buffer");
|
||||
if (msg.parts.index === 0) { msg.payload.toString().should.equal("12"); }
|
||||
if (msg.parts.index === 1) { msg.payload.toString().should.equal("34"); }
|
||||
if (msg.parts.index === 2) { msg.payload.toString().should.equal("56"); }
|
||||
if (msg.parts.index === 3) { msg.payload.toString().should.equal("78"); done(); }
|
||||
});
|
||||
var b = new Buffer.from("12345678");
|
||||
sn1.receive({payload:b});
|
||||
});
|
||||
});
|
||||
|
||||
it('should split a buffer on another buffer (streaming)', function(done) {
|
||||
var flow = [{id:"sn1", type:"split", wires:[["sn2"]], splt:"[52]", spltType:"bin", stream:true},
|
||||
{id:"sn2", type:"helper"}];
|
||||
helper.load(splitNode, flow, function() {
|
||||
var sn1 = helper.getNode("sn1");
|
||||
var sn2 = helper.getNode("sn2");
|
||||
sn2.on("input", function(msg) {
|
||||
//console.log(msg);
|
||||
msg.should.have.property("parts");
|
||||
msg.payload.should.be.a.Buffer;
|
||||
msg.parts.should.have.property("index");
|
||||
msg.parts.should.have.property("type","buffer");
|
||||
if (msg.parts.index === 0) { msg.payload.toString().should.equal("123"); }
|
||||
if (msg.parts.index === 1) { msg.payload.toString().should.equal("123"); }
|
||||
if (msg.parts.index === 2) { msg.payload.toString().should.equal("123"); done(); }
|
||||
});
|
||||
var b1 = new Buffer.from("123412");
|
||||
var b2 = new Buffer.from("341234");
|
||||
sn1.receive({payload:b1});
|
||||
sn1.receive({payload:b2});
|
||||
});
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user