Feature #4553 ยป pick_pop.diff
lib/set.rb (working copy) | ||
---|---|---|
self
|
||
end
|
||
# Picks an arbitrary element from the set and returns it. Use +pop+ to
|
||
# pick and delete simultaneously.
|
||
def pick
|
||
@hash.first.first
|
||
end
|
||
# Picks an arbitrary element from the set and deletes it. Use +pick+ to
|
||
# pick without deletion.
|
||
def pop
|
||
key = pick
|
||
@hash.delete(key)
|
||
key
|
||
end
|
||
# Adds the given object to the set and returns self. Use +merge+ to
|
||
# add many elements at once.
|
||
def add(o)
|
||
... | ... | |
}
|
||
end
|
||
def test_pick
|
||
set = Set[5,3,1]
|
||
assert_equal(true, set.include?(set.pick))
|
||
end
|
||
def test_pop
|
||
total = Set[9,1,8,2,7]
|
||
|
||
current = Set[9,1,8,2,7]
|
||
removed = Set[]
|
||
|
||
until current.empty?
|
||
removed << current.pop
|
||
assert_equal(total, current | removed)
|
||
assert_equal(true, (current & removed).empty?)
|
||
end
|
||
end
|
||
def test_add
|
||
set = Set[1,2,3]
|
||