axiom-optimizer 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -1
  3. data/.rubocop.yml +6 -0
  4. data/.travis.yml +16 -20
  5. data/CONTRIBUTING.md +1 -2
  6. data/Gemfile +3 -1
  7. data/Gemfile.devtools +28 -18
  8. data/README.md +7 -13
  9. data/TODO +6 -5
  10. data/axiom-optimizer.gemspec +3 -3
  11. data/config/flay.yml +1 -1
  12. data/config/reek.yml +5 -29
  13. data/config/rubocop.yml +16 -10
  14. data/lib/axiom/optimizer.rb +3 -7
  15. data/lib/axiom/optimizer/algebra/difference.rb +2 -2
  16. data/lib/axiom/optimizer/algebra/extension.rb +6 -6
  17. data/lib/axiom/optimizer/algebra/intersection.rb +2 -2
  18. data/lib/axiom/optimizer/algebra/join.rb +4 -4
  19. data/lib/axiom/optimizer/algebra/product.rb +4 -4
  20. data/lib/axiom/optimizer/algebra/projection.rb +5 -5
  21. data/lib/axiom/optimizer/algebra/rename.rb +10 -10
  22. data/lib/axiom/optimizer/algebra/restriction.rb +8 -9
  23. data/lib/axiom/optimizer/algebra/summarization.rb +7 -7
  24. data/lib/axiom/optimizer/algebra/union.rb +2 -2
  25. data/lib/axiom/optimizer/function.rb +4 -6
  26. data/lib/axiom/optimizer/function/binary.rb +2 -2
  27. data/lib/axiom/optimizer/function/connective/binary.rb +1 -1
  28. data/lib/axiom/optimizer/function/connective/negation.rb +1 -1
  29. data/lib/axiom/optimizer/function/predicate.rb +1 -1
  30. data/lib/axiom/optimizer/function/predicate/comparable.rb +8 -6
  31. data/lib/axiom/optimizer/function/predicate/enumerable.rb +2 -2
  32. data/lib/axiom/optimizer/function/unary.rb +1 -1
  33. data/lib/axiom/optimizer/relation/operation/binary.rb +12 -12
  34. data/lib/axiom/optimizer/relation/operation/reverse.rb +9 -9
  35. data/lib/axiom/optimizer/relation/operation/{order.rb → sorted.rb} +15 -15
  36. data/lib/axiom/optimizer/relation/operation/unary.rb +7 -7
  37. data/lib/axiom/optimizer/support/predicate_partition.rb +11 -13
  38. data/lib/axiom/optimizer/version.rb +1 -1
  39. data/spec/integration/axiom/algebra/difference/optimize_spec.rb +12 -12
  40. data/spec/integration/axiom/algebra/intersection/optimize_spec.rb +12 -12
  41. data/spec/integration/axiom/algebra/join/optimize_spec.rb +6 -6
  42. data/spec/integration/axiom/algebra/product/optimize_spec.rb +10 -10
  43. data/spec/integration/axiom/algebra/projection/optimize_spec.rb +14 -14
  44. data/spec/integration/axiom/algebra/rename/optimize_spec.rb +38 -38
  45. data/spec/integration/axiom/algebra/restriction/optimize_spec.rb +12 -12
  46. data/spec/integration/axiom/algebra/summarization/optimize_spec.rb +2 -2
  47. data/spec/integration/axiom/algebra/union/optimize_spec.rb +16 -16
  48. data/spec/integration/axiom/function/optimize_spec.rb +1 -1
  49. data/spec/integration/axiom/relation/operation/limit/optimize_spec.rb +20 -20
  50. data/spec/integration/axiom/relation/operation/offset/optimize_spec.rb +14 -14
  51. data/spec/integration/axiom/relation/operation/reverse/optimize_spec.rb +15 -15
  52. data/spec/integration/axiom/relation/operation/{order → sorted}/optimize_spec.rb +6 -6
  53. data/spec/integration/axiom/relation/optimize_spec.rb +1 -1
  54. data/spec/shared/function_connective_binary_optimize_behavior.rb +8 -2
  55. data/spec/shared/optimize_method_behavior.rb +0 -11
  56. data/spec/spec_helper.rb +9 -9
  57. data/spec/support/config_alias.rb +2 -0
  58. data/spec/unit/axiom/optimizer/algebra/extension/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  59. data/spec/unit/axiom/optimizer/algebra/extension/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  60. data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimize_spec.rb +3 -3
  61. data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimize_spec.rb +3 -3
  62. data/spec/unit/axiom/optimizer/algebra/rename/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  63. data/spec/unit/axiom/optimizer/algebra/rename/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  64. data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimize_spec.rb +1 -1
  65. data/spec/unit/axiom/optimizer/algebra/restriction/predicate_spec.rb +5 -4
  66. data/spec/unit/axiom/optimizer/algebra/restriction/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  67. data/spec/unit/axiom/optimizer/algebra/restriction/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  68. data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/class_methods/extension_default_spec.rb +1 -1
  69. data/spec/unit/axiom/optimizer/algebra/summarization/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  70. data/spec/unit/axiom/optimizer/algebra/summarization/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  71. data/spec/unit/axiom/optimizer/algebra/summarization/summarize_per_spec.rb +1 -1
  72. data/spec/unit/axiom/optimizer/function/binary/constant_operands/optimizable_predicate_spec.rb +4 -4
  73. data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimizable_predicate_spec.rb +2 -2
  74. data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimizable_predicate_spec.rb +2 -2
  75. data/spec/unit/axiom/optimizer/function/unary/constant_operand/optimizable_predicate_spec.rb +1 -1
  76. data/spec/unit/axiom/optimizer/function/util/class_methods/max_spec.rb +1 -1
  77. data/spec/unit/axiom/optimizer/function/util/class_methods/min_spec.rb +1 -1
  78. data/spec/unit/axiom/optimizer/optimizable/optimize_spec.rb +3 -3
  79. data/spec/unit/axiom/optimizer/optimizable_predicate_spec.rb +1 -5
  80. data/spec/unit/axiom/optimizer/optimize_spec.rb +1 -5
  81. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_left → sorted_left}/optimizable_predicate_spec.rb +3 -3
  82. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_left → sorted_left}/optimize_spec.rb +1 -1
  83. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_right → sorted_right}/optimizable_predicate_spec.rb +3 -3
  84. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_right → sorted_right}/optimize_spec.rb +1 -1
  85. data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimize_spec.rb +2 -2
  86. data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimize_spec.rb +4 -4
  87. data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimize_spec.rb +3 -3
  88. data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimize_spec.rb +2 -2
  89. data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimize_spec.rb +3 -3
  90. data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimize_spec.rb +3 -3
  91. data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimize_spec.rb +3 -3
  92. data/spec/unit/axiom/optimizer/relation/operation/reverse/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  93. data/spec/unit/axiom/optimizer/relation/operation/reverse/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  94. data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimize_spec.rb +4 -4
  95. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/one_limit_operand/optimizable_predicate_spec.rb +2 -2
  96. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/one_limit_operand/optimize_spec.rb +1 -1
  97. data/spec/unit/axiom/optimizer/relation/operation/{order/order_operand → sorted/sorted_operand}/optimizable_predicate_spec.rb +4 -4
  98. data/spec/unit/axiom/optimizer/relation/operation/{order/order_operand → sorted/sorted_operand}/optimize_spec.rb +5 -5
  99. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/unoptimized_operand/optimizable_predicate_spec.rb +2 -2
  100. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/unoptimized_operand/optimize_spec.rb +2 -2
  101. data/spec/unit/axiom/optimizer/relation/operation/unary/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +4 -4
  102. data/spec/unit/axiom/optimizer/relation/operation/unary/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  103. metadata +291 -47
  104. data/spec/support/ice_nine_config.rb +0 -6
