Project

General

Profile

Bug #11544 ยป 0001-lib-set.rb-use-args-of-Enumerable-to_set-Set-to_set.patch

The patch adds *args by using << method. - torifuku.kaiou (Osamu Yamauchi), 09/21/2015 12:28 PM

View differences:

lib/set.rb
# overridden.
def to_set(klass = Set, *args, &block)
return self if instance_of?(Set) && klass == Set && block.nil? && args.empty?
klass.new(self, *args, &block)
super
end
def flatten_merge(set, seen = Set.new) # :nodoc:
......
# Makes a set from the enumerable object with given arguments.
# Needs to +require "set"+ to use this method.
def to_set(klass = Set, *args, &block)
klass.new(self, *args, &block)
if respond_to?(:<<)
klass.new(args.inject(dup) { |result, item| result << item }, &block)
else
args.inject(klass.new(self, &block)) { |result, item| result << (block ? block[item] : item) }
end
end
end
test/test_set.rb
set = ary.to_set(SortedSet) { |o| o * -2 }
assert_instance_of(SortedSet, set)
assert_equal([-10,-8,-6,-4,-2], set.sort)
set = ary.to_set(Set, 6, 7, 8)
assert_instance_of(Set, set)
assert_equal([1,2,3,4,5,6,7,8], set.sort)
set = ary.to_set(Set, 6, 7, 8) { |o| o * -2 }
assert_instance_of(Set, set)
assert_equal([-16,-14,-12,-10,-8,-6,-4,-2], set.sort)
set = ary.to_set
sorted_set = set.to_set(SortedSet, 6, -1, 4.3)
assert_instance_of(Set, set)
assert_instance_of(SortedSet, sorted_set)
assert_equal([1,2,3,4,5], set.sort)
assert_equal([-1,1,2,3,4,4.3,5,6], sorted_set.to_a)
set = sorted_set.to_set { |o| o * 2 }
assert_instance_of(Set, set)
assert_equal([-2,2,4,6,8,8.6,10,12], set.sort)
sorted_set = sorted_set.to_set(SortedSet, -1, -2) { |o| o * 2 }
assert_instance_of(SortedSet, sorted_set)
assert_equal([-4,-2,2,4,6,8,8.6,10,12], sorted_set.to_a)
hash = { 1 => 'Oh', 3 => 'Nagashima' }
set = hash.to_set
assert_equal(true, set.include?([1,'Oh']))
assert_equal(true, set.include?([3,'Nagashima']))
args = { 4 => 'Kurosawa', 14 => 'Sawamura', 16 => 'Kawakami' , 34 => 'Kaneda' }
set = hash.to_set(Set, *args)
assert_instance_of(Set, set)
assert_equal(true, set.include?([1,'Oh']))
assert_equal(true, set.include?([3,'Nagashima']))
assert_equal(true, set.include?([4,'Kurosawa']))
assert_equal(true, set.include?([14, 'Sawamura']))
assert_equal(true, set.include?([16, 'Kawakami']))
assert_equal(true, set.include?([34, 'Kaneda']))
set = hash.to_set(SortedSet, *args) { |o| o.last }
assert_instance_of(SortedSet, set)
assert_equal(['Kaneda','Kawakami','Kurosawa','Nagashima','Oh','Sawamura'], set.to_a)
end
end
    (1-1/1)