]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(#1) - fleshed out some more tests.
authorKen Barber <ken@bob.sh>
Sat, 23 Jul 2011 23:39:17 +0000 (00:39 +0100)
committerKen Barber <ken@bob.sh>
Sat, 23 Jul 2011 23:39:17 +0000 (00:39 +0100)
27 files changed:
lib/puppet/parser/functions/sort.rb
lib/puppet/parser/functions/squeeze.rb
spec/unit/parser/functions/is_valid_domain_name_spec.rb
spec/unit/parser/functions/is_valid_ip_address_spec.rb
spec/unit/parser/functions/is_valid_mac_address_spec.rb
spec/unit/parser/functions/join_spec.rb
spec/unit/parser/functions/join_with_prefix_spec.rb
spec/unit/parser/functions/keys_spec.rb
spec/unit/parser/functions/lstrip_spec.rb
spec/unit/parser/functions/member_spec.rb
spec/unit/parser/functions/num2bool_spec.rb
spec/unit/parser/functions/prefix_spec.rb
spec/unit/parser/functions/range_spec.rb
spec/unit/parser/functions/reverse_spec.rb
spec/unit/parser/functions/rstrip_spec.rb
spec/unit/parser/functions/size_spec.rb
spec/unit/parser/functions/sort_spec.rb
spec/unit/parser/functions/squeeze_spec.rb
spec/unit/parser/functions/str2bool_spec.rb
spec/unit/parser/functions/strip_spec.rb
spec/unit/parser/functions/swapcase_spec.rb
spec/unit/parser/functions/type_spec.rb
spec/unit/parser/functions/unique_spec.rb
spec/unit/parser/functions/upcase_spec.rb
spec/unit/parser/functions/values_at_spec.rb
spec/unit/parser/functions/values_spec.rb
spec/unit/parser/functions/zip_spec.rb

index 974141cdeff13d46643efc549820a98db2bcfd9f..54a40185198652957f007eddc3c905c95b6fc749 100644 (file)
@@ -7,11 +7,13 @@ module Puppet::Parser::Functions
     EOS
   ) do |arguments|
 
-    if (arguments.size != 0) then
+    if (arguments.size != 1) then
       raise(Puppet::ParseError, "sort(): Wrong number of arguments "+
-        "given #{arguments.size} for 0")
+        "given #{arguments.size} for 1")
     end
 
+    arguments[0].sort
+
   end
 end
 
index 02eb00ccc82013410a1c8f35851de4b42f624ff1..9a1dd20eb9af13a04549fe7f61bbeed71bdc2f43 100644 (file)
@@ -7,9 +7,26 @@ module Puppet::Parser::Functions
     EOS
   ) do |arguments|
 
-    if (arguments.size != 2) then
+    if ((arguments.size != 2) and (arguments.size != 1)) then
       raise(Puppet::ParseError, "squeeze(): Wrong number of arguments "+
-        "given #{arguments.size} for 2")
+        "given #{arguments.size} for 2 or 1")
+    end
+
+    item = arguments[0]
+    squeezeval = arguments[1] 
+
+    if item.is_a?(Array) then  
+      if squeezeval then
+        item.collect { |i| i.squeeze(squeezeval) }
+      else
+        item.collect { |i| i.squeeze }
+      end
+    else
+      if squeezeval then
+        item.squeeze(squeezeval)
+      else
+        item.squeeze
+      end
     end
 
   end