@@ -6,7 +6,7 @@ module Axiom
6
6
  module Operation
7
7
 
8
8
  # Abstract base class representing Reverse optimizations
9
- class Reverse < Order
9
+ class Reverse < Sorted
10
10
 
11
11
  # Optimize when the operand is a Reverse
12
12
  class ReverseOperand < self
@@ -31,28 +31,28 @@ module Axiom
31
31
 
32
32
  end # class ReverseOperand
33
33
 
34
- # Optimize when the operand is an Order
35
- class OrderOperand < self
34
+ # Optimize when the operand is an Sorted
35
+ class SortedOperand < self
36
36
 
37
- # Test if the operand is an Order
37
+ # Test if the operand is an Sorted
38
38
  #
39
39
  # @return [Boolean]
40
40
  #
41
41
  # @api private
42
42
  def optimizable?
43
- operand.kind_of?(Axiom::Relation::Operation::Order)
43
+ operand.kind_of?(Axiom::Relation::Operation::Sorted)
44
44
  end
45
45
 
46
- # Flatten Reverse operation and Order operand into an Order
46
+ # Flatten Reverse operation and Sorted operand into an Sorted
47
47
  #
48
- # @return [Order]
48
+ # @return [Sorted]
49
49
  #
50
50
  # @api private
51
51
  def optimize
