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,14 +5,14 @@ require 'spec_helper'
5
5
  describe Algebra::Rename, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:body) { LazyEnumerable.new([ [ 1, 'Dan Kubb' ] ]) }
9
- let(:relation) { Relation.new([ [ :id, Integer ], [ :name, String ] ], body) }
10
- let(:operand) { relation }
11
- let(:aliases) { { :id => :other_id } }
12
- let(:object) { described_class.new(operand, aliases) }
8
+ let(:body) { LazyEnumerable.new([[1, 'Dan Kubb']]) }
9
+ let(:relation) { Relation.new([[:id, Integer], [:name, String]], body) }
10
+ let(:operand) { relation }
11
+ let(:aliases) { { id: :other_id } }
12
+ let(:object) { described_class.new(operand, aliases) }
13
13
 
14
14
  context 'containing a relation' do
15
- it { should equal(object) }
15
+ it { should be(object) }
16
16
 
17
17
  it 'does not execute body#each' do
18
18
  body.should_not_receive(:each)
@@ -42,15 +42,15 @@ describe Algebra::Rename, '#optimize' do
42
42
  context 'containing an optimizable relation' do
43
43
  let(:operand) { relation.project(relation.header) }
44
44
 
45
- it { should_not equal(object) }
45
+ it { should_not be(object) }
46
46
 
47
47
  it { should be_kind_of(described_class) }
48
48
 
49
49
  it 'sets aliases the same as the original object' do
50
- subject.aliases.should == object.aliases
50
+ expect(subject.aliases).to eql(object.aliases)
51
51
  end
52
52
 
53
- its(:operand) { should equal(relation) }
53
+ its(:operand) { should be(relation) }
54
54
 
55
55
  it 'returns an equivalent relation to the unoptimized operation' do
56
56
  should == object
@@ -65,22 +65,22 @@ describe Algebra::Rename, '#optimize' do
65
65
  end
66
66
 
67
67
  context 'containing a object operation' do
68
- let(:operand) { described_class.new(relation, :id => :other_id) }
69
- let(:aliases) { { :name => :other_name } }
68
+ let(:operand) { described_class.new(relation, id: :other_id) }
69
+ let(:aliases) { { name: :other_name } }
70
70
 
71
- it { should_not equal(object) }
71
+ it { should_not be(object) }
72
72
 
73
73
  it { should be_kind_of(described_class) }
74
74
 
75
75
  it 'sets aliases as a union of both aliases' do
76
- subject.aliases.should == described_class::Aliases.coerce(
76
+ expect(subject.aliases).to eql(described_class::Aliases.coerce(
77
77
  relation.header,
78
- :id => :other_id,
79
- :name => :other_name
80
- )
78
+ id: :other_id,
79
+ name: :other_name
80
+ ))
81
81
  end
82
82
 
83
- its(:operand) { should equal(relation) }
83
+ its(:operand) { should be(relation) }
84
84
 
85
85
  it 'returns an equivalent relation to the unoptimized operation' do
86
86
  should == object
@@ -95,21 +95,21 @@ describe Algebra::Rename, '#optimize' do
95
95
  end
96
96
 
97
97
  context 'containing a object operation with overlapping aliases' do
98
- let(:operand) { described_class.new(relation, :id => :other_id) }
99
- let(:aliases) { { :other_id => :another_id } }
98
+ let(:operand) { described_class.new(relation, id: :other_id) }
99
+ let(:aliases) { { other_id: :another_id } }
100
100
 
101
- it { should_not equal(object) }
101
+ it { should_not be(object) }
102
102
 
103
103
  it { should be_kind_of(described_class) }
104
104
 
105
105
  it 'sets aliases as a union of both aliases' do
106
- subject.aliases.should == described_class::Aliases.coerce(
106
+ expect(subject.aliases).to eql(described_class::Aliases.coerce(
107
107
  relation.header,
108
- :id => :another_id
109
- )
108
+ id: :another_id
109
+ ))
110
110
  end
111
111
 
