diff --git a/test/test_helper.rb b/test/test_helper.rb index f1da754..3495ef3 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -87,8 +87,8 @@ class ActiveSupport::TestCase alias :ok :assert_block def assert_equivalent(enum1, enum2) - norm1 = enum1.to_a - norm2 = enum2.to_a + norm1 = enum1.group_by{|e|e}.values + norm2 = enum2.group_by{|e|e}.values assert_equal norm1.size, norm2.size, "Size mismatch: #{enum1.inspect} vs #{enum2.inspect}" assert_equal [], norm1 - norm2 assert_equal [], norm2 - norm1 diff --git a/test/unit/helper_test.rb b/test/unit/helper_test.rb new file mode 100644 index 0000000..f09475c --- /dev/null +++ b/test/unit/helper_test.rb @@ -0,0 +1,62 @@ +require_relative "../test_helper" + +class HelperTest < ActiveSupport::TestCase + + should 'assert_equivalent be true for the same arrays' do + a1 = [1,2,3] + a2 = [1,2,3] + assert_equivalent a1, a2 + end + + should 'assert_equivalent be true for equivalent arrays' do + a1 = [1,2,3] + a2 = [3,2,1] + assert_equivalent a1, a2 + end + + should 'assert_equivalent be true for equivalent arrays independent of parameter order' do + a1 = [1,2,3] + a2 = [3,2,1] + assert_equivalent a2, a1 + end + + should 'assert_equivalent be false for different arrays' do + a1 = [1,2,3] + a2 = [4,2,1] + assert_raise Minitest::Assertion do + assert_equivalent(a1, a2) + end + end + + should 'assert_equivalent be false for different arrays independent of parameter order' do + a1 = [1,2,3] + a2 = [4,2,1] + assert_raise Minitest::Assertion do + assert_equivalent(a2, a1) + end + end + + should 'assert_equivalent be false for arrays with different sizes' do + a1 = [1,2,3] + a2 = [1,2,3,4] + assert_raise Minitest::Assertion do + assert_equivalent(a1, a2) + end + end + + should 'assert_equivalent be false for arrays with same elements duplicated' do + a1 = [2,2,3] + a2 = [2,3,3] + assert_raise Minitest::Assertion do + assert_equivalent(a1, a2) + end + end + + should 'assert_equivalent be false for arrays with same elements duplicated of different sizes' do + a1 = [2,2,3] + a2 = [2,3,3,3] + assert_raise Minitest::Assertion do + assert_equivalent(a1, a2) + end + end +end -- libgit2 0.21.2