axiom-optimizer 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. data/.rspec +1 -0
  2. data/.ruby-gemset +1 -0
  3. data/.travis.yml +4 -6
  4. data/Gemfile +6 -3
  5. data/Gemfile.devtools +26 -24
  6. data/Guardfile +18 -9
  7. data/README.md +2 -25
  8. data/axiom-optimizer.gemspec +1 -3
  9. data/config/devtools.yml +2 -0
  10. data/config/flay.yml +1 -1
  11. data/config/flog.yml +1 -1
  12. data/config/rubocop.yml +53 -0
  13. data/lib/axiom/optimizer.rb +1 -1
  14. data/lib/axiom/optimizer/algebra/difference.rb +1 -1
  15. data/lib/axiom/optimizer/algebra/join.rb +3 -1
  16. data/lib/axiom/optimizer/algebra/projection.rb +1 -1
  17. data/lib/axiom/optimizer/algebra/rename.rb +1 -1
  18. data/lib/axiom/optimizer/algebra/restriction.rb +1 -1
  19. data/lib/axiom/optimizer/algebra/summarization.rb +1 -1
  20. data/lib/axiom/optimizer/function/connective/binary.rb +1 -1
  21. data/lib/axiom/optimizer/optimizable.rb +5 -3
  22. data/lib/axiom/optimizer/relation/materialized.rb +1 -1
  23. data/lib/axiom/optimizer/relation/operation/combination.rb +1 -1
  24. data/lib/axiom/optimizer/relation/operation/limit.rb +2 -2
  25. data/lib/axiom/optimizer/support/predicate_partition.rb +1 -4
  26. data/lib/axiom/optimizer/version.rb +1 -1
  27. data/spec/integration/axiom/algebra/difference/optimize_spec.rb +15 -15
  28. data/spec/integration/axiom/algebra/intersection/optimize_spec.rb +15 -15
  29. data/spec/integration/axiom/algebra/join/optimize_spec.rb +11 -11
  30. data/spec/integration/axiom/algebra/product/optimize_spec.rb +13 -13
  31. data/spec/integration/axiom/algebra/projection/optimize_spec.rb +44 -44
  32. data/spec/integration/axiom/algebra/rename/optimize_spec.rb +70 -70
  33. data/spec/integration/axiom/algebra/restriction/optimize_spec.rb +23 -24
  34. data/spec/integration/axiom/algebra/summarization/optimize_spec.rb +8 -8
  35. data/spec/integration/axiom/algebra/union/optimize_spec.rb +21 -21
  36. data/spec/integration/axiom/function/connective/conjunction/optimize_spec.rb +26 -26
  37. data/spec/integration/axiom/function/connective/disjunction/optimize_spec.rb +27 -28
  38. data/spec/integration/axiom/function/connective/negation/optimize_spec.rb +2 -2
  39. data/spec/integration/axiom/function/optimize_spec.rb +1 -1
  40. data/spec/integration/axiom/function/predicate/equality/optimize_spec.rb +8 -8
  41. data/spec/integration/axiom/function/predicate/exclusion/optimize_spec.rb +19 -19
  42. data/spec/integration/axiom/function/predicate/greater_than/optimize_spec.rb +17 -17
  43. data/spec/integration/axiom/function/predicate/greater_than_or_equal_to/optimize_spec.rb +17 -17
  44. data/spec/integration/axiom/function/predicate/inclusion/optimize_spec.rb +19 -19
  45. data/spec/integration/axiom/function/predicate/inequality/optimize_spec.rb +8 -8
  46. data/spec/integration/axiom/function/predicate/less_than/optimize_spec.rb +17 -17
  47. data/spec/integration/axiom/function/predicate/less_than_or_equal_to/optimize_spec.rb +17 -17
  48. data/spec/integration/axiom/relation/empty/optimize_spec.rb +2 -2
  49. data/spec/integration/axiom/relation/materialized/optimize_spec.rb +3 -3
  50. data/spec/integration/axiom/relation/operation/limit/optimize_spec.rb +16 -16
  51. data/spec/integration/axiom/relation/operation/offset/optimize_spec.rb +14 -14
  52. data/spec/integration/axiom/relation/operation/order/optimize_spec.rb +11 -11
  53. data/spec/integration/axiom/relation/operation/reverse/optimize_spec.rb +9 -9
  54. data/spec/integration/axiom/relation/optimize_spec.rb +4 -4
  55. data/spec/shared/function_connective_binary_optimize_behavior.rb +18 -18
  56. data/spec/shared/optimize_method_behavior.rb +2 -2
  57. data/spec/spec_helper.rb +7 -8
  58. data/spec/support/add_method_missing.rb +3 -4
  59. data/spec/unit/axiom/optimizer/algebra/difference/empty_left/optimize_spec.rb +7 -7
  60. data/spec/unit/axiom/optimizer/algebra/difference/empty_right/optimize_spec.rb +7 -7
  61. data/spec/unit/axiom/optimizer/algebra/difference/equal_operands/optimize_spec.rb +7 -9
  62. data/spec/unit/axiom/optimizer/algebra/extension/extensions_spec.rb +3 -3
  63. data/spec/unit/axiom/optimizer/algebra/extension/order_operand/optimizable_predicate_spec.rb +3 -3
  64. data/spec/unit/axiom/optimizer/algebra/extension/order_operand/optimize_spec.rb +6 -6
  65. data/spec/unit/axiom/optimizer/algebra/extension/unoptimized_operand/optimizable_predicate_spec.rb +10 -10
  66. data/spec/unit/axiom/optimizer/algebra/extension/unoptimized_operand/optimize_spec.rb +10 -10
  67. data/spec/unit/axiom/optimizer/algebra/intersection/empty_left/optimize_spec.rb +7 -7
  68. data/spec/unit/axiom/optimizer/algebra/intersection/empty_right/optimize_spec.rb +7 -7
  69. data/spec/unit/axiom/optimizer/algebra/intersection/equal_operands/optimize_spec.rb +7 -7
  70. data/spec/unit/axiom/optimizer/algebra/join/disjoint_headers/optimizable_predicate_spec.rb +6 -6
  71. data/spec/unit/axiom/optimizer/algebra/join/disjoint_headers/optimize_spec.rb +7 -7
  72. data/spec/unit/axiom/optimizer/algebra/join/equal_headers/optimizable_predicate_spec.rb +6 -6
  73. data/spec/unit/axiom/optimizer/algebra/join/equal_headers/optimize_spec.rb +8 -8
  74. data/spec/unit/axiom/optimizer/algebra/join/materialized_left/optimizable_predicate_spec.rb +9 -9
  75. data/spec/unit/axiom/optimizer/algebra/join/materialized_left/optimize_spec.rb +12 -12
  76. data/spec/unit/axiom/optimizer/algebra/join/materialized_right/optimizable_predicate_spec.rb +9 -9
  77. data/spec/unit/axiom/optimizer/algebra/join/materialized_right/optimize_spec.rb +12 -12
  78. data/spec/unit/axiom/optimizer/algebra/product/table_dee_left/optimizable_predicate_spec.rb +4 -4
  79. data/spec/unit/axiom/optimizer/algebra/product/table_dee_left/optimize_spec.rb +6 -6
  80. data/spec/unit/axiom/optimizer/algebra/product/table_dee_right/optimizable_predicate_spec.rb +4 -4
  81. data/spec/unit/axiom/optimizer/algebra/product/table_dee_right/optimize_spec.rb +6 -6
  82. data/spec/unit/axiom/optimizer/algebra/projection/empty_operand/optimizable_predicate_spec.rb +5 -5
  83. data/spec/unit/axiom/optimizer/algebra/projection/empty_operand/optimize_spec.rb +6 -8
  84. data/spec/unit/axiom/optimizer/algebra/projection/extension_operand/optimizable_predicate_spec.rb +6 -6
  85. data/spec/unit/axiom/optimizer/algebra/projection/extension_operand/optimize_spec.rb +12 -6
  86. data/spec/unit/axiom/optimizer/algebra/projection/projection_operand/optimizable_predicate_spec.rb +6 -6
  87. data/spec/unit/axiom/optimizer/algebra/projection/projection_operand/optimize_spec.rb +7 -7
  88. data/spec/unit/axiom/optimizer/algebra/projection/union_operand/optimizable_predicate_spec.rb +6 -6
  89. data/spec/unit/axiom/optimizer/algebra/projection/union_operand/optimize_spec.rb +10 -10
  90. data/spec/unit/axiom/optimizer/algebra/projection/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
  91. data/spec/unit/axiom/optimizer/algebra/projection/unoptimized_operand/optimize_spec.rb +7 -7
  92. data/spec/unit/axiom/optimizer/algebra/rename/aliases_spec.rb +7 -7
  93. data/spec/unit/axiom/optimizer/algebra/rename/empty_operand/optimizable_predicate_spec.rb +5 -5
  94. data/spec/unit/axiom/optimizer/algebra/rename/empty_operand/optimize_spec.rb +5 -7
  95. data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimizable_predicate_spec.rb +5 -5
  96. data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimize_spec.rb +7 -7
  97. data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimizable_predicate_spec.rb +5 -5
  98. data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimize_spec.rb +7 -7
  99. data/spec/unit/axiom/optimizer/algebra/rename/order_operand/optimizable_predicate_spec.rb +5 -5
  100. data/spec/unit/axiom/optimizer/algebra/rename/order_operand/optimize_spec.rb +7 -7
  101. data/spec/unit/axiom/optimizer/algebra/rename/projection_operand/optimizable_predicate_spec.rb +12 -12
  102. data/spec/unit/axiom/optimizer/algebra/rename/projection_operand/optimize_spec.rb +7 -7
  103. data/spec/unit/axiom/optimizer/algebra/rename/rename_operand/optimizable_predicate_spec.rb +9 -9
  104. data/spec/unit/axiom/optimizer/algebra/rename/rename_operand/optimize_spec.rb +7 -7
  105. data/spec/unit/axiom/optimizer/algebra/rename/rename_operand_and_empty_aliases/optimizable_predicate_spec.rb +11 -11
  106. data/spec/unit/axiom/optimizer/algebra/rename/rename_operand_and_empty_aliases/optimize_spec.rb +6 -6
  107. data/spec/unit/axiom/optimizer/algebra/rename/restriction_operand/optimizable_predicate_spec.rb +6 -6
  108. data/spec/unit/axiom/optimizer/algebra/rename/restriction_operand/optimize_spec.rb +7 -7
  109. data/spec/unit/axiom/optimizer/algebra/rename/reverse_operand/optimizable_predicate_spec.rb +4 -4
  110. data/spec/unit/axiom/optimizer/algebra/rename/reverse_operand/optimize_spec.rb +8 -8
  111. data/spec/unit/axiom/optimizer/algebra/rename/set_operand/optimizable_predicate_spec.rb +6 -6
  112. data/spec/unit/axiom/optimizer/algebra/rename/set_operand/optimize_spec.rb +8 -8
  113. data/spec/unit/axiom/optimizer/algebra/rename/unoptimized_operand/optimizable_predicate_spec.rb +6 -6
  114. data/spec/unit/axiom/optimizer/algebra/rename/unoptimized_operand/optimize_spec.rb +7 -7
  115. data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimizable_predicate_spec.rb +6 -6
  116. data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimize_spec.rb +6 -6
  117. data/spec/unit/axiom/optimizer/algebra/restriction/contradiction/optimizable_predicate_spec.rb +5 -5
  118. data/spec/unit/axiom/optimizer/algebra/restriction/contradiction/optimize_spec.rb +7 -9
  119. data/spec/unit/axiom/optimizer/algebra/restriction/join_operand/optimizable_predicate_spec.rb +5 -5
  120. data/spec/unit/axiom/optimizer/algebra/restriction/join_operand/optimize_spec.rb +17 -17
  121. data/spec/unit/axiom/optimizer/algebra/restriction/order_operand/optimizable_predicate_spec.rb +5 -5
  122. data/spec/unit/axiom/optimizer/algebra/restriction/order_operand/optimize_spec.rb +7 -7
  123. data/spec/unit/axiom/optimizer/algebra/restriction/predicate_spec.rb +6 -6
  124. data/spec/unit/axiom/optimizer/algebra/restriction/product_operand/optimizable_predicate_spec.rb +5 -5
  125. data/spec/unit/axiom/optimizer/algebra/restriction/product_operand/optimize_spec.rb +17 -17
  126. data/spec/unit/axiom/optimizer/algebra/restriction/restriction_operand/optimizable_predicate_spec.rb +7 -7
  127. data/spec/unit/axiom/optimizer/algebra/restriction/restriction_operand/optimize_spec.rb +6 -6
  128. data/spec/unit/axiom/optimizer/algebra/restriction/set_operand/optimizable_predicate_spec.rb +7 -7
  129. data/spec/unit/axiom/optimizer/algebra/restriction/set_operand/optimize_spec.rb +7 -7
  130. data/spec/unit/axiom/optimizer/algebra/restriction/tautology/optimizable_predicate_spec.rb +4 -4
  131. data/spec/unit/axiom/optimizer/algebra/restriction/tautology/optimize_spec.rb +7 -7
  132. data/spec/unit/axiom/optimizer/algebra/restriction/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
  133. data/spec/unit/axiom/optimizer/algebra/restriction/unoptimized_operand/optimize_spec.rb +7 -7
  134. data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/class_methods/extension_default_spec.rb +1 -1
  135. data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/optimizable_predicate_spec.rb +6 -6
  136. data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/optimize_spec.rb +13 -13
  137. data/spec/unit/axiom/optimizer/algebra/summarization/empty_summarize_per/optimizable_predicate_spec.rb +8 -8
  138. data/spec/unit/axiom/optimizer/algebra/summarization/empty_summarize_per/optimize_spec.rb +5 -7
  139. data/spec/unit/axiom/optimizer/algebra/summarization/order_operand/optimizable_predicate_spec.rb +3 -3
  140. data/spec/unit/axiom/optimizer/algebra/summarization/order_operand/optimize_spec.rb +6 -6
  141. data/spec/unit/axiom/optimizer/algebra/summarization/summarize_per_spec.rb +7 -7
  142. data/spec/unit/axiom/optimizer/algebra/summarization/summarizers_spec.rb +3 -3
  143. data/spec/unit/axiom/optimizer/algebra/summarization/unoptimized_operand/optimizable_predicate_spec.rb +3 -3
  144. data/spec/unit/axiom/optimizer/algebra/summarization/unoptimized_operand/optimize_spec.rb +6 -6
  145. data/spec/unit/axiom/optimizer/algebra/union/empty_left/optimize_spec.rb +7 -7
  146. data/spec/unit/axiom/optimizer/algebra/union/empty_right/optimize_spec.rb +7 -7
  147. data/spec/unit/axiom/optimizer/algebra/union/equal_operands/optimize_spec.rb +7 -7
  148. data/spec/unit/axiom/optimizer/class_methods/chain_spec.rb +8 -8
  149. data/spec/unit/axiom/optimizer/function/binary/constant_operands/optimize_spec.rb +1 -1
  150. data/spec/unit/axiom/optimizer/function/binary/left_spec.rb +2 -2
  151. data/spec/unit/axiom/optimizer/function/binary/right_spec.rb +2 -2
  152. data/spec/unit/axiom/optimizer/function/binary/unoptimized_operands/optimizable_predicate_spec.rb +4 -4
  153. data/spec/unit/axiom/optimizer/function/binary/unoptimized_operands/optimize_spec.rb +3 -3
  154. data/spec/unit/axiom/optimizer/function/class_methods/optimize_functions_spec.rb +4 -4
  155. data/spec/unit/axiom/optimizer/function/class_methods/optimize_operand_spec.rb +5 -5
  156. data/spec/unit/axiom/optimizer/function/connective/binary/constant_operands/optimize_spec.rb +2 -2
  157. data/spec/unit/axiom/optimizer/function/connective/binary/equal_operands/optimizable_predicate_spec.rb +1 -1
  158. data/spec/unit/axiom/optimizer/function/connective/binary/equal_operands/optimize_spec.rb +2 -2
  159. data/spec/unit/axiom/optimizer/function/connective/binary/left_spec.rb +7 -7
  160. data/spec/unit/axiom/optimizer/function/connective/binary/redundant_left/optimizable_predicate_spec.rb +3 -3
  161. data/spec/unit/axiom/optimizer/function/connective/binary/redundant_left/optimize_spec.rb +3 -3
  162. data/spec/unit/axiom/optimizer/function/connective/binary/redundant_right/optimizable_predicate_spec.rb +3 -3
  163. data/spec/unit/axiom/optimizer/function/connective/binary/redundant_right/optimize_spec.rb +3 -3
  164. data/spec/unit/axiom/optimizer/function/connective/binary/right_spec.rb +7 -7
  165. data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimizable_predicate_spec.rb +1 -1
  166. data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimize_spec.rb +2 -2
  167. data/spec/unit/axiom/optimizer/function/connective/conjunction/optimizable_to_exclusion/optimizable_predicate_spec.rb +9 -9
  168. data/spec/unit/axiom/optimizer/function/connective/conjunction/optimizable_to_exclusion/optimize_spec.rb +17 -17
  169. data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_left/optimizable_predicate_spec.rb +1 -1
  170. data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_left/optimize_spec.rb +2 -2
  171. data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_right/optimizable_predicate_spec.rb +1 -1
  172. data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_right/optimize_spec.rb +2 -2
  173. data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_left/optimizable_predicate_spec.rb +1 -1
  174. data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_left/optimize_spec.rb +2 -2
  175. data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_right/optimizable_predicate_spec.rb +1 -1
  176. data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_right/optimize_spec.rb +2 -2
  177. data/spec/unit/axiom/optimizer/function/connective/disjunction/optimizable_to_inclusion/optimizable_predicate_spec.rb +9 -9
  178. data/spec/unit/axiom/optimizer/function/connective/disjunction/optimizable_to_inclusion/optimize_spec.rb +17 -17
  179. data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimizable_predicate_spec.rb +1 -1
  180. data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimize_spec.rb +2 -2
  181. data/spec/unit/axiom/optimizer/function/connective/negation/constant_operand/optimize_spec.rb +2 -2
  182. data/spec/unit/axiom/optimizer/function/connective/negation/invertible_operand/optimizable_predicate_spec.rb +1 -1
  183. data/spec/unit/axiom/optimizer/function/connective/negation/invertible_operand/optimize_spec.rb +2 -2
  184. data/spec/unit/axiom/optimizer/function/connective/negation/operand_spec.rb +5 -5
  185. data/spec/unit/axiom/optimizer/function/predicate/comparable/never_comparable/optimizable_predicate_spec.rb +1 -1
  186. data/spec/unit/axiom/optimizer/function/predicate/comparable/never_equivalent/optimizable_predicate_spec.rb +4 -4
  187. data/spec/unit/axiom/optimizer/function/predicate/comparable/normalizable_operands/optimizable_predicate_spec.rb +1 -1
  188. data/spec/unit/axiom/optimizer/function/predicate/comparable/normalizable_operands/optimize_spec.rb +2 -2
  189. data/spec/unit/axiom/optimizer/function/predicate/constant_operands/optimize_spec.rb +2 -2
  190. data/spec/unit/axiom/optimizer/function/predicate/contradiction/optimize_spec.rb +1 -1
  191. data/spec/unit/axiom/optimizer/function/predicate/enumerable/class_methods/sort_by_value_spec.rb +1 -1
  192. data/spec/unit/axiom/optimizer/function/predicate/enumerable/empty_right/optimizable_predicate_spec.rb +8 -8
  193. data/spec/unit/axiom/optimizer/function/predicate/enumerable/one_right/optimizable_predicate_spec.rb +7 -7
  194. data/spec/unit/axiom/optimizer/function/predicate/enumerable/unoptimized_operands/optimizable_predicate_spec.rb +5 -5
  195. data/spec/unit/axiom/optimizer/function/predicate/enumerable/unoptimized_operands/optimize_spec.rb +14 -14
  196. data/spec/unit/axiom/optimizer/function/predicate/equality/tautology/optimizable_predicate_spec.rb +1 -1
  197. data/spec/unit/axiom/optimizer/function/predicate/exclusion/empty_right/optimize_spec.rb +7 -7
  198. data/spec/unit/axiom/optimizer/function/predicate/exclusion/one_right/optimize_spec.rb +9 -9
  199. data/spec/unit/axiom/optimizer/function/predicate/greater_than/contradiction/optimizable_predicate_spec.rb +3 -3
  200. data/spec/unit/axiom/optimizer/function/predicate/greater_than/tautology/optimizable_predicate_spec.rb +3 -3
  201. data/spec/unit/axiom/optimizer/function/predicate/greater_than_or_equal_to/contradiction/optimizable_predicate_spec.rb +3 -3
  202. data/spec/unit/axiom/optimizer/function/predicate/greater_than_or_equal_to/tautology/optimizable_predicate_spec.rb +3 -3
  203. data/spec/unit/axiom/optimizer/function/predicate/inclusion/empty_right/optimize_spec.rb +7 -7
  204. data/spec/unit/axiom/optimizer/function/predicate/inclusion/one_right/optimize_spec.rb +9 -9
  205. data/spec/unit/axiom/optimizer/function/predicate/inequality/contradiction/optimizable_predicate_spec.rb +1 -1
  206. data/spec/unit/axiom/optimizer/function/predicate/less_than/contradiction/optimizable_predicate_spec.rb +3 -3
  207. data/spec/unit/axiom/optimizer/function/predicate/less_than/tautology/optimizable_predicate_spec.rb +3 -3
  208. data/spec/unit/axiom/optimizer/function/predicate/less_than_or_equal_to/contradiction/optimizable_predicate_spec.rb +3 -3
  209. data/spec/unit/axiom/optimizer/function/predicate/less_than_or_equal_to/tautology/optimizable_predicate_spec.rb +3 -3
  210. data/spec/unit/axiom/optimizer/function/predicate/tautology/optimize_spec.rb +1 -1
  211. data/spec/unit/axiom/optimizer/function/unary/constant_operand/optimize_spec.rb +1 -1
  212. data/spec/unit/axiom/optimizer/function/unary/operand_spec.rb +2 -2
  213. data/spec/unit/axiom/optimizer/function/unary/unoptimized_operand/optimize_spec.rb +1 -1
  214. data/spec/unit/axiom/optimizer/function/util/class_methods/max_spec.rb +2 -2
  215. data/spec/unit/axiom/optimizer/function/util/class_methods/min_spec.rb +2 -2
  216. data/spec/unit/axiom/optimizer/operation_spec.rb +2 -2
  217. data/spec/unit/axiom/optimizer/optimizable/class_methods/optimizer_spec.rb +3 -3
  218. data/spec/unit/axiom/optimizer/optimizable/optimize_spec.rb +7 -7
  219. data/spec/unit/axiom/optimizer/optimizable_predicate_spec.rb +2 -2
  220. data/spec/unit/axiom/optimizer/optimize_spec.rb +2 -2
  221. data/spec/unit/axiom/optimizer/predicate_partition/left_spec.rb +18 -18
  222. data/spec/unit/axiom/optimizer/predicate_partition/remainder_spec.rb +19 -19
  223. data/spec/unit/axiom/optimizer/predicate_partition/right_spec.rb +18 -18
  224. data/spec/unit/axiom/optimizer/relation/materialized/empty_operand/optimizable_predicate_spec.rb +3 -3
  225. data/spec/unit/axiom/optimizer/relation/materialized/empty_operand/optimize_spec.rb +5 -7
  226. data/spec/unit/axiom/optimizer/relation/operation/binary/empty_left/optimizable_predicate_spec.rb +4 -4
  227. data/spec/unit/axiom/optimizer/relation/operation/binary/empty_right/optimizable_predicate_spec.rb +4 -4
  228. data/spec/unit/axiom/optimizer/relation/operation/binary/equal_operands/optimizable_predicate_spec.rb +3 -3
  229. data/spec/unit/axiom/optimizer/relation/operation/binary/left_spec.rb +6 -6
  230. data/spec/unit/axiom/optimizer/relation/operation/binary/materialized_operands/optimizable_predicate_spec.rb +6 -6
  231. data/spec/unit/axiom/optimizer/relation/operation/binary/materialized_operands/optimize_spec.rb +7 -7
  232. data/spec/unit/axiom/optimizer/relation/operation/binary/order_left/optimizable_predicate_spec.rb +5 -5
  233. data/spec/unit/axiom/optimizer/relation/operation/binary/order_left/optimize_spec.rb +8 -8
  234. data/spec/unit/axiom/optimizer/relation/operation/binary/order_right/optimizable_predicate_spec.rb +5 -5
  235. data/spec/unit/axiom/optimizer/relation/operation/binary/order_right/optimize_spec.rb +8 -8
  236. data/spec/unit/axiom/optimizer/relation/operation/binary/right_spec.rb +6 -6
  237. data/spec/unit/axiom/optimizer/relation/operation/binary/unoptimized_operands/optimizable_predicate_spec.rb +4 -4
  238. data/spec/unit/axiom/optimizer/relation/operation/binary/unoptimized_operands/optimize_spec.rb +8 -8
  239. data/spec/unit/axiom/optimizer/relation/operation/combination/optimize_spec.rb +5 -7
  240. data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimizable_predicate_spec.rb +4 -4
  241. data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimize_spec.rb +6 -6
  242. data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimizable_predicate_spec.rb +4 -4
  243. data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimize_spec.rb +6 -6
  244. data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
  245. data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimize_spec.rb +6 -6
  246. data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimizable_predicate_spec.rb +4 -4
  247. data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimize_spec.rb +6 -8
  248. data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimizable_predicate_spec.rb +4 -4
  249. data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimize_spec.rb +5 -5
  250. data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
  251. data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimize_spec.rb +6 -6
  252. data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimizable_predicate_spec.rb +4 -4
  253. data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimize_spec.rb +5 -5
  254. data/spec/unit/axiom/optimizer/relation/operation/order/one_limit_operand/optimizable_predicate_spec.rb +4 -4
  255. data/spec/unit/axiom/optimizer/relation/operation/order/one_limit_operand/optimize_spec.rb +6 -6
  256. data/spec/unit/axiom/optimizer/relation/operation/order/order_operand/optimizable_predicate_spec.rb +4 -4
  257. data/spec/unit/axiom/optimizer/relation/operation/order/order_operand/optimize_spec.rb +6 -6
  258. data/spec/unit/axiom/optimizer/relation/operation/order/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
  259. data/spec/unit/axiom/optimizer/relation/operation/order/unoptimized_operand/optimize_spec.rb +7 -7
  260. data/spec/unit/axiom/optimizer/relation/operation/reverse/order_operand/optimizable_predicate_spec.rb +4 -4
  261. data/spec/unit/axiom/optimizer/relation/operation/reverse/order_operand/optimize_spec.rb +7 -7
  262. data/spec/unit/axiom/optimizer/relation/operation/reverse/reverse_operand/optimizable_predicate_spec.rb +4 -4
  263. data/spec/unit/axiom/optimizer/relation/operation/reverse/reverse_operand/optimize_spec.rb +7 -7
  264. data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimizable_predicate_spec.rb +4 -4
  265. data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimize_spec.rb +7 -7
  266. data/spec/unit/axiom/optimizer/relation/operation/unary/empty_operand/optimizable_predicate_spec.rb +5 -5
  267. data/spec/unit/axiom/optimizer/relation/operation/unary/empty_operand/optimize_spec.rb +5 -5
  268. data/spec/unit/axiom/optimizer/relation/operation/unary/header_spec.rb +6 -6
  269. data/spec/unit/axiom/optimizer/relation/operation/unary/materialized_operand/optimizable_predicate_spec.rb +5 -5
  270. data/spec/unit/axiom/optimizer/relation/operation/unary/materialized_operand/optimize_spec.rb +5 -5
  271. data/spec/unit/axiom/optimizer/relation/operation/unary/operand_spec.rb +7 -7
  272. data/spec/unit/axiom/optimizer/relation/operation/unary/order_operand/optimizable_predicate_spec.rb +4 -4
  273. data/spec/unit/axiom/optimizer/relation/operation/unary/order_operand/optimize_spec.rb +6 -6
  274. data/spec/unit/axiom/optimizer/relation/operation/unary/unchanged_header/optimizable_predicate_spec.rb +5 -5
  275. data/spec/unit/axiom/optimizer/relation/operation/unary/unchanged_header/optimize_spec.rb +5 -5
  276. metadata +24 -289
  277. checksums.yaml +0 -7
  278. data/.gemtest +0 -0
  279. data/.rvmrc +0 -1