112
- its(:operand) { should equal(relation) }
112
+ its(:operand) { should be(relation) }
113
113
 
114
114
  it 'returns an equivalent relation to the unoptimized operation' do
115
115
  should == object
@@ -124,10 +124,10 @@ describe Algebra::Rename, '#optimize' do
124
124
  end
125
125
 
126
126
  context 'containing an inverse object operation' do
127
- let(:operand) { described_class.new(relation, :id => :other_id) }
128
- let(:aliases) { { :other_id => :id } }
127
+ let(:operand) { described_class.new(relation, id: :other_id) }
128
+ let(:aliases) { { other_id: :id } }
129
129
 
130
- it { should equal(relation) }
130
+ it { should be(relation) }
131
131
 
132
132
  it 'returns an equivalent relation to the unoptimized operation' do
133
133
  should == object
@@ -142,13 +142,13 @@ describe Algebra::Rename, '#optimize' do
142
142
  end
143
143
 
144
144
  context 'containing a projection' do
145
- let(:operand) { relation.project([ :id ]) }
145
+ let(:operand) { relation.project([:id]) }
146
146
 
147
147
  it { should be_kind_of(Algebra::Projection) }
148
148
 
149
149
  its(:operand) { should eql(described_class.new(relation, aliases)) }
150
150
 
151
- its(:header) { should == [ [ :other_id, Integer ] ] }
151
+ its(:header) { should == [[:other_id, Integer]] }
152
152
 
153
153
  it 'returns an equivalent relation to the unoptimized operation' do
154
154
  should == object
@@ -163,11 +163,11 @@ describe Algebra::Rename, '#optimize' do
163
163
  end
164
164
 
165
165
  context 'containing a projection, containing a object that cancels out' do
166
- let(:operand) { relation.rename(:id => :other_id).project([ :other_id ]) }
167
- let(:aliases) { { :other_id => :id } }
166
+ let(:operand) { relation.rename(id: :other_id).project([:other_id]) }
167
+ let(:aliases) { { other_id: :id } }
168
168
 
169
169
  it 'pushes the object before the projection, and then cancel it out' do
170
- should eql(relation.project([ :id ]))
170
+ should eql(relation.project([:id]))
171
171
  end
172
172
 
173
173
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -189,7 +189,7 @@ describe Algebra::Rename, '#optimize' do
189
189
 
190
190
  its(:operand) { should eql(described_class.new(relation, aliases)) }
191
191
 
192
- its(:header) { should == [ [ :other_id, Integer ], [ :name, String ] ] }
192
+ its(:header) { should == [[:other_id, Integer], [:name, String]] }
193
193
 
194
194
  it 'returns an equivalent relation to the unoptimized operation' do
195
195
  should == object
@@ -204,8 +204,8 @@ describe Algebra::Rename, '#optimize' do
204
204
  end
205
205
 
206
206
  context 'containing a restriction, containing a object that cancels out' do
207
- let(:operand) { relation.rename(:id => :other_id).restrict { |r| r.other_id.eq(1) } }
208
- let(:aliases) { { :other_id => :id } }
207
+ let(:operand) { relation.rename(id: :other_id).restrict { |r| r.other_id.eq(1) } }
208
+ let(:aliases) { { other_id: :id } }
209
209
 
210
210
  it 'pushes the object before the restriction, and then cancel it out' do
211
211
  should eql(relation.restrict { |r| r.id.eq(1) })
@@ -224,9 +224,9 @@ describe Algebra::Rename, '#optimize' do
224
224
  end
225
225
 
226
226
  context 'containing a set operation' do
227
- let(:left) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 1, 'Dan Kubb' ] ])) }
228
- let(:right) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 2, 'Dan Kubb' ] ])) }
229
- let(:operand) { left.union(right) }
227
+ let(:left) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[1, 'Dan Kubb']])) }
228
+ let(:right) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[2, 'Dan Kubb']])) }
229
+ let(:operand) { left.union(right) }
230
230
 
231
231
  it 'pushes the object to each relation' do
232
232
  should eql(left.rename(aliases).union(right.rename(aliases)))
