-#! /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, %r{wrong number of arguments}i) }
+ it { is_expected.to run.with_params([]).and_raise_error(Puppet::ParseError, %r{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, %r{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 '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