index 5cea285ab802eff3cce9bf28cee60b1ebd8afc68..f03f6e8aba67dac338d068da4ca7c2d2f06c8c16 100644 (file)
@@ -18,4 +18,14 @@ describe "the is_valid_domain_name function" do
     lambda { @scope.function_is_valid_domain_name([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return true if a valid domain name" do
+    result = @scope.function_is_valid_domain_name("foo.bar.com")
+    result.should(eq(true))
+  end
+
+  it "should return false if not a valid domain name" do
+    result = @scope.function_is_valid_domain_name("not valid")
+    result.should(eq(false))
+  end
+
 end
index fa803dd66c3e0255e2f328f8ea6ed1b70917639f..ee53ee1a23887051c603ebc8136c103132acc4e0 100644 (file)
@@ -18,4 +18,14 @@ describe "the is_valid_ip_address function" do
     lambda { @scope.function_is_valid_ip_address([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return true if an IP address" do
+    result = @scope.function_is_valid_ip_address("1.2.3.4")
+    result.should(eq(true))
+  end
+
+  it "should return false if not valid" do
+    result = @scope.function_is_valid_ip_address("asdf")
+    result.should(eq(false))
+  end
+
 end
index f2a83897e31673f2f6de4bdcfab058ff4860b2b6..c4eb4684bb8b9a0050b2643cc64717af7e74809a 100644 (file)
@@ -18,4 +18,14 @@ describe "the is_valid_mac_address function" do
     lambda { @scope.function_is_valid_mac_address([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return true if a valid mac address" do
+    result = @scope.function_is_valid_mac_address("00:a0:1f:12:7f:a0")
+    result.should(eq(true))
+  end
+
+  it "should return false if not valid" do
+    result = @scope.function_is_valid_mac_address("not valid")
+    result.should(eq(false))
+  end
+
 end
index a7dc0e58c4e1e9f7b78d106dc4ab65556c689f0c..1b3dec8a9259572345417b6a984c1fdcf84e05ef 100644 (file)
@@ -18,4 +18,9 @@ describe "the join function" do
     lambda { @scope.function_join([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should join an array into a string" do
+    result = @scope.function_join([["a","b","c"], ":"])
+    result.should(eq("a:b:c"))
+  end
+
 end
index 0182d8cc43d9a149fe4f7e3c527847f189834e4e..70e6965805b129405fde9c3851e694f02d55934a 100644 (file)
@@ -18,4 +18,9 @@ describe "the join_with_prefix function" do
     lambda { @scope.function_join_with_prefix([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should join an array into a string" do
+    result = @scope.function_join_with_prefix([["a","b","c"], ":", "p"])
+    result.should(eq("pa:pb:pc"))
+  end
+
 end
index 13dc2609198a7b24f0d3edc47d30baaf732fe02e..927be9602411596996e2f9bad0699f440506a480 100644 (file)
@@ -18,4 +18,9 @@ describe "the keys function" do
     lambda { @scope.function_keys([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return an array of keys when given a hash" do
+    result = @scope.function_keys([{'a'=>1, 'b' => 2}])
+    result.should(eq(['a','b']))
+  end
+
 end
index 9726675ed78c032421861338c610e693a4d6b44c..ac331fa25e82982d1290b7a3184a5dc47aaca9b4 100644 (file)
@@ -18,4 +18,9 @@ describe "the lstrip function" do
     lambda { @scope.function_lstrip([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should lstrip a string" do
+    result = @scope.function_lstrip(["  asdf"])
+    result.should(eq('asdf'))
+  end
+
 end
index 39b684fd91e992e3b50157b99dbf05e6141e20bf..2cebc0d697ec0a8ec3526219ff9180cb49966a7d 100644 (file)
@@ -18,4 +18,14 @@ describe "the member function" do
     lambda { @scope.function_member([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return true if a member is in an array" do
+    result = @scope.function_member([["a","b","c"], "a"])
+    result.should(eq(true))
+  end  
+
+  it "should return false if a member is not in an array" do
+    result = @scope.function_member([["a","b","c"], "d"])
+    result.should(eq(false))
+  end  
+
 end
index fbd25c886e31a8ac087c5f520139d8033a89548e..2f6435d1824604c0740523c73274d5e6d9986704 100644 (file)
@@ -18,4 +18,9 @@ describe "the num2bool function" do
     lambda { @scope.function_num2bool([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return true if 1" do
+    result = @scope.function_num2bool(["1"])
+    result.should(eq(true))
+  end
+
 end
index 9ede4397f713b228385c0f38f3a6460e932299f3..a0cbcabc7082c8238717a17645d417a32ad4ac22 100644 (file)
@@ -18,4 +18,9 @@ describe "the prefix function" do
     lambda { @scope.function_prefix([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return a prefixed array" do
+    result = @scope.function_prefix([['a','b','c'], 'p'])
+    result.should(eq(['pa','pb','pc']))
+  end
+
 end
index 23310bcdfd131aab8a4874bf5a8f5a19d3e83202..8c2446a170339bb66399867f107415951cd086f8 100644 (file)
@@ -18,4 +18,14 @@ describe "the range function" do
     lambda { @scope.function_range([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return a letter range" do
+    result = @scope.function_range(["a","d"])
+    result.should(eq(['a','b','c','d']))
+  end
+
+  it "should return a number range" do
+    result = @scope.function_range(["1","4"])
+    result.should(eq([1,2,3,4]))
+  end
+
 end
index 27aa2cf9350d42817e1d12cf14e3d54c50c15826..4fa50e4ac869dfe690266cf920307a7e0c8b5d25 100644 (file)
@@ -18,4 +18,9 @@ describe "the reverse function" do
     lambda { @scope.function_reverse([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should reverse a string" do
+    result = @scope.function_reverse(["asdfghijkl"])
+    result.should(eq('lkjihgfdsa'))
+  end
+
 end
index a6e73ecbf689365b831a4368507b70c5ee5ef4ea..af8cc125e95c031a86e4ae67b1c16230c41aa737 100644 (file)
@@ -18,4 +18,14 @@ describe "the rstrip function" do
     lambda { @scope.function_rstrip([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should rstrip a string" do
+    result = @scope.function_rstrip(["asdf  "])
+    result.should(eq('asdf'))
+  end
+
+  it "should rstrip each element in an array" do
+    result = @scope.function_rstrip([["a ","b ", "c "]])
+    result.should(eq(['a','b','c']))
+  end
+
 end
index 0d1f0c4f48663df4ed2a18a53ef47c51df9fcf3c..ccaa335328daa1819920bcedee81d80558e419e4 100644 (file)
@@ -18,4 +18,14 @@ describe "the size function" do
     lambda { @scope.function_size([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return the size of a string" do
+    result = @scope.function_size(["asdf"])
+    result.should(eq(4))
+  end
+
+  it "should return the size of an array" do
+    result = @scope.function_size([["a","b","c"]])
+    result.should(eq(3))
+  end
+
 end
index ae62d5fe4c436157a86a49979ee3bd3580272e2d..da5db7a6c9f0f78d5620d9ccb6a89c38a90858e3 100644 (file)
@@ -14,8 +14,13 @@ describe "the sort function" do
     Puppet::Parser::Functions.function("sort").should == "function_sort"
   end
 
-  it "should raise a ParseError if there is not 0 arguments" do
-    lambda { @scope.function_sort(['']) }.should( raise_error(Puppet::ParseError))
+  it "should raise a ParseError if there is not 1 arguments" do
+    lambda { @scope.function_sort(['','']) }.should( raise_error(Puppet::ParseError))
+  end
+
+  it "should sort an array" do
+    result = @scope.function_sort([["a","c","b"]])
+    result.should(eq(['a','b','c']))
   end
 
 end
index da8965c46ca0e6e1ce8aa10f0f158b4ac82184b4..9355ad255c4f9e008a9308ff109bbb402b409859 100644 (file)
@@ -18,4 +18,14 @@ describe "the squeeze function" do
     lambda { @scope.function_squeeze([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should squeeze a string" do
+    result = @scope.function_squeeze(["aaabbbbcccc"])
+    result.should(eq('abc'))
+  end
+
+  it "should squeeze all elements in an array" do
+    result = @scope.function_squeeze([["aaabbbbcccc","dddfff"]])
+    result.should(eq(['abc','df']))
+  end
+
 end
index 6a1ac958095563f5ef7472bffc9aa0247b45085b..d7f0ac9db3c494238171e8a85e4070503161c44c 100644 (file)
@@ -18,4 +18,14 @@ describe "the str2bool function" do
     lambda { @scope.function_str2bool([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should convert string 'true' to true" do
+    result = @scope.function_str2bool(["true"])
+    result.should(eq(true))
+  end
+
+  it "should convert string 'undef' to false" do
+    result = @scope.function_str2bool(["undef"])
+    result.should(eq(false))
+  end
+
 end
index ca06845c1219274338bc47434d1ec140d010c8ed..48a52dd58bffb629fdfd78e8d13a99e65c9c64a8 100644 (file)
@@ -18,4 +18,9 @@ describe "the strip function" do
     lambda { @scope.function_strip([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should strip a string" do
+    result = @scope.function_strip([" ab cd "])
+    result.should(eq('ab cd'))
+  end
+
 end
index 7c5ff30de51c60a48cf98f524da451c70add6e64..26860546cf917202667afa9c07dc2bf0c5805855 100644 (file)
@@ -18,4 +18,9 @@ describe "the swapcase function" do
     lambda { @scope.function_swapcase([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should swapcase a string" do
+    result = @scope.function_swapcase(["aaBBccDD"])
+    result.should(eq('AAbbCCdd'))
+  end
+
 end
index 4109da1769e5e1c883339c0ac480fc2e7f481ac9..fddb87df05674501136f819c043c19bcdb50ec47 100644 (file)
@@ -18,4 +18,9 @@ describe "the type function" do
     lambda { @scope.function_type([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return a type when given a string" do
+    result = @scope.function_type(["aaabbbbcccc"])
+    result.should(eq('String'))
+  end
+
 end
index fe7b3ca2ef5a74941fd43bc4cd56481f32dde346..7b8b08dcef9e75e38196b6676244bc0d050e1eaa 100644 (file)
@@ -18,4 +18,9 @@ describe "the unique function" do
     lambda { @scope.function_unique([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should remove duplicate elements in a string" do
+    result = @scope.function_squeeze([["aabbc"]])
+    result.should(eq(['abc']))
+  end
+
 end
index 39884eb99b4b242d902c25f97f8bf385fab26349..10e4c8a68f649ae829bc65eaa720228f9da80acd 100644 (file)
@@ -18,4 +18,9 @@ describe "the upcase function" do
     lambda { @scope.function_upcase([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should upcase a string" do
+    result = @scope.function_upcase(["abc"])
+    result.should(eq('ABC'))
+  end
+
 end
index af5dc2532f2e53da74327b9f51a4ec51df104d4c..ec8730b3318a44a03cd28fb7601c757d5293c368 100644 (file)
@@ -18,4 +18,9 @@ describe "the values_at function" do
     lambda { @scope.function_values_at([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return a value at from an array" do
+    result = @scope.function_values_at([['a','b','c'],"1"])
+    result.should(eq(['b']))
+  end
+
 end
index 2c313a0965bf8da0ad9688c520d95ceabdb5f925..92f1311d48a363ded4bb2637b675faf83b836ad7 100644 (file)
@@ -18,4 +18,9 @@ describe "the values function" do
     lambda { @scope.function_values([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should return values from a hash" do
+    result = @scope.function_values([{'a'=>'1','b'=>'2','c'=>'3'}])
+    result.should(eq(['1','2','3']))
+  end
+
 end
index 3d0392a53c3a82908f0f34e9c84d8f4bf7f0c7b3..074f4dfbf1dfe2eebc9951f0dbcfa56f1e0321e0 100644 (file)
@@ -18,4 +18,9 @@ describe "the zip function" do
     lambda { @scope.function_zip([]) }.should( raise_error(Puppet::ParseError))
   end
 
+  it "should be able to zip an array" do
+    result = @scope.function_zip([['1','2','3'],['4','5','6']])
+    result.should(eq([["1", "4"], ["2", "5"], ["3", "6"]]))
+  end
+
 end