@@ -245,10 +245,10 @@ describe Algebra::Rename, '#optimize' do
245
245
  end
246
246
 
247
247
  context 'containing a set operation, containing a object that cancels out' do
248
- let(:left) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 1, 'Dan Kubb' ] ])) }
249
- let(:right) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 2, 'Dan Kubb' ] ])) }
250
- let(:operand) { left.rename(:id => :other_id).union(right.rename(:id => :other_id)) }
251
- let(:aliases) { { :other_id => :id } }
248
+ let(:left) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[1, 'Dan Kubb']])) }
249
+ let(:right) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[2, 'Dan Kubb']])) }
250
+ let(:operand) { left.rename(id: :other_id).union(right.rename(id: :other_id)) }
251
+ let(:aliases) { { other_id: :id } }
252
252
 
253
253
  it 'pushes the object to each relation, then cancel it out' do
254
254
  should eql(left.union(right))
@@ -267,11 +267,11 @@ describe Algebra::Rename, '#optimize' do
267
267
  end
268
268
 
269
269
  context 'containing a reverse operation' do
270
- let(:limit) { relation.sort_by { |r| [ r.id, r.name ] }.take(2) }
271
- let(:operand) { limit.reverse }
270
+ let(:limit) { relation.sort_by { |r| [r.id, r.name] }.take(2) }
271
+ let(:operand) { limit.reverse }
272
272
 
273
273
  it 'pushes the object under the order, limit and reverse' do
274
- should eql(relation.rename(aliases).sort_by { |r| [ r.other_id, r.name ] }.take(2).reverse)
274
+ should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.take(2).reverse)
275
275
  end
276
276
 
277
277
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -287,12 +287,12 @@ describe Algebra::Rename, '#optimize' do
287
287
  end
288
288
 
289
289
  context 'containing a reverse operation, containing a object that cancels out' do
290
- let(:limit) { relation.sort_by { |r| [ r.id, r.name ] }.take(2) }
291
- let(:operand) { limit.rename(:id => :other_id).reverse }
292
- let(:aliases) { { :other_id => :id } }
290
+ let(:limit) { relation.sort_by { |r| [r.id, r.name] }.take(2) }
291
+ let(:operand) { limit.rename(id: :other_id).reverse }
292
+ let(:aliases) { { other_id: :id } }
293
293
 
294
294
  it 'pushes the object under the order, limit and reverse, and then cancel it out' do
295
- should eql(relation.sort_by { |r| [ r.id, r.name ] }.take(2).reverse)
295
+ should eql(relation.sort_by { |r| [r.id, r.name] }.take(2).reverse)
296
296
  end
297
297
 
298
298
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -308,10 +308,10 @@ describe Algebra::Rename, '#optimize' do
308
308
  end
309
309
 
310
310
  context 'containing an order operation' do
311
- let(:operand) { relation.sort_by { |r| [ r.id, r.name ] } }
311
+ let(:operand) { relation.sort_by { |r| [r.id, r.name] } }
312
312
 
313
313
  it 'pushes the object under the order' do
314
- should eql(relation.rename(aliases).sort_by { |r| [ r.other_id, r.name ] })
314
+ should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] })
315
315
  end
316
316
 
317
317
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -327,11 +327,11 @@ describe Algebra::Rename, '#optimize' do
327
327
  end
328
328
 
329
329
  context 'containing an order operation, containing a object that cancels out' do
330
- let(:operand) { relation.rename(:id => :other_id).sort_by { |r| [ r.other_id, r.name ] } }
331
- let(:aliases) { { :other_id => :id } }
330
+ let(:operand) { relation.rename(id: :other_id).sort_by { |r| [r.other_id, r.name] } }
331
+ let(:aliases) { { other_id: :id } }
332
332
 
333
333
  it 'pushes the object under the order, and then cancel it out' do
334
- should eql(relation.sort_by { |r| [ r.id, r.name ] })
334
+ should eql(relation.sort_by { |r| [r.id, r.name] })
335
335
  end
336
336
 
