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]
|
||