Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / functions / zip_spec.rb
index f265fce..e1ae8ee 100755 (executable)
@@ -1,31 +1,21 @@
-#! /usr/bin/env ruby -S rspec
 require 'spec_helper'
 
-describe "the zip function" do
-  let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
+describe 'zip' do
+  it { is_expected.not_to eq(nil) }
+  it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
+  it { is_expected.to run.with_params([]).and_raise_error(Puppet::ParseError, /wrong number of arguments/i) }
+  it {
+    pending("Current implementation ignores parameters after the third.")
+    is_expected.to run.with_params([], [], true, []).and_raise_error(Puppet::ParseError, /wrong number of arguments/i)
+  }
+  it { is_expected.to run.with_params([], []).and_return([]) }
+  it { is_expected.to run.with_params([1,2,3], [4,5,6]).and_return([[1,4], [2,5], [3,6]]) }
+  it { is_expected.to run.with_params([1,2,3], [4,5,6], false).and_return([[1,4], [2,5], [3,6]]) }
+  it { is_expected.to run.with_params([1,2,3], [4,5,6], true).and_return([1, 4, 2, 5, 3, 6]) }
 
-  it "should raise a ParseError if there is less than 1 arguments" do
-    expect { scope.function_zip([]) }.to( raise_error(Puppet::ParseError))
-  end
-
-  it "should be able to zip an array" do
-    result = scope.function_zip([['1','2','3'],['4','5','6']])
-    expect(result).to(eq([["1", "4"], ["2", "5"], ["3", "6"]]))
-    result = scope.function_zip([['1','2','3'],['4','5','6'], false])
-    result.should(eq([["1", "4"], ["2", "5"], ["3", "6"]]))
-  end
-
-  it "should be able to zip an array and flatten" do
-    result = scope.function_zip([['1','2','3'],['4','5','6'], true])
-    result.should(eq(["1", "4", "2", "5", "3", "6"]))
-  end
-
-  it "should accept objects which extend String for the second argument" do
-    class AlsoString < String
-    end
-
-    value = AlsoString.new('false')
-    result = scope.function_zip([['1','2','3'],['4','5','6'],value])
-    result.should(eq([["1", "4"], ["2", "5"], ["3", "6"]]))
+  context 'should run with UTF8 and double byte characters' do
+   it { is_expected.to run.with_params(['ầ', 'ь', 'ć'], ['đ', 'ề', 'ƒ']).and_return([['ầ','đ'], ['ь','ề'], ['ć', 'ƒ']]) }
+   it { is_expected.to run.with_params(['ペ', '含', '値'], ['ッ', '文', 'イ']).and_return([['ペ','ッ'], ['含','文'], ['値', 'イ']]) }
   end
 end
+