Мы делаем небольшую работу в Ruby 1.8.7, которая требует обхода и разбиения неориентированного графа, который странным образом терпит неудачу в рабочей среде. Когда я развожу ошибочный код на самые простые компоненты, я получаю странный провальный тест:
it 'should be able to clear a ruby set of arrays' do
a = ["2", "b", "d"]
b = ["1", "a", "c", "e", "f"]
set = Set.new([a, b])
a.concat(b)
p "before clear: #{set.inspect}"
set.clear
p "after clear: #{set.inspect}"
set.size.should == 0
end
Тест не проходит с этим выводом:
"before clear: #<Set: {[\"1\", \"a\", \"c\", \"e\", \"f\"], [\"2\", \"b\", \"d\", \"1\", \"a\", \"c\", \"e\", \"f\"]}>"
"after clear: #<Set: {[\"2\", \"b\", \"d\", \"1\", \"a\", \"c\", \"e\", \"f\"]}>"
expected: 0
got: 1 (using ==)
Попытки удалить из набора тоже ведут себя странно. Я предполагаю, что Ruby зацикливается на хеш-значениях ключей в массиве, изменяющихся в concat(), но, конечно же, я все равно смогу очистить набор. Верно?