summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorJoshua Harlan Lifton <lifton@puppetlabs.com>2012-11-17 22:27:15 -0800
committerJeff McCune <jeff@puppetlabs.com>2012-11-19 08:44:44 -0500
commit7322e4dc2f8dc831097d2b0fa3768df0689acfa2 (patch)
tree9c583ad535b007866573d48f2d426f5e866eed3c /spec/unit
parent0798059361cd79991220ff997529593a4cb43a0e (diff)
Extend delete function for strings and hashes
Previous to this commit, the delete function only acted on arrays. This commit adds the same functionality for hashes and strings in the obvious way: delete(h, k) would delete the k key from the h hash and delete(s, sub) would delete all instances of the sub substring from the s string.
Diffstat (limited to 'spec/unit')
-rwxr-xr-xspec/unit/puppet/parser/functions/delete_spec.rb25
1 files changed, 22 insertions, 3 deletions
diff --git a/spec/unit/puppet/parser/functions/delete_spec.rb b/spec/unit/puppet/parser/functions/delete_spec.rb
index 0549232..2f29c93 100755
--- a/spec/unit/puppet/parser/functions/delete_spec.rb
+++ b/spec/unit/puppet/parser/functions/delete_spec.rb
@@ -8,12 +8,31 @@ describe "the delete function" do
Puppet::Parser::Functions.function("delete").should == "function_delete"
end
- it "should raise a ParseError if there is less than 1 arguments" do
+ it "should raise a ParseError if there are fewer than 2 arguments" do
lambda { scope.function_delete([]) }.should( raise_error(Puppet::ParseError))
end
- it "should delete an item from an array" do
- result = scope.function_delete([['a','b','c'],'b'])
+ it "should raise a ParseError if there are greater than 2 arguments" do
+ lambda { scope.function_delete([[], 'foo', 'bar']) }.should( raise_error(Puppet::ParseError))
+ end
+
+ it "should raise a TypeError if a number is passed as the first argument" do
+ lambda { scope.function_delete([1, 'bar']) }.should( raise_error(TypeError))
+ end
+
+ it "should delete all instances of an element from an array" do
+ result = scope.function_delete([['a','b','c','b'],'b'])
result.should(eq(['a','c']))
end
+
+ it "should delete all instances of a substring from a string" do
+ result = scope.function_delete(['foobarbabarz','bar'])
+ result.should(eq('foobaz'))
+ end
+
+ it "should delete a key from a hash" do
+ result = scope.function_delete([{ 'a' => 1, 'b' => 2, 'c' => 3 },'b'])
+ result.should(eq({ 'a' => 1, 'c' => 3 }))
+ end
+
end