@@ -5,15 +5,15 @@ require 'spec_helper'
5
5
  describe Optimizer::PredicatePartition, '#right' do
6
6
  subject { object.right }
7
7
 
8
- let(:left_header) { Relation::Header.coerce([ [ :id, Integer ], [ :user_name, String ], Attribute::Boolean.new(:active_user), Attribute::Boolean.new(:active) ]) }
9
- let(:right_header) { Relation::Header.coerce([ [ :id, Integer ], [ :employee_name, String ], Attribute::Boolean.new(:active_employee), Attribute::Boolean.new(:active) ]) }
10
- let(:object) { described_class.new(predicate, left_header, right_header) }
8
+ let(:left_header) { Relation::Header.coerce([[:id, Integer], [:user_name, String], Attribute::Boolean.new(:active_user), Attribute::Boolean.new(:active)]) }
9
+ let(:right_header) { Relation::Header.coerce([[:id, Integer], [:employee_name, String], Attribute::Boolean.new(:active_employee), Attribute::Boolean.new(:active)]) }
10
+ let(:object) { described_class.new(predicate, left_header, right_header) }
11
11
 
12
12
  context 'when the predicate is a tautology' do
13
13
  let(:predicate) { Function::Proposition::Tautology.instance }
14
14
 
15
15
  it 'partitions the predicate to the right' do
