Commit fd438e0dc3fec1fea96e733b9b435a9e165d48da
1 parent
3bdce461
Exists in
master
and in
18 other branches
A saner implementation for assert_equivalent
Using the predefined assertion methods will give us meaningful failure messages by default.
Showing
1 changed file
with
5 additions
and
3 deletions
Show diff stats
test/test_helper.rb
@@ -87,9 +87,11 @@ class ActiveSupport::TestCase | @@ -87,9 +87,11 @@ class ActiveSupport::TestCase | ||
87 | alias :ok :assert_block | 87 | alias :ok :assert_block |
88 | 88 | ||
89 | def assert_equivalent(enum1, enum2) | 89 | def assert_equivalent(enum1, enum2) |
90 | - enum1 = enum1.group_by{|e|e}.values | ||
91 | - enum2 = enum2.group_by{|e|e}.values | ||
92 | - assert( (enum1.length == enum2.length) && ((enum1 - enum2) == []), "<#{enum1.inspect}> expected to be equivalent to <#{enum2.inspect}>") | 90 | + norm1 = enum1.to_a |
91 | + norm2 = enum2.to_a | ||
92 | + assert_equal [], norm1 - norm2 | ||
93 | + assert_equal [], norm2 - norm1 | ||
94 | + assert_equal norm1.size, enum2.size, "Size mismatch: #{enum1.inspect} vs #{enum2.inspect}" | ||
93 | end | 95 | end |
94 | 96 | ||
95 | def assert_mandatory(object, attribute, test_value = 'some random string') | 97 | def assert_mandatory(object, attribute, test_value = 'some random string') |