52
52
  operand.operand.sort_by { operation.directions }
53
53
  end
54
54
 
55
- end # class OrderOperand
55
+ end # class SortedOperand
56
56
 
57
57
  # Optimize when operand is optimizable
58
58
  class UnoptimizedOperand < self
@@ -71,7 +71,7 @@ module Axiom
71
71
 
72
72
  Axiom::Relation::Operation::Reverse.optimizer = chain(
73
73
  ReverseOperand,
74
- OrderOperand,
74
+ SortedOperand,
75
75
  OneLimitOperand,
76
76
  EmptyOperand,
77
77
  MaterializedOperand,
@@ -5,13 +5,13 @@ module Axiom
5
5
  module Relation
6
6
  module Operation
7
7
 
8
- # Abstract base class representing Order optimizations
9
- class Order < Unary
8
+ # Abstract base class representing Sorted optimizations
9
+ class Sorted < Unary
10
10
 
11
- # Optimize when the operand is an Order
12
- class OrderOperand < self
11
+ # Optimize when the operand is an Sorted
12
+ class SortedOperand < self
13
13
 
14
- # Test if the operand is an Order
14
+ # Test if the operand is an Sorted
15
15
  #
16
16
  # @return [Boolean]
17
17
  #
@@ -20,16 +20,16 @@ module Axiom
20
20
  operand.kind_of?(operation.class)
21
21
  end
22
22
 
23
- # Flatten Order operations using the operation directions
23
+ # Flatten Sorted operations using the operation directions
24
24
  #
25
- # @return [Order]
25
+ # @return [Sorted]
26
26
  #
27
27
  # @api private
28
28
  def optimize
29
- operand.operand.sort_by { operation.directions }
29
+ operand.operand.sort_by(operation.directions)
30
30
  end
31
31
 
32
- end # class OrderOperand
32
+ end # class SortedOperand
33
33
 
34
34
  # Optimize when the operand is a Limit with a limit of 1
35
35
  class OneLimitOperand < self
@@ -44,7 +44,7 @@ module Axiom
44
44
  operand.limit == 1
45
45
  end
46
46
 
47
- # An Order of a Limit with a limit of 1 is a noop
47
+ # An Sorted of a Limit with a limit of 1 is a noop
48
48
  #
49
49
  # @return [Limit]
50
50
  #
@@ -59,26 +59,26 @@ module Axiom
59
59
  class UnoptimizedOperand < self
60
60
  include Function::Unary::UnoptimizedOperand
61
61
 
62
- # Return an Order with an optimized operand
62
+ # Return an Sorted with an optimized operand
63
63
  #
64
64
  # @return [Offset]
65
65
  #
66
66
  # @api private
67
67
  def optimize
68
- operand.sort_by { operation.directions }
68
+ operand.sort_by(operation.directions)
69
69
  end
70
70
 
71
71
  end # class UnoptimizedOperand
72
72
 
73
- Axiom::Relation::Operation::Order.optimizer = chain(
74
- OrderOperand,
73
+ Axiom::Relation::Operation::Sorted.optimizer = chain(
74
+ SortedOperand,
75
75
  OneLimitOperand,
76
76
  EmptyOperand,
77
77
  MaterializedOperand,
78
78
  UnoptimizedOperand
79
79
  )
80
80
 
81
- end # class Order
81
+ end # class Sorted
82
82
  end # module Operation
83
83
  end # module Relation
84
84
  end # class Optimizer
@@ -26,28 +26,28 @@ module Axiom
26
26
  @header = operation.header
27
27
  end
28
28
 
29
- # Optimize when the operand is an Order
30
- module OrderOperand
29
+ # Optimize when the operand is an Sorted
30
+ module SortedOperand
31
31
 
32
- # Test if the operand is an Order
32
+ # Test if the operand is an Sorted
33
33
  #
34
34
  # @return [Boolean]
35
35
  #
36
36
  # @api private
37
37
  def optimizable?
38
- operand.kind_of?(Axiom::Relation::Operation::Order)
38
+ operand.kind_of?(Axiom::Relation::Operation::Sorted)
39
39
  end
40
40
 
41
- # Drop the Order and wrap the operand
41
+ # Drop the Sorted and wrap the operand
42
42
  #
43
- # @return [Order]
43
+ # @return [Sorted]
44
44
  #
45
45
  # @api private
46
46
  def optimize
47
47
  wrap_operand
48
48
  end
49
49
 
50
- end # module OrderOperand
50
+ end # module SortedOperand
51
51
 
52
52
  # Optimize when the header is not changed
53
53
  class UnchangedHeader < self
@@ -45,14 +45,12 @@ module Axiom
45
45
  #
46
46
  # @api private
47
47
  def initialize(predicate, left_header, right_header)
48
- @left = TAUTOLOGY
49
- @right = TAUTOLOGY
50
- @remainder = TAUTOLOGY
48
+ @left = @right = @remainder = TAUTOLOGY
51
49
 
52
50
  @left_header = left_header
53
51
  @right_header = right_header
54
52
 
55
- partition!(predicate)
53
+ partition(predicate)
56
54
  end
57
55
 
58
56
  private
@@ -64,14 +62,14 @@ module Axiom
64
62
  # @return [undefined]
65
63
  #
66
64
  # @api private
67
- def partition!(predicate)
65
+ def partition(predicate)
68
66
  each_operand(predicate) do |operand|
69
67
  case operand
70
- when Axiom::Function::Binary then partition_binary!(operand)
71
- when Axiom::Function::Unary then partition_unary!(operand)
72
- when Axiom::Attribute::Boolean then partition_attribute!(operand)
68
+ when Axiom::Function::Binary then partition_binary(operand)
69
+ when Axiom::Function::Unary then partition_unary(operand)
70
+ when Axiom::Attribute::Boolean then partition_attribute(operand)
73
71
  else
74
- partition_proposition!(operand)
72
+ partition_proposition(operand)
75
73
  end
76
74
  end
77
75
  end
@@ -83,7 +81,7 @@ module Axiom
83
81
  # @return [undefined]
84
82
  #
85
83
  # @api private
86
- def partition_binary!(function)
84
+ def partition_binary(function)
87
85
  operands = [function.left, function.right].grep(Axiom::Attribute)
88
86
  left_operands = @left_header & operands
89
87
  right_operands = @right_header & operands
@@ -103,7 +101,7 @@ module Axiom
103
101
  # @return [undefined]
104
102
  #
105
103
  # @api private
106
- def partition_unary!(function)
104
+ def partition_unary(function)
107
105
  operand = function.operand
108
106
  @left &= function if @left_header.include?(operand)
109
107
  @right &= function if @right_header.include?(operand)
@@ -116,7 +114,7 @@ module Axiom
116
114
  # @return [undefined]
117
115
  #
118
116
  # @api private
119
- def partition_attribute!(attribute)
117
+ def partition_attribute(attribute)
120
118
  @left &= attribute if @left_header.include?(attribute)
121
119
  @right &= attribute if @right_header.include?(attribute)
122
120
  end
@@ -128,7 +126,7 @@ module Axiom
128
126
  # @return [undefined]
129
127
  #
130
128
  # @api private
131
- def partition_proposition!(proposition)
129
+ def partition_proposition(proposition)
132
130
  @remainder &= proposition
133
131
  @left &= proposition
134
132
  @right &= proposition
@@ -4,7 +4,7 @@ module Axiom
4
4
  class Optimizer
5
5
 
6
6
  # Gem version
7
- VERSION = '0.1.1'.freeze
7
+ VERSION = '0.2.0'.freeze
8
8
 
9
9
  end # class Optimizer
10
10
  end # module Axiom
@@ -14,8 +14,8 @@ describe Algebra::Difference, '#optimize' do
14
14
 
15
15
  before do
16
16
  # skip dup of the left and right body to avoid clearing the method stubs
17
- left_body.stub(:frozen?).and_return(true)
18
- right_body.stub(:frozen?).and_return(true)
17
+ allow(left_body).to receive(:frozen?).and_return(true)
18
+ allow(right_body).to receive(:frozen?).and_return(true)
19
19
  end
20
20
 
21
21
  context 'left is an empty relation' do
@@ -29,7 +29,7 @@ describe Algebra::Difference, '#optimize' do
29
29
  end
30
30
 
31
31
  it 'does not execute right_body#each' do
32
- right_body.should_not_receive(:each)
32
+ expect(right_body).not_to receive(:each)
33
33
  subject
34
34
  end
35
35
 
@@ -47,7 +47,7 @@ describe Algebra::Difference, '#optimize' do
47
47
  end
48
48
 
49
49
  it 'does not execute left_body#each' do
50
- left_body.should_not_receive(:each)
50
+ expect(left_body).not_to receive(:each)
51
51
  subject
52
52
  end
53
53
 
@@ -65,12 +65,12 @@ describe Algebra::Difference, '#optimize' do
65
65
  end
66
66
 
67
67
  it 'does not execute left_body#each' do
68
- left_body.should_not_receive(:each)
68
+ expect(left_body).not_to receive(:each)
69
69
  subject
70
70
  end
71
71
 
72
72
  it 'does not execute right_body#each' do
73
- right_body.should_not_receive(:each)
73
+ expect(right_body).not_to receive(:each)
74
74
  subject
75
75
  end
76
76
 
@@ -88,12 +88,12 @@ describe Algebra::Difference, '#optimize' do
88
88
  end
89
89
 
90
90
  it 'does not execute left_body#each' do
91
- left_body.should_not_receive(:each)
91
+ expect(left_body).not_to receive(:each)
92
92
  subject
93
93
  end
94
94
 
95
95
  it 'does not execute right_body#each' do
96
- right_body.should_not_receive(:each)
96
+ expect(right_body).not_to receive(:each)
97
97
  subject
98
98
  end
99
99
 
@@ -113,12 +113,12 @@ describe Algebra::Difference, '#optimize' do
113
113
  end
114
114
 
115
115
  it 'executes left_body#each' do
116
- left_body.should_receive(:each)
116
+ expect(left_body).to receive(:each)
117
117
  subject
118
118
  end
119
119
 
120
120
  it 'executes right_body#each' do
121
- right_body.should_receive(:each)
121
+ expect(right_body).to receive(:each)
122
122
  subject
123
123
  end
124
124
 
@@ -133,12 +133,12 @@ describe Algebra::Difference, '#optimize' do
133
133
  it { should be(object) }
134
134
 
135
135
  it 'executes left_body#each' do
136
- left_body.should_receive(:each)
136
+ expect(left_body).to receive(:each)
137
137
  subject
138
138
  end
139
139
 
140
140
  it 'executes right_body#each' do
141
- right_body.should_receive(:each)
141
+ expect(right_body).to receive(:each)
142
142
  subject
143
143
  end
144
144
 
@@ -14,8 +14,8 @@ describe Algebra::Intersection, '#optimize' do
14
14
 
15
15
  before do
16
16
  # skip dup of the left and right body to avoid clearing the method stubs
17
- left_body.stub(:frozen?).and_return(true)
18
- right_body.stub(:frozen?).and_return(true)
17
+ allow(left_body).to receive(:frozen?).and_return(true)
18
+ allow(right_body).to receive(:frozen?).and_return(true)
19
19
  end
20
20
 
21
21
  context 'left is an empty relation' do
@@ -29,7 +29,7 @@ describe Algebra::Intersection, '#optimize' do
29
29
  end
30
30
 
31
31
  it 'does not execute right_body#each' do
32
- right_body.should_not_receive(:each)
32
+ expect(right_body).not_to receive(:each)
33
33
  subject
34
34
  end
35
35
 
@@ -47,7 +47,7 @@ describe Algebra::Intersection, '#optimize' do
47
47
  end
48
48
 
49
49
  it 'does not execute left_body#each' do
50
- left_body.should_not_receive(:each)
50
+ expect(left_body).not_to receive(:each)
51
51
  subject
52
52
  end
53
53
 
@@ -65,12 +65,12 @@ describe Algebra::Intersection, '#optimize' do
65
65
  end
66
66
 
67
67
  it 'does not execute left_body#each' do
68
- left_body.should_not_receive(:each)
68
+ expect(left_body).not_to receive(:each)
69
69
  subject
70
70
  end
71
71
 
72
72
  it 'does not execute right_body#each' do
73
- right_body.should_not_receive(:each)
73
+ expect(right_body).not_to receive(:each)
74
74
  subject
75
75
  end
76
76
 
@@ -88,12 +88,12 @@ describe Algebra::Intersection, '#optimize' do
88
88
  end
89
89
 
90
90
  it 'does not execute left_body#each' do
91
- left_body.should_not_receive(:each)
91
+ expect(left_body).not_to receive(:each)
92
92
  subject
93
93
  end
94
94
 
95
95
  it 'does not execute right_body#each' do
96
- right_body.should_not_receive(:each)
96
+ expect(right_body).not_to receive(:each)
97
97
  subject
98
98
  end
99
99
 
@@ -113,12 +113,12 @@ describe Algebra::Intersection, '#optimize' do
113
113
  end
114
114
 
115
115
  it 'executes left_body#each' do
116
- left_body.should_receive(:each)
116
+ expect(left_body).to receive(:each)
117
117
  subject
118
118
  end
119
119
 
120
120
  it 'executes right_body#each' do
121
- right_body.should_receive(:each)
121
+ expect(right_body).to receive(:each)
122
122
  subject
123
123
  end
124
124
 
@@ -133,12 +133,12 @@ describe Algebra::Intersection, '#optimize' do
133
133
  it { should be(object) }
134
134
 
135
135
  it 'executed left_body#each' do
136
- left_body.should_receive(:each)
136
+ expect(left_body).to receive(:each)
137
137
  subject
138
138
  end
139
139
 
140
140
  it 'executed right_body#each' do
141
- right_body.should_receive(:each)
141
+ expect(right_body).to receive(:each)
142
142
  subject
143
143
  end
144
144
 
@@ -23,7 +23,7 @@ describe Algebra::Join, '#optimize' do
23
23
  end
24
24
 
25
25
  it 'does not execute right_body#each' do
26
- right_body.should_not_receive(:each)
26
+ expect(right_body).not_to receive(:each)
27
27
  subject
28
28
  end
29
29
 
@@ -40,7 +40,7 @@ describe Algebra::Join, '#optimize' do
40
40
  end
41
41
 
42
42
  it 'does not execute left_body#each' do
43
- left_body.should_not_receive(:each)
43
+ expect(left_body).not_to receive(:each)
44
44
  subject
45
45
  end
46
46
 
@@ -57,7 +57,7 @@ describe Algebra::Join, '#optimize' do
57
57
  end
58
58
 
59
59
  it 'does not execute right_body#each' do
60
- right_body.should_not_receive(:each)
60
+ expect(right_body).not_to receive(:each)
61
61
  subject
62
62
  end
63
63
 
@@ -74,7 +74,7 @@ describe Algebra::Join, '#optimize' do
74
74
  end
75
75
 
76
76
  it 'does not execute left_body#each' do
77
- left_body.should_not_receive(:each)
77
+ expect(left_body).not_to receive(:each)
78
78
  subject
79
79
  end
80
80
 
@@ -85,12 +85,12 @@ describe Algebra::Join, '#optimize' do
85
85
  it { should be(object) }
86
86
 
87
87
  it 'does not execute left_body#each' do
88
- left_body.should_not_receive(:each)
88
+ expect(left_body).not_to receive(:each)
89
89
  subject
90
90
  end
91
91
 
92
92
  it 'does not execute right_body#each' do
93
- right_body.should_not_receive(:each)
93
+ expect(right_body).not_to receive(:each)
94
94
  subject
95
95
  end
96
96