summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/parser/functions/is_numeric.rb8
-rw-r--r--spec/unit/parser/functions/is_numeric_spec.rb17
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/puppet/parser/functions/is_numeric.rb b/lib/puppet/parser/functions/is_numeric.rb
index 96e8674..c2c0fb5 100644
--- a/lib/puppet/parser/functions/is_numeric.rb
+++ b/lib/puppet/parser/functions/is_numeric.rb
@@ -12,6 +12,14 @@ module Puppet::Parser::Functions
"given #{arguments.size} for 1")
end
+ value = arguments[0]
+
+ if value == value.to_f.to_s or value == value.to_i.to_s then
+ return true
+ else
+ return false
+ end
+
end
end
diff --git a/spec/unit/parser/functions/is_numeric_spec.rb b/spec/unit/parser/functions/is_numeric_spec.rb
index 3a49f5d..2191b7b 100644
--- a/spec/unit/parser/functions/is_numeric_spec.rb
+++ b/spec/unit/parser/functions/is_numeric_spec.rb
@@ -14,8 +14,23 @@ describe "the is_numeric function" do
Puppet::Parser::Functions.function("is_numeric").should == "function_is_numeric"
end
- it "should raise a ParseError if there is less than 1 arguments" do
+ it "should raise a ParseError if there is less than 1 argument" do
lambda { @scope.function_is_numeric([]) }.should( raise_error(Puppet::ParseError))
end
+ it "should return true if an integer" do
+ result = @scope.function_is_numeric(["3"])
+ result.should(eq(true))
+ end
+
+ it "should return true if a float" do
+ result = @scope.function_is_numeric(["3.2"])
+ result.should(eq(true))
+ end
+
+ it "should return false if a string" do
+ result = @scope.function_is_numeric(["asdf"])
+ result.should(eq(false))
+ end
+
end