16
- should equal(Function::Proposition::Tautology.instance)
16
+ should be(Function::Proposition::Tautology.instance)
17
17
  end
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ describe Optimizer::PredicatePartition, '#right' do
21
21
  let(:predicate) { Function::Proposition::Contradiction.instance }
22
22
 
23
23
  it 'partitions the predicate to the right' do
24
- should equal(Function::Proposition::Contradiction.instance)
24
+ should be(Function::Proposition::Contradiction.instance)
25
25
  end
26
26
  end
27
27
 
@@ -30,7 +30,7 @@ describe Optimizer::PredicatePartition, '#right' do
30
30
  let(:predicate) { left_header[:active_user] }
31
31
 
32
32
  it 'does not partition the predicate to the left' do
33
- should equal(Function::Proposition::Tautology.instance)
33
+ should be(Function::Proposition::Tautology.instance)
34
34
  end
35
35
  end
36
36
 
@@ -38,7 +38,7 @@ describe Optimizer::PredicatePartition, '#right' do
38
38
  let(:predicate) { right_header[:active_employee] }
39
39
 
40
40
  it 'partitions the predicate to the right' do
41
- should equal(predicate)
41
+ should be(predicate)
42
42
  end
43
43
  end
44
44
 
@@ -46,7 +46,7 @@ describe Optimizer::PredicatePartition, '#right' do
46
46
  let(:predicate) { right_header[:active] }