337
337
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -347,11 +347,11 @@ describe Algebra::Rename, '#optimize' do
347
347
  end
348
348
 
349
349
  context 'containing a limit operation' do
350
- let(:order) { relation.sort_by { |r| [ r.id, r.name ] } }
351
- let(:operand) { order.take(2) }
350
+ let(:order) { relation.sort_by { |r| [r.id, r.name] } }
351
+ let(:operand) { order.take(2) }
352
352
 
353
353
  it 'pushes the object under the limit and order' do
354
- should eql(relation.rename(aliases).sort_by { |r| [ r.other_id, r.name ] }.take(2))
354
+ should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.take(2))
355
355
  end
356
356
 
357
357
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -367,12 +367,12 @@ describe Algebra::Rename, '#optimize' do
367
367
  end
368
368
 
369
369
  context 'containing a limit operation, containing a object that cancels out' do
370
- let(:order) { relation.sort_by { |r| [ r.id, r.name ] } }
371
- let(:operand) { order.rename(:id => :other_id).take(2) }
372
- let(:aliases) { { :other_id => :id } }
370
+ let(:order) { relation.sort_by { |r| [r.id, r.name] } }
371
+ let(:operand) { order.rename(id: :other_id).take(2) }
372
+ let(:aliases) { { other_id: :id } }
373
373
 
374
374
  it 'pushes the object under the limit and order, and then cancel it out' do
375
- should eql(relation.sort_by { |r| [ r.id, r.name ] }.take(2))
375
+ should eql(relation.sort_by { |r| [r.id, r.name] }.take(2))
376
376
  end
377
377
 
378
378
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -388,11 +388,11 @@ describe Algebra::Rename, '#optimize' do
388
388
  end
389
389
 
390
390
  context 'containing an offset operation' do
391
- let(:order) { relation.sort_by { |r| [ r.id, r.name ] } }
392
- let(:operand) { order.drop(1) }
391
+ let(:order) { relation.sort_by { |r| [r.id, r.name] } }
392
+ let(:operand) { order.drop(1) }
393
393
 
394
394
  it 'pushes the object under the offset and order' do
395
- should eql(relation.rename(aliases).sort_by { |r| [ r.other_id, r.name ] }.drop(1))
395
+ should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.drop(1))
396
396
  end
397
397
 
398
398
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -408,12 +408,12 @@ describe Algebra::Rename, '#optimize' do
408
408
  end
409
409
 
410
410
  context 'containing an offset operation, containing a object that cancels out' do
411
- let(:order) { relation.sort_by { |r| [ r.id, r.name ] } }
412
- let(:operand) { order.rename(:id => :other_id).drop(1) }
413
- let(:aliases) { { :other_id => :id } }
411
+ let(:order) { relation.sort_by { |r| [r.id, r.name] } }
412
+ let(:operand) { order.rename(id: :other_id).drop(1) }
413
+ let(:aliases) { { other_id: :id } }
414
414
 
415
415
  it 'pushes the object under the offset and order, and then cancel it out' do
416
- should eql(relation.sort_by { |r| [ r.id, r.name ] }.drop(1))
416
+ should eql(relation.sort_by { |r| [r.id, r.name] }.drop(1))
417
417
  end
418
418
 
419
419
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -429,9 +429,9 @@ describe Algebra::Rename, '#optimize' do
429
429
  end
430
430
 
431
431
  context 'containing a materialized relation' do
432
- let(:operand) { Relation.new([ [ :id, Integer ], [ :name, String ] ], [ [ 1, 'Dan Kubb' ] ]) }
432
+ let(:operand) { Relation.new([[:id, Integer], [:name, String]], [[1, 'Dan Kubb']]) }
433
433
 
434
- it { should eql(Relation::Materialized.new([ [ :other_id, Integer ], [ :name, String ] ], [ [ 1, 'Dan Kubb' ] ])) }
434
+ it { should eql(Relation::Materialized.new([[:other_id, Integer], [:name, String]], [[1, 'Dan Kubb']])) }
435
435
 
