From 1e79e3916128e7106117efc3366259143bd173c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 24 Mar 2014 12:20:28 +0100 Subject: [PATCH] Fixes #223, float arguments to functions like scale should now work as expected --- src/app/services/graphite/gfunc.js | 2 +- src/test/specs/gfunc-specs.js | 6 +++++- src/test/specs/lexer-specs.js | 6 ++++++ src/test/specs/parser-specs.js | 7 +++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app/services/graphite/gfunc.js b/src/app/services/graphite/gfunc.js index dadfb736e93..56bb83667f4 100644 --- a/src/app/services/graphite/gfunc.js +++ b/src/app/services/graphite/gfunc.js @@ -365,7 +365,7 @@ function (_) { this.params.splice(index, 1); } else if (this.def.params[index].type === 'int') { - this.params[index] = parseInt(strValue, 10); + this.params[index] = parseFloat(strValue, 10); } else { this.params[index] = strValue; diff --git a/src/test/specs/gfunc-specs.js b/src/test/specs/gfunc-specs.js index 942f098fdea..1e396ae3e6d 100644 --- a/src/test/specs/gfunc-specs.js +++ b/src/test/specs/gfunc-specs.js @@ -71,7 +71,11 @@ define([ expect(func.text).to.be('summarize(1h, sum)'); }); - + it('should parse numbers as float', function() { + var func = gfunc.createFuncInstance('scale'); + func.updateParam('0.001', 0); + expect(func.params[0]).to.be(0.001); + }); }); describe('when updating func param with optional second parameter', function() { diff --git a/src/test/specs/lexer-specs.js b/src/test/specs/lexer-specs.js index 8cdb5531c26..a9cbe089f03 100644 --- a/src/test/specs/lexer-specs.js +++ b/src/test/specs/lexer-specs.js @@ -88,6 +88,12 @@ define([ expect(tokens[4].pos).to.be(20); }); + it('should handle float parameters', function() { + var lexer = new Lexer("alias(metric, 0.002)"); + var tokens = lexer.tokenize(); + expect(tokens[4].type).to.be('number'); + expect(tokens[4].value).to.be('0.002'); + }); }); diff --git a/src/test/specs/parser-specs.js b/src/test/specs/parser-specs.js index 5614fd090da..b705ef68dc9 100644 --- a/src/test/specs/parser-specs.js +++ b/src/test/specs/parser-specs.js @@ -139,6 +139,13 @@ define([ expect(rootNode.type).to.be('function'); }); + it('handle float function arguments', function() { + var parser = new Parser('scale(test, 0.002)'); + var rootNode = parser.getAst(); + expect(rootNode.type).to.be('function'); + expect(rootNode.params[1].type).to.be('number'); + expect(rootNode.params[1].value).to.be(0.002); + }); });