X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Fspec%2Ffunctions%2Fdelete_at_spec.rb;h=89359b1b874e5ec010314fdb6446fda3ebc3ba4e;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=7c20aec42c96026712e335b091122edad9cc33d4;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/spec/functions/delete_at_spec.rb b/3rdparty/modules/stdlib/spec/functions/delete_at_spec.rb old mode 100755 new mode 100644 index 7c20aec42..89359b1b8 --- a/3rdparty/modules/stdlib/spec/functions/delete_at_spec.rb +++ b/3rdparty/modules/stdlib/spec/functions/delete_at_spec.rb @@ -1,25 +1,29 @@ -#! /usr/bin/env ruby -S rspec require 'spec_helper' -describe "the delete_at function" do - let(:scope) { PuppetlabsSpec::PuppetInternals.scope } +describe 'delete_at' 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}) } + it { is_expected.to run.with_params('one', 1).and_raise_error(Puppet::ParseError, %r{Requires array}) } + it { is_expected.to run.with_params(1, 1).and_raise_error(Puppet::ParseError, %r{Requires array}) } + it { is_expected.to run.with_params(['one'], 'two').and_raise_error(Puppet::ParseError, %r{You must provide non-negative numeric}) } + it { + pending('Current implementation ignores parameters after the first two.') + is_expected.to run.with_params(['one'], 0, 1).and_raise_error(Puppet::ParseError) + } - it "should exist" do - expect(Puppet::Parser::Functions.function("delete_at")).to eq("function_delete_at") + describe 'argument validation' do + it { is_expected.to run.with_params([0, 1, 2], 3).and_raise_error(Puppet::ParseError, %r{Given index exceeds size of array}) } end - it "should raise a ParseError if there is less than 1 arguments" do - expect { scope.function_delete_at([]) }.to( raise_error(Puppet::ParseError)) - end - - it "should delete an item at specified location from an array" do - result = scope.function_delete_at([['a','b','c'],1]) - expect(result).to(eq(['a','c'])) - end + it { is_expected.to run.with_params([0, 1, 2], 1).and_return([0, 2]) } + it { is_expected.to run.with_params([0, 1, 2], -1).and_return([0, 1]) } + it { is_expected.to run.with_params([0, 1, 2], -4).and_return([0, 1, 2]) } + it { is_expected.to run.with_params(['ƒờở', 'βāř', 'ьầż'], 1).and_return(['ƒờở', 'ьầż']) } - it "should not change origin array passed as argument" do - origin_array = ['a','b','c','d'] - result = scope.function_delete_at([origin_array, 1]) - expect(origin_array).to(eq(['a','b','c','d'])) + it 'leaves the original array intact' do + argument = [1, 2, 3] + original = argument.dup + _result = subject.execute(argument, 2) + expect(argument).to eq(original) end end