47
47
 
48
48
  it 'partitions the predicate to the right' do
49
- should equal(predicate)
49
+ should be(predicate)
50
50
  end
51
51
  end
52
52
  end
@@ -56,7 +56,7 @@ describe Optimizer::PredicatePartition, '#right' do
56
56
  let(:predicate) { left_header[:user_name].eq('Dan Kubb') }
57
57
 
58
58
  it 'does not partition the predicate to the right' do
59
- should equal(Function::Proposition::Tautology.instance)
59
+ should be(Function::Proposition::Tautology.instance)
60
60
  end
61
61
  end
62
62
 
@@ -64,7 +64,7 @@ describe Optimizer::PredicatePartition, '#right' do
64
64
  let(:predicate) { right_header[:employee_name].eq('Dan Kubb') }
65
65
 
66
66
  it 'partitions the predicate to the right' do
67
- should equal(predicate)
67
+ should be(predicate)
68
68
  end
69
69
  end
70
70
 
@@ -72,7 +72,7 @@ describe Optimizer::PredicatePartition, '#right' do
72
72
  let(:predicate) { right_header[:id].eq(1) }
73
73
 
74
74
  it 'partitions the predicate to the right' do
75
- should equal(predicate)
75
+ should be(predicate)
76
76
  end
77
77
  end
