File tree Expand file tree Collapse file tree 3 files changed +55
-40
lines changed Expand file tree Collapse file tree 3 files changed +55
-40
lines changed Original file line number Diff line number Diff line change @@ -171,6 +171,8 @@ def each_value
171
171
each_pair { |k , v | yield v }
172
172
end unless method_defined? ( :each_value )
173
173
174
+ alias_method :each , :each_pair unless method_defined? ( :each )
175
+
174
176
def key ( value )
175
177
each_pair { |k , v | return k if v == value }
176
178
nil
Original file line number Diff line number Diff line change
1
+ shared_examples :collection_each do
2
+
3
+ it 'common' do
4
+ @cache . send ( method ) { |k , v | fail }
5
+ expect ( @cache ) . to eq @cache . send ( method ) { }
6
+ @cache [ :a ] = 1
7
+
8
+ h = { }
9
+ @cache . send ( method ) { |k , v | h [ k ] = v }
10
+ expect ( { :a => 1 } ) . to eq h
11
+
12
+ @cache [ :b ] = 2
13
+ h = { }
14
+ @cache . send ( method ) { |k , v | h [ k ] = v }
15
+ expect ( { :a => 1 , :b => 2 } ) . to eq h
16
+ end
17
+
18
+ it 'pair iterator' do
19
+ @cache [ :a ] = 1
20
+ @cache [ :b ] = 2
21
+ i = 0
22
+ r = @cache . send ( method ) do |k , v |
23
+ if i == 0
24
+ i += 1
25
+ next
26
+ fail
27
+ elsif i == 1
28
+ break :breaked
29
+ end
30
+ end
31
+
32
+ expect ( :breaked ) . to eq r
33
+ end
34
+
35
+ it 'allows modification' do
36
+ @cache [ :a ] = 1
37
+ @cache [ :b ] = 1
38
+ @cache [ :c ] = 1
39
+
40
+ expect_size_change ( 1 ) do
41
+ @cache . send ( method ) do |k , v |
42
+ @cache [ :z ] = 1
43
+ end
44
+ end
45
+ end
46
+ end
Original file line number Diff line number Diff line change
1
+ require_relative 'collection_each_shared'
1
2
Thread . abort_on_exception = true
2
3
3
4
module Concurrent
@@ -623,48 +624,14 @@ def key # assert_collision_resistance expects to be able to call .key to get the
623
624
end
624
625
625
626
describe '#each_pair' do
626
- it 'common' do
627
- @cache . each_pair { |k , v | fail }
628
- expect ( @cache ) . to eq @cache . each_pair { }
629
- @cache [ :a ] = 1
630
-
631
- h = { }
632
- @cache . each_pair { |k , v | h [ k ] = v }
633
- expect ( { :a => 1 } ) . to eq h
634
-
635
- @cache [ :b ] = 2
636
- h = { }
637
- @cache . each_pair { |k , v | h [ k ] = v }
638
- expect ( { :a => 1 , :b => 2 } ) . to eq h
639
- end
640
-
641
- it 'pair iterator' do
642
- @cache [ :a ] = 1
643
- @cache [ :b ] = 2
644
- i = 0
645
- r = @cache . each_pair do |k , v |
646
- if i == 0
647
- i += 1
648
- next
649
- fail
650
- elsif i == 1
651
- break :breaked
652
- end
653
- end
654
-
655
- expect ( :breaked ) . to eq r
627
+ it_should_behave_like :collection_each do
628
+ let ( :method ) { :each_pair }
656
629
end
630
+ end
657
631
658
- it 'allows modification' do
659
- @cache [ :a ] = 1
660
- @cache [ :b ] = 1
661
- @cache [ :c ] = 1
662
-
663
- expect_size_change ( 1 ) do
664
- @cache . each_pair do |k , v |
665
- @cache [ :z ] = 1
666
- end
667
- end
632
+ describe '#each' do
633
+ it_should_behave_like :collection_each do
634
+ let ( :method ) { :each }
668
635
end
669
636
end
670
637
You can’t perform that action at this time.
0 commit comments