diff --git a/function/random/package.json b/function/random/package.json index 13ac148e..ba190135 100644 --- a/function/random/package.json +++ b/function/random/package.json @@ -1,6 +1,6 @@ { "name" : "node-red-node-random", - "version" : "0.4.0", + "version" : "0.4.1", "description" : "A Node-RED node that when triggered generates a random number between two values.", "dependencies" : { }, diff --git a/function/random/random.js b/function/random/random.js index 681cfefe..1b9f0c50 100644 --- a/function/random/random.js +++ b/function/random/random.js @@ -18,9 +18,8 @@ module.exports = function(RED) { if (node.low) { // if the the node has a value use it tmp.low = Number(node.low); } else if ('from' in msg) { // else see if a 'from' is in the msg - if (Number(msg.from)) { // if it is, and is a number, use it - tmp.low = Number(msg.from); - } else { // otherwise setup NaN error + tmp.low = Number(msg.from); + if (isNaN(msg.from)) { // if it isn't a number setup NaN error tmp.low = NaN; tmp.low_e = " From: " + msg.from; // setup to show bad incoming msg.from } @@ -31,9 +30,8 @@ module.exports = function(RED) { if (node.high) { // if the the node has a value use it tmp.high = Number(node.high); } else if ('to' in msg) { // else see if a 'to' is in the msg - if (Number(msg.to)) { // if it is, and is a number, use it - tmp.high = Number(msg.to); - } else { // otherwise setup NaN error + tmp.high = Number(msg.to); + if (isNaN(msg.to)) { // if it isn't a number setup NaN error tmp.high = NaN tmp.high_e = " To: " + msg.to // setup to show bad incoming msg.to } diff --git a/test/function/random/random_spec.js b/test/function/random/random_spec.js index d352c12a..a13e1b3b 100644 --- a/test/function/random/random_spec.js +++ b/test/function/random/random_spec.js @@ -15,257 +15,297 @@ describe('random node', function() { helper.stopServer(done); }); }); - + // ============================================================ - it ("Test i1 (integer) - DEFAULT no overrides defaults to 1 and 10", function(done) { - var flow = [{id:"n1", type:"random", low: "" , high:"" , inte:true, wires:[["n2"]] }, + it ("Test i1 (integer) - DEFAULT no overrides defaults to 1 and 10", function(done) { + var flow = [{id:"n1", type:"random", low: "" , high:"" , inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(1,10); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(1,10); msg.payload.toString().indexOf(".").should.equal(-1); // see if it's really an integer and not a float... - done(); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i1"}); + n1.emit("input", {"test":"Test i1"}); }); }); - it ("Test f1 (float) - DEFAULT no overrides defaults to 1 and 10", function(done) { - var flow = [{id:"n1", type:"random", low:"" , high:"" , inte:false, wires:[["n2"]] }, + it ("Test f1 (float) - DEFAULT no overrides defaults to 1 and 10", function(done) { + var flow = [{id:"n1", type:"random", low:"" , high:"" , inte:false, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(1.0,9.999); - //msg.payload.toString().indexOf(".").should.not.equal(-1); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(1.0,9.999); + //msg.payload.toString().indexOf(".").should.not.equal(-1); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test f-1"}); + n1.emit("input", {"test":"Test f-1"}); }); }); // ============================================================ - it ("Test i2 (integer) - FLIP node From = 3 To = -3", function(done) { - var flow = [{id:"n1", type:"random", low: 3, high: -3, inte:true, wires:[["n2"]] }, + it ("Test i2 (integer) - FLIP node From = 3 To = -3", function(done) { + var flow = [{id:"n1", type:"random", low: 3, high: -3, inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(-3,3); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(-3,3); msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... - done(); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i2"}); + n1.emit("input", {"test":"Test i2"}); }); }); - it ("Test f2 (float) - FLIP node From = 3 To = -3", function(done) { - var flow = [{id:"n1", type:"random", low: 3, high: -3, inte:false, wires:[["n2"]] }, + it ("Test f2 (float) - FLIP node From = 3 To = -3", function(done) { + var flow = [{id:"n1", type:"random", low: 3, high: -3, inte:false, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(-3.0,3.0); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(-3.0,3.0); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test f2"}); + n1.emit("input", {"test":"Test f2"}); }); }); // ============================================================ - it ("Test i3 (integer) - values in msg From = 2 To = '5', node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, + it ("Test i3 (integer) - values in msg From = 2 To = '5', node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(2,5); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(2,5); msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... - done(); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i3", "from":2, "to":'5'}); + n1.emit("input", {"test":"Test i3", "from":2, "to":'5'}); }); }); - it ("Test f3 (float) - values in msg From = 2 To = '5', node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, + it ("Test f3 (float) - values in msg From = 2 To = '5', node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(2.0,5.0); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(2.0,5.0); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test f3", "from":2, "to":'5'}); + n1.emit("input", {"test":"Test f3", "from":2, "to":'5'}); }); }); // ============================================================ - it ("Test i4 (integer) - value in msg From = 2, node From = 5 To = '' - node overides From = 5 To defaults to 10", function(done) { - var flow = [{id:"n1", type:"random", low: 5, high:"", inte:true, wires:[["n2"]] }, + it ("Test i4 (integer) - value in msg From = 2, node From = 5 To = '' - node overides From = 5 To defaults to 10", function(done) { + var flow = [{id:"n1", type:"random", low: 5, high:"", inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(5,10); - msg.payload.toString().indexOf(".").should.equal(-1); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(5,10); + msg.payload.toString().indexOf(".").should.equal(-1); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i4", "from": 2}); + n1.emit("input", {"test":"Test i4", "from": 2}); }); }); - it ("Test f4 (float) - value in msg From = 2, node From = 5 To = '' - node wins 'To' defaults to 10", function(done) { - var flow = [{id:"n1", type:"random", low: 5, high:"", inte:false, wires:[["n2"]] }, + it ("Test f4 (float) - value in msg From = 2, node From = 5 To = '' - node wins 'To' defaults to 10", function(done) { + var flow = [{id:"n1", type:"random", low: 5, high:"", inte:false, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(5.0,10.0); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(5.0,10.0); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test f4", "from": 2}); + n1.emit("input", {"test":"Test f4", "from": 2}); }); }); // ============================================================ - it ("Test i5 (integer) - msg From = '6' To = '9' node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, + it ("Test i5 (integer) - msg From = '6' To = '9' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(6,9); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(6,9); msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... - done(); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i5", "from": '6', "to": '9'}); + n1.emit("input", {"test":"Test i5", "from": '6', "to": '9'}); }); }); - it ("Test f5 (float) - msg From = '6' To = '9' node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, + it ("Test i5a (integer) - msg From = '0' To = '2' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(6.0,9.0); - done(); - } - catch(err) { done(err); } - }); - n1.emit("input", {"test":"Test f5", "from": '6', "to": '9'}); - }); - }); - -// ============================================================ - - it ("Test i6 (integer) - msg From = 2.4 To = '7.3' node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, - {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { - var n1 = helper.getNode("n1"); - var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { - try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(2,7); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(0,2); msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... - done(); + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test i6", "from": 2.4, "to": '7.3'}); + n1.emit("input", {"test":"Test i5", "from": '0', "to": '2'}); }); }); - it ("Test f6 (float) - msg From = 2.4 To = '7.3' node no entries", function(done) { - var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, + it ("Test i5b (integer) - msg From = '-3' To = '0' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, {id:"n2", type:"helper"} ]; - helper.load(testNode, flow, function() { + helper.load(testNode, flow, function() { var n1 = helper.getNode("n1"); var n2 = helper.getNode("n2"); - n2.on("input", function(msg) { + n2.on("input", function(msg) { try { - //console.log(msg); - msg.should.have.a.property("payload"); - msg.payload.should.be.within(2.4,7.3); - done(); + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(-3,0); + msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... + done(); } - catch(err) { done(err); } + catch(err) { done(err); } }); - n1.emit("input", {"test":"Test f6", "from": 2.4, "to": '7.3'}); + n1.emit("input", {"test":"Test i5", "from": '-3', "to": '0'}); + }); + }); + + it ("Test f5 (float) - msg From = '6' To = '9' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, + {id:"n2", type:"helper"} ]; + helper.load(testNode, flow, function() { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + n2.on("input", function(msg) { + try { + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(6.0,9.0); + done(); + } + catch(err) { done(err); } + }); + n1.emit("input", {"test":"Test f5", "from": '6', "to": '9'}); + }); + }); + +// ============================================================ + + it ("Test i6 (integer) - msg From = 2.4 To = '7.3' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:true, wires:[["n2"]] }, + {id:"n2", type:"helper"} ]; + helper.load(testNode, flow, function() { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + n2.on("input", function(msg) { + try { + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(2,7); + msg.payload.toString().indexOf(".").should.equal(-1); // slightly dumb test to see if it really is an integer and not a float... + done(); + } + catch(err) { done(err); } + }); + n1.emit("input", {"test":"Test i6", "from": 2.4, "to": '7.3'}); + }); + }); + + it ("Test f6 (float) - msg From = 2.4 To = '7.3' node no entries", function(done) { + var flow = [{id:"n1", type:"random", low: "", high: "", inte:false, wires:[["n2"]] }, + {id:"n2", type:"helper"} ]; + helper.load(testNode, flow, function() { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + n2.on("input", function(msg) { + try { + //console.log(msg); + msg.should.have.a.property("payload"); + msg.payload.should.be.within(2.4,7.3); + done(); + } + catch(err) { done(err); } + }); + n1.emit("input", {"test":"Test f6", "from": 2.4, "to": '7.3'}); }); }); // ============================================================ - + });