78
78
 
@@ -80,7 +80,7 @@ describe Optimizer::PredicatePartition, '#right' do
80
80
  let(:predicate) { left_header[:active_user].eq(right_header[:active]) }
81
81
 
82
82
  it 'partitions the predicate to the right' do
83
- should equal(predicate)
83
+ should be(predicate)
84
84
  end
85
85
  end
86
86
 
@@ -88,7 +88,7 @@ describe Optimizer::PredicatePartition, '#right' do
88
88
  let(:predicate) { right_header[:active_employee].eq(right_header[:active]) }
89
89
 
90
90
  it 'partitions the predicate to the right' do
91
- should equal(predicate)
91
+ should be(predicate)
92
92
  end
93
93
  end
94
94
 
@@ -96,7 +96,7 @@ describe Optimizer::PredicatePartition, '#right' do
96
96
  let(:predicate) { left_header[:user_name].eq(right_header[:employee_name]) }
97
97
 
98
98
  it 'does not partition the predicate to the right' do
99
- should equal(Function::Proposition::Tautology.instance)
99
+ should be(Function::Proposition::Tautology.instance)
100
100
  end
101
101
  end
102
102
  end
@@ -106,7 +106,7 @@ describe Optimizer::PredicatePartition, '#right' do
106
106
  let(:predicate) { Function::Connective::Negation.new(left_header[:active_user]) }
