From 8d217f0012fef332642faf485ad187773a95bcc1 Mon Sep 17 00:00:00 2001
From: Steve Huff <shuff@vecna.org>
Date: Fri, 29 Mar 2013 15:06:36 -0400
Subject: (19864) num2bool match fix

This is a bit more heavy-handed than I might like, but it does appear to
do the right things:

* accepts numeric input appropriately, truncating floats
* matches string input against a regex, then coerces number-looking
  strings to int
* makes a best effort to coerce anything else to a string, then subjects
  it to the same treatment
* raises an error in the event of incorrect number of arguments or
  non-number-looking strings

I've also included some additional unit tests.
---
 spec/unit/puppet/parser/functions/num2bool_spec.rb | 34 ++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

(limited to 'spec/unit/puppet/parser/functions')

diff --git a/spec/unit/puppet/parser/functions/num2bool_spec.rb b/spec/unit/puppet/parser/functions/num2bool_spec.rb
index 5ce981e..038881f 100644
--- a/spec/unit/puppet/parser/functions/num2bool_spec.rb
+++ b/spec/unit/puppet/parser/functions/num2bool_spec.rb
@@ -16,6 +16,10 @@ describe "the num2bool function" do
     lambda { scope.function_num2bool(["foo","bar"]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should raise a ParseError if passed something non-numeric" do
+    lambda { scope.function_num2bool(["xyzzy"]) }.should( raise_error(Puppet::ParseError))
+  end
+
   it "should return true if passed string 1" do
     result = scope.function_num2bool(["1"])
     result.should(be_true)
@@ -26,6 +30,16 @@ describe "the num2bool function" do
     result.should(be_true)
   end
 
+  it "should return true if passed array with string 1" do
+    result = scope.function_num2bool([["1"]])
+    result.should(be_true)
+  end
+
+  it "should return true if passed array with number 1" do
+    result = scope.function_num2bool([[1]])
+    result.should(be_true)
+  end
+
   it "should return false if passed string 0" do
     result = scope.function_num2bool(["0"])
     result.should(be_false)
@@ -36,6 +50,16 @@ describe "the num2bool function" do
     result.should(be_false)
   end
 
+  it "should return false if passed array with string 0" do
+    result = scope.function_num2bool([["0"]])
+    result.should(be_false)
+  end
+
+  it "should return false if passed array with number 0" do
+    result = scope.function_num2bool([[0]])
+    result.should(be_false)
+  end
+
   it "should return false if passed string -1" do
     result = scope.function_num2bool(["-1"])
     result.should(be_false)
@@ -46,8 +70,14 @@ describe "the num2bool function" do
     result.should(be_false)
   end
 
-  it "should return false if passed something non-numeric" do
-    result = scope.function_num2bool(["xyzzy"])
+  it "should return false if passed array with string -1" do
+    result = scope.function_num2bool([["-1"]])
     result.should(be_false)
   end
+
+  it "should return false if passed array with number -1" do
+    result = scope.function_num2bool([[-1]])
+    result.should(be_false)
+  end
+
 end
-- 
cgit v1.2.3