436
436
  it 'returns an equivalent relation to the unoptimized operation' do
437
437
  should == object
@@ -1,19 +1,18 @@
1
1
  # encoding: utf-8
2
-
3
2
  require 'spec_helper'
4
3
 
5
4
  describe Algebra::Restriction, '#optimize' do
6
5
  subject { object.optimize }
7
6
 
8
- let(:body) { LazyEnumerable.new([ [ 1 ] ]) }
9
- let(:relation) { Relation.new([ [ :id, Integer ] ], body) }
10
- let(:operand) { relation }
11
- let(:object) { described_class.new(operand, predicate) }
7
+ let(:body) { LazyEnumerable.new([[1]]) }
8
+ let(:relation) { Relation.new([[:id, Integer]], body) }
9
+ let(:operand) { relation }
10
+ let(:object) { described_class.new(operand, predicate) }
12
11
 
13
12
  context 'with a tautology' do
14
13
  let(:predicate) { Function::Proposition::Tautology.instance }
15
14
 
16
- it { should equal(relation) }
15
+ it { should be(relation) }
17
16
 
18
17
  it 'does not execute body#each' do
19
18
  body.should_not_receive(:each)
@@ -43,7 +42,7 @@ describe Algebra::Restriction, '#optimize' do
43
42
  context 'with a predicate' do
44
43
  let(:predicate) { relation[:id].eq(1) }
45
44
 
46
- it { should equal(object) }
45
+ it { should be(object) }
47
46
 
48
47
  it 'does not execute body#each' do
49
48
  body.should_not_receive(:each)
@@ -56,13 +55,13 @@ describe Algebra::Restriction, '#optimize' do
56
55
  context 'with an optimizable predicate' do
57
56
  let(:predicate) { relation[:id].eq(1).and(Function::Proposition::Tautology.instance) }
58
57
 
59
- it { should_not equal(object) }
58
+ it { should_not be(object) }
60
59
 
61
60
  it { should be_kind_of(described_class) }
62
61
 
63
62
  its(:predicate) { should eql(relation[:id].eq(1)) }
64
63
 
65
- its(:operand) { should equal(relation) }
64
+ its(:operand) { should be(relation) }
66
65
 
67
66
  it 'returns an equivalent relation to the unoptimized operation' do
68
67
  should == object
@@ -80,13 +79,13 @@ describe Algebra::Restriction, '#optimize' do
80
79
  let(:operand) { relation.project(relation.header) }
81
80
  let(:predicate) { relation[:id].eq(1) }
82
81
 
83
- it { should_not equal(object) }
82
+ it { should_not be(object) }
84
83
 
85
84
  it { should be_kind_of(described_class) }
86
85
 
87
- its(:predicate) { should equal(predicate) }
86
+ its(:predicate) { should be(predicate) }
88
87
 
89
- its(:operand) { should equal(relation) }
88
+ its(:operand) { should be(relation) }
90
89
 
91
90
  it 'returns an equivalent relation to the unoptimized operation' do
92
91
  should == object
@@ -101,10 +100,10 @@ describe Algebra::Restriction, '#optimize' do
101
100
  end
102
101
 
103
102
  context 'with an empty relation' do
104
- let(:operand) { Relation::Empty.new([ [ :id, Integer ] ]) }
105
- let(:predicate) { operand[:id].gte(1) }
103
+ let(:operand) { Relation::Empty.new([[:id, Integer]]) }
104
+ let(:predicate) { operand[:id].gte(1) }
106
105
 
107
- it { should equal(operand) }
106
+ it { should be(operand) }
108
107
 
109
108
  it 'returns an equivalent relation to the unoptimized operation' do
110
109
  should == object
@@ -141,13 +140,13 @@ describe Algebra::Restriction, '#optimize' do
141
140
  let(:operand) { described_class.new(relation, other_predicate) }
142
141
  let(:predicate) { operand[:id].gte(1) }
143
142
 
144
- it { should_not equal(object) }
143
+ it { should_not be(object) }
145
144
 
146
145
  it { should be_kind_of(described_class) }