107
107
 
108
108
  it 'does not partition the predicate to the left' do
109
- should equal(Function::Proposition::Tautology.instance)
109
+ should be(Function::Proposition::Tautology.instance)
110
110
  end
111
111
  end
112
112
 
@@ -114,7 +114,7 @@ describe Optimizer::PredicatePartition, '#right' do
114
114
  let(:predicate) { Function::Connective::Negation.new(right_header[:active_employee]) }
115
115
 
116
116
  it 'partitions the predicate to the right' do
117
- should equal(predicate)
117
+ should be(predicate)
118
118
  end
119
119
  end
120
120
 
@@ -122,7 +122,7 @@ describe Optimizer::PredicatePartition, '#right' do
122
122
  let(:predicate) { Function::Connective::Negation.new(right_header[:active]) }
123
123
 
124
124
  it 'partitions the predicate to the right' do
125
- should equal(predicate)
125
+ should be(predicate)
126
126
  end
127
127
  end
128
128
  end
@@ -133,7 +133,7 @@ describe Optimizer::PredicatePartition, '#right' do
133
133
  let(:predicate) { left_predicate.and(right_predicate) }
134
134
 
135
135
  it 'partitions the predicate to the right that reference the right header' do
136
- should equal(right_predicate)
136
+ should be(right_predicate)
137
137
  end
138
138
  end
139
139
 
@@ -5,8 +5,8 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Materialized::EmptyOperand, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
- let(:relation) { Relation.new([ [ :id, Integer ] ], body) }
9
- let(:object) { described_class.new(relation) }
8
+ let(:relation) { Relation.new([[:id, Integer]], body) }
9
+ let(:object) { described_class.new(relation) }
10
10
 
11
11
  context 'with a body containing no entries' do
12
12
  let(:body) { [] }
@@ -15,7 +15,7 @@ describe Optimizer::Relation::Materialized::EmptyOperand, '#optimizable?' do
15
15
  end
