require_relative '../../spec_helper' require_relative 'fixtures/classes' describe "Array#delete" do it "removes elements that are #== to object" do x = mock('delete') def x.==(other) 3 == other end a = [1, 2, 3, x, 4, 3, 5, x] a.delete mock('not contained') a.should == [1, 2, 3, x, 4, 3, 5, x] a.delete 3 a.should == [1, 2, 4, 5] end it "calculates equality correctly for reference values" do a = ["foo", "bar", "foo", "quux", "foo"] a.delete "foo" a.should == ["bar","quux"] end it "returns object or nil if no elements match object" do [1, 2, 4, 5].delete(1).should == 1 [1, 2, 4, 5].delete(3).should == nil end it "may be given a block that is executed if no element matches object" do [1].delete(1) {:not_found}.should == 1 [].delete('a') {:not_found}.should == :not_found end it "returns nil if the array is empty due to a shift" do a = [1] a.shift a.delete(nil).should == nil end it "returns nil on a frozen array if a modification does not take place" do [1, 2, 3].freeze.delete(0).should == nil end it "raises a #{frozen_error_class} on a frozen array" do lambda { [1, 2, 3].freeze.delete(1) }.should raise_error(frozen_error_class) end it "keeps tainted status" do a = [1, 2] a.taint a.tainted?.should be_true a.delete(2) a.tainted?.should be_true a.delete(1) # now empty a.tainted?.should be_true end it "keeps untrusted status" do a = [1, 2] a.untrust a.untrusted?.should be_true a.delete(2) a.untrusted?.should be_true a.delete(1) # now empty a.untrusted?.should be_true end end /option> The Ruby Programming Language
summaryrefslogtreecommitdiff
path: root/node.h
AgeCommit message (Expand)Author
2009-02-25merge revision(s) 21677:shyouhei
2009-01-16merge revision(s) 18485:shyouhei
2009-01-15merge revision(s) 18463:shyouhei
2008-07-07merge revision(s) 17832:shyouhei
2008-05-22Merge from ruby_1_8.knu
2008-03-31* configure.in (RUBY_SETJMP, RUBY_LONGJMP, RUBY_JMP_BUF): prefersnobu
2007-03-24* node.h (struct rb_thread.locals): explicit as struct.nobu
2006-09-28* node.h (struct thread): declare win32_exception_list on cygwin andnobu
2006-09-24* node.h (struct thread): ia64 support is broken by sandbox patch.akr
2006-09-23* eval.c (rb_thread_save_context, rb_thread_restore_context):why
2006-08-31* eval.c (ruby_init): rename top_cref to ruby_top_cref and export,why
2006-02-13* eval.c (rb_call0): argument update propagation. [ruby-dev:28044]matz
2005-12-26* eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,nobu
2005-10-08* parse.y (rb_parser_malloc, rb_parser_free): manage parser stack onnobu
2005-03-22* eval.c (rb_add_event_hook): new function to add a hook function forshugo