147
146
 
148
147
  its(:predicate) { should eql(other_predicate & predicate) }
149
148
 
150
- its(:operand) { should equal(relation) }
149
+ its(:operand) { should be(relation) }
151
150
 
152
151
  it 'returns an equivalent relation to the unoptimized operation' do
153
152
  should == object
@@ -162,10 +161,10 @@ describe Algebra::Restriction, '#optimize' do
162
161
  end
163
162
 
164
163
  context 'with a set operation' do
165
- let(:left) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new([ [ 1 ] ])) }
166
- let(:right) { Relation.new([ [ :id, Integer ] ], LazyEnumerable.new([ [ 2 ] ])) }
167
- let(:operand) { left.union(right) }
168
- let(:predicate) { operand[:id].gte(1) }
164
+ let(:left) { Relation.new([[:id, Integer]], LazyEnumerable.new([[1]])) }
165
+ let(:right) { Relation.new([[:id, Integer]], LazyEnumerable.new([[2]])) }
166
+ let(:operand) { left.union(right) }
167
+ let(:predicate) { operand[:id].gte(1) }
169
168
 
170
169
  it 'pushes the object to each relation' do
171
170
  should eql(left.restrict { |r| r.id.gte(1) }.union(right.restrict { |r| r.id.gte(1) }))
@@ -204,10 +203,10 @@ describe Algebra::Restriction, '#optimize' do
204
203
  end
205
204
 
206
205
  context 'containing a materialized relation' do
207
- let(:operand) { Relation.new([ [ :id, Integer ] ], [ [ 1 ], [ 2 ] ]) }
208
- let(:predicate) { operand[:id].eq(1) }
206
+ let(:operand) { Relation.new([[:id, Integer]], [[1], [2]]) }
207
+ let(:predicate) { operand[:id].eq(1) }
209
208
 
210
- it { should eql(Relation::Materialized.new([ [ :id, Integer ] ], [ [ 1 ] ])) }
209
+ it { should eql(Relation::Materialized.new([[:id, Integer]], [[1]])) }
211
210
 
212
211
  it 'returns an equivalent relation to the unoptimized operation' do
213
212
  should == object
@@ -5,13 +5,13 @@ require 'spec_helper'
5
5
  describe Algebra::Summarization, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:header) { [ [ :id, Integer ], [ :name, String ], [ :age, Integer ] ] }
9
- let(:body) { LazyEnumerable.new([ [ 1, 'Dan Kubb', 35 ], [ 2, 'Jane Doe', 24 ] ]) }
10
- let(:relation) { Relation.new(header, body) }
11
- let(:operand) { relation }
12
- let(:summarize_per) { relation.project([ :id ]) }
13
- let(:summarizers) { { Attribute.coerce(:count) => lambda { |acc, tuple| acc.to_i + 1 } } }
14
- let(:object) { described_class.new(operand, summarize_per, summarizers) }
8
+ let(:header) { [[:id, Integer], [:name, String], [:age, Integer]] }
9
+ let(:body) { LazyEnumerable.new([[1, 'Dan Kubb', 35], [2, 'Jane Doe', 24]]) }
10
+ let(:relation) { Relation.new(header, body) }
11
+ let(:operand) { relation }
12
+ let(:summarize_per) { relation.project([:id]) }
13
+ let(:summarizers) { { Attribute.coerce(:count) => ->(acc, tuple) { acc.to_i + 1 } } }
14
+ let(:object) { described_class.new(operand, summarize_per, summarizers) }
15
15
 
16
16
  context 'when the operand is empty' do
17
17
  let(:operand) { relation.restrict { false } }
@@ -31,7 +31,7 @@ describe Algebra::Summarization, '#optimize' do
31
31
  end
32
32
 
33
33
  context 'when the summarize_per is empty' do
34
- let(:summarize_per) { relation.project([ :id ]).restrict { false } }
34
+ let(:summarize_per) { relation.project([:id]).restrict { false } }
35
35
 
36
36
  it { should eql(Relation::Empty.new(object.header)) }
37
37