16
16
 
17
17
  context 'with a body containing an entry' do
18
- let(:body) { [ [ 1 ] ] }
18
+ let(:body) { [[1]] }
19
19
 
20
20
  it { should be(false) }
21
21
  end
@@ -5,17 +5,15 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Materialized::EmptyOperand, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:header) { Relation::Header.coerce([ [ :id, Integer ] ]) }
9
- let(:relation) { Relation.new(header, LazyEnumerable.new) }
10
- let(:object) { described_class.new(relation) }
8
+ let(:header) { Relation::Header.coerce([[:id, Integer]]) }
9
+ let(:relation) { Relation.new(header, LazyEnumerable.new) }
10
+ let(:object) { described_class.new(relation) }
11
11
 
12
12
  before do
13
- object.should be_optimizable
13
+ expect(object).to be_optimizable
14
14
  end
15
15
 
16
16
  it { should be_kind_of(Relation::Empty) }
17
17
 
18
- its(:header) { should equal(header) }
19
-
20
- its(:tuples) { should equal(relation) }
18
+ its(:header) { should be(header) }
21
19
  end
@@ -6,8 +6,8 @@ describe Optimizer::Relation::Operation::Binary::EmptyLeft, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
8
  let(:described_class) { Class.new(Optimizer::Relation::Operation::Binary) }
9
- let(:relation) { mock('Relation', :left => left, :right => right) }
10
- let(:right) { mock('Right') }
9
+ let(:relation) { double('Relation', left: left, right: right) }
10
+ let(:right) { double('Right') }
11
11
  let(:object) { described_class.new(relation) }
12
12
 
13
13
  before do
@@ -15,13 +15,13 @@ describe Optimizer::Relation::Operation::Binary::EmptyLeft, '#optimizable?' do
15
15
  end
16
16
 
17
17
  context 'when left is empty' do
18
- let(:left) { Relation::Empty.new([ [ :id, Integer ] ]) }
18
+ let(:left) { Relation::Empty.new([[:id, Integer]]) }
19
19
 
20
20
  it { should be(true) }
21
21
  end
22
22
 
23
23
  context 'when left is not empty' do
24
- let(:left) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
24
+ let(:left) { Relation.new([[:id, Integer]], [[1]]) }
25
25
 
26
26
  it { should be(false) }
27
27
  end
@@ -6,8 +6,8 @@ describe Optimizer::Relation::Operation::Binary::EmptyRight, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
8
  let(:described_class) { Class.new(Optimizer::Relation::Operation::Binary) }
9
- let(:relation) { mock('Relation', :left => left, :right => right) }
10
- let(:left) { mock('Left') }
9
+ let(:relation) { double('Relation', left: left, right: right) }
10
+ let(:left) { double('Left') }
11
11
  let(:object) { described_class.new(relation) }
12
12
 
13
13
  before do
@@ -15,13 +15,13 @@ describe Optimizer::Relation::Operation::Binary::EmptyRight, '#optimizable?' do
15
15
  end
16
16
 
17
17
  context 'when right is empty' do
18
- let(:right) { Relation::Empty.new([ [ :id, Integer ] ]) }
18
+ let(:right) { Relation::Empty.new([[:id, Integer]]) }
19
19
 
20
20
  it { should be(true) }
21
21
  end
22
22
 
23
23
  context 'when right is not empty' do
24
- let(:right) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
24
+ let(:right) { Relation.new([[:id, Integer]], [[1]]) }
25
25
 
26
26
  it { should be(false) }
27
27
  end
@@ -6,9 +6,9 @@ describe Optimizer::Relation::Operation::Binary::EqualOperands, '#optimizable?'
6
6
  subject { object.optimizable? }
7
7
 
8
8
  let(:described_class) { Class.new(Optimizer::Relation::Operation::Binary) }
9
- let(:relation) { mock('Relation', :left => left, :right => right) }
10
- let(:materialized) { mock('Materialized') }
11
- let(:not_materialized) { mock('Not Materialized') }
9
+ let(:relation) { double('Relation', left: left, right: right) }
10
+ let(:materialized) { double('Materialized') }
11
+ let(:not_materialized) { double('Not Materialized') }
12
12
  let(:object) { described_class.new(relation) }
13
13
 
14
14
  before do
@@ -5,11 +5,11 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary, '#left' do
6
6
  subject { object.left }
7
7
 
8
- let(:optimized) { mock('Optimized') }
9
- let(:left) { mock('Left', :optimize => optimized) }
10
- let(:right) { mock('Right') }
11
- let(:relation) { mock('Relation', :left => left, :right => right) }
12
- let(:object) { described_class.new(relation) }
8
+ let(:optimized) { double('Optimized') }
9
+ let(:left) { double('Left', optimize: optimized) }
10
+ let(:right) { double('Right') }
11
+ let(:relation) { double('Relation', left: left, right: right) }
12
+ let(:object) { described_class.new(relation) }
13
13
 
14
- it { should equal(optimized) }
14
+ it { should be(optimized) }
15
15
  end
@@ -5,12 +5,12 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::MaterializedOperands, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
- let(:materialized) { Relation::Materialized.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
9
- let(:not_materialized) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new([ [ 1 ] ])) }
10
- let(:left) { not_materialized }
11
- let(:right) { not_materialized }
12
- let(:relation) { left.union(right) }
13
- let(:object) { described_class.new(relation) }
8
+ let(:materialized) { Relation::Materialized.new([[:id, Integer]], [[1]]) }
9
+ let(:not_materialized) { Relation.new([[:id, Integer]], LazyEnumerable.new([[1]])) }
10
+ let(:left) { not_materialized }
11
+ let(:right) { not_materialized }
12
+ let(:relation) { left.union(right) }
13
+ let(:object) { described_class.new(relation) }
14
14
 
15
15
  context 'when the right and right are materialized' do
16
16
  let(:left) { materialized }
