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 ==)
セットから削除しようとすると、奇妙な動作もします。配列内のキーのハッシュ値がconcat()で変更されていることに、Rubyがハングアップしていると思いますが、それでもSetをクリアできるはずです。右?