@@ -5,18 +5,18 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::MaterializedOperands, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:left) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
9
- let(:right) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
10
- let(:relation) { left.union(right) }
11
- let(:object) { described_class.new(relation) }
8
+ let(:left) { Relation.new([[:id, Integer]], [[1]]) }
9
+ let(:right) { Relation.new([[:id, Integer]], [[1]]) }
10
+ let(:relation) { left.union(right) }
11
+ let(:object) { described_class.new(relation) }
12
12
 
13
13
  before do
14
- object.should be_optimizable
14
+ expect(object).to be_optimizable
15
15
  end
16
16
 
17
17
  it { should be_kind_of(Relation::Materialized) }
18
18
 
19
- its(:header) { should equal(relation.header) }
19
+ its(:header) { should be(relation.header) }
20
20
 
21
- it { should == [ [ 1 ] ] }
21
+ it { should == [[1]] }
22
22
  end
@@ -5,18 +5,18 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::OrderLeft, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
- let(:relation) { mock('Relation', :left => left, :right => right) }
9
- let(:right) { mock('Right') }
10
- let(:object) { described_class.new(relation) }
8
+ let(:relation) { double('Relation', left: left, right: right) }
9
+ let(:right) { double('Right') }
10
+ let(:object) { described_class.new(relation) }
11
11
 
12
12
  context 'when left is an order' do
13
- let(:left) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new).sort_by { |r| r.id } }
13
+ let(:left) { Relation.new([[:id, Integer]], LazyEnumerable.new).sort_by { |r| r.id } }
14
14
 
15
15
  it { should be(true) }
16
16
  end
17
17
 
18
18
  context 'when left is not an order' do
19
- let(:left) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new) }
19
+ let(:left) { Relation.new([[:id, Integer]], LazyEnumerable.new) }
20
20
 
21
21
  it { should be(false) }
22
22
  end
@@ -5,19 +5,19 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::OrderLeft, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:base) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new) }
9
- let(:left) { base.sort_by { |r| r.id } }
10
- let(:right) { base }
11
- let(:relation) { left.union(right) }
12
- let(:object) { described_class.new(relation) }
8
+ let(:base) { Relation.new([[:id, Integer]], LazyEnumerable.new) }
9
+ let(:left) { base.sort_by { |r| r.id } }
10
+ let(:right) { base }
11
+ let(:relation) { left.union(right) }
12
+ let(:object) { described_class.new(relation) }
13
13
 
14
14
  before do
15
- object.should be_optimizable
15
+ expect(object).to be_optimizable
16
16
  end
17
17
 
18
18
  it { should be_kind_of(relation.class) }
19
19
 
20
- its(:left) { should equal(base) }
20
+ its(:left) { should be(base) }
21
21
 
22
- its(:right) { should equal(right) }
22
+ its(:right) { should be(right) }
23
23
  end
@@ -5,18 +5,18 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::OrderRight, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
- let(:relation) { mock('Relation', :left => left, :right => right) }
9
- let(:left) { mock('Left') }
10
- let(:object) { described_class.new(relation) }
8
+ let(:relation) { double('Relation', left: left, right: right) }
9
+ let(:left) { double('Left') }
10
+ let(:object) { described_class.new(relation) }
11
11
 
12
12
  context 'when right is an order' do
13
- let(:right) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new).sort_by { |r| r.id } }
13
+ let(:right) { Relation.new([[:id, Integer]], LazyEnumerable.new).sort_by { |r| r.id } }
14
14
 
15
15
  it { should be(true) }
16
16
  end
17
17
 
18
18
  context 'when right is not an order' do
19
- let(:right) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new) }
19
+ let(:right) { Relation.new([[:id, Integer]], LazyEnumerable.new) }
20
20
 
21
21
  it { should be(false) }
22
22
  end
@@ -5,19 +5,19 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::OrderRight, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:base) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new) }
9
- let(:left) { base }
10
- let(:right) { base.sort_by { |r| r.id } }
11
- let(:relation) { left.union(right) }
12
- let(:object) { described_class.new(relation) }
8
+ let(:base) { Relation.new([[:id, Integer]], LazyEnumerable.new) }
9
+ let(:left) { base }
10
+ let(:right) { base.sort_by { |r| r.id } }
11
+ let(:relation) { left.union(right) }
12
+ let(:object) { described_class.new(relation) }
13
13
 
14
14
  before do
15
- object.should be_optimizable
15
+ expect(object).to be_optimizable
16
16
  end
17
17
 
18
18
  it { should be_kind_of(relation.class) }
19
19
 
20
- its(:left) { should equal(left) }
20
+ its(:left) { should be(left) }
21
21
 
22
- its(:right) { should equal(base) }
22
+ its(:right) { should be(base) }
23
23
  end
@@ -5,11 +5,11 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary, '#right' do
6
6
  subject { object.right }
7
7
 
8
- let(:optimized) { mock('Optimized') }
9
- let(:left) { mock('Left') }
10
- let(:right) { mock('Right', :optimize => optimized) }
11
- let(:relation) { mock('Relation', :left => left, :right => right) }
12
- let(:object) { described_class.new(relation) }
8
+ let(:optimized) { double('Optimized') }
9
+ let(:left) { double('Left') }
10
+ let(:right) { double('Right', optimize: optimized) }
11
+ let(:relation) { double('Relation', left: left, right: right) }
12
+ let(:object) { described_class.new(relation) }
13
13
 
14
- it { should equal(optimized) }
14
+ it { should be(optimized) }
15
15
  end
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  describe Optimizer::Relation::Operation::Binary::UnoptimizedOperands, '#optimizable?' do
6
6
  subject { object.optimizable? }
7
7
 
8
- let(:optimized) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
9
- let(:unoptimized) { optimized.project(optimized.header) }
10
- let(:relation) { left.union(right) }
11
- let(:object) { described_class.new(relation) }
8
+ let(:optimized) { Relation.new([[:id, Integer]], [[1]]) }
9
+ let(:unoptimized) { optimized.project(optimized.header) }
10
+ let(:relation) { left.union(right) }
11
+ let(:object) { described_class.new(relation) }
12
12
 
13
13
  context 'when the left and right operands are optimized' do
14
14
  let(:left) { optimized }