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,24 +5,24 @@ require 'spec_helper'
5
5
  describe Algebra::Difference, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:header) { [ [ :id, Integer ] ] }
9
- let(:left_body) { LazyEnumerable.new([ [ 1 ] ]) }
10
- let(:right_body) { LazyEnumerable.new([ [ 2 ] ]) }
8
+ let(:header) { [[:id, Integer]] }
9
+ let(:left_body) { LazyEnumerable.new([[1]]) }
10
+ let(:right_body) { LazyEnumerable.new([[2]]) }
11
11
  let(:original_left) { Relation.new(header, left_body) }
12
12
  let(:original_right) { Relation.new(header, right_body) }
13
13
  let(:object) { described_class.new(left, right) }
14
14
 
15
15
  before do
16
16
  # skip dup of the left and right body to avoid clearing the method stubs
17
- left_body.stub!(:frozen?).and_return(true)
18
- right_body.stub!(:frozen?).and_return(true)
17
+ left_body.stub(:frozen?).and_return(true)
18
+ right_body.stub(:frozen?).and_return(true)
19
19
  end
20
20
 
21
21
  context 'left is an empty relation' do
22
22
  let(:left) { Relation::Empty.new(header) }
23
23
  let(:right) { original_right }
24
24
 
25
- it { should equal(left) }
25
+ it { should be(left) }
26
26
 
27
27
  it 'returns an equivalent relation to the unoptimized operation' do
28
28
  should == object
@@ -40,7 +40,7 @@ describe Algebra::Difference, '#optimize' do
40
40
  let(:left) { original_left }
41
41
  let(:right) { Relation::Empty.new(header) }
42
42
 
43
- it { should equal(left) }
43
+ it { should be(left) }
44
44
 
45
45
  it 'returns an equivalent relation to the unoptimized operation' do
46
46
  should == object
@@ -81,7 +81,7 @@ describe Algebra::Difference, '#optimize' do
81
81
  let(:left) { original_left }
82
82
  let(:right) { Algebra::Restriction.new(original_right, Function::Proposition::Contradiction.instance) }
83
83
 
84
- it { should equal(left) }
84
+ it { should be(left) }
85
85
 
86
86
  it 'returns an equivalent relation to the unoptimized operation' do
87
87
  should == object
@@ -102,9 +102,9 @@ describe Algebra::Difference, '#optimize' do
102
102
 
103
103
  unless defined?(JRUBY_VERSION) && JRUBY_VERSION < '1.6'
104
104
  context 'left and right are equivalent relations' do
105
- let(:right_body) { LazyEnumerable.new([ [ 1 ] ]) }
106
- let(:left) { original_left }
107
- let(:right) { original_right }
105
+ let(:right_body) { LazyEnumerable.new([[1]]) }
106
+ let(:left) { original_left }
107
+ let(:right) { original_right }
108
108
 
109
109
  it { should eql(Relation::Empty.new(header)) }
110
110
 
@@ -130,7 +130,7 @@ describe Algebra::Difference, '#optimize' do
130
130
  let(:left) { original_left }
131
131
  let(:right) { original_right }
132
132
 
133
- it { should equal(object) }
133
+ it { should be(object) }
134
134
 
135
135
  it 'executes left_body#each' do
136
136
  left_body.should_receive(:each)
@@ -146,10 +146,10 @@ describe Algebra::Difference, '#optimize' do
146
146
  end
147
147
 
148
148
  context 'left and right are materialized relations' do
149
- let(:left) { Relation.new(header, [ [ 1 ], [ 2 ] ]) }
150
- let(:right) { Relation.new(header, [ [ 1 ] ]) }
149
+ let(:left) { Relation.new(header, [[1], [2]]) }
150
+ let(:right) { Relation.new(header, [[1]]) }
151
151
 
152
- it { should eql(Relation::Materialized.new(header, [ [ 2 ] ])) }
152
+ it { should eql(Relation::Materialized.new(header, [[2]])) }
153
153
 
154
154
  it 'returns an equivalent relation to the unoptimized operation' do
155
155
  should == object
@@ -5,24 +5,24 @@ require 'spec_helper'
5
5
  describe Algebra::Intersection, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:header) { [ [ :id, Integer ] ] }
9
- let(:left_body) { LazyEnumerable.new([ [ 1 ] ]) }
10
- let(:right_body) { LazyEnumerable.new([ [ 2 ] ]) }
8
+ let(:header) { [[:id, Integer]] }
9
+ let(:left_body) { LazyEnumerable.new([[1]]) }
10
+ let(:right_body) { LazyEnumerable.new([[2]]) }
11
11
  let(:original_left) { Relation.new(header, left_body) }
12
12
  let(:original_right) { Relation.new(header, right_body) }
13
13
  let(:object) { described_class.new(left, right) }
14
14
 
15
15
  before do
16
16
  # skip dup of the left and right body to avoid clearing the method stubs
17
- left_body.stub!(:frozen?).and_return(true)
18
- right_body.stub!(:frozen?).and_return(true)
17
+ left_body.stub(:frozen?).and_return(true)
18
+ right_body.stub(:frozen?).and_return(true)
19
19
  end
20
20
 
21
21
  context 'left is an empty relation' do
22
22
  let(:left) { Relation::Empty.new(header) }
23
23
  let(:right) { original_right }
24
24
 
25
- it { should equal(left) }
25
+ it { should be(left) }
26
26
 
27
27
  it 'returns an equivalent relation to the unoptimized operation' do
28
28
  should == object
@@ -40,7 +40,7 @@ describe Algebra::Intersection, '#optimize' do
40
40
  let(:left) { original_left }
41
41
  let(:right) { Relation::Empty.new(header) }
42
42
 
43
- it { should equal(right) }
43
+ it { should be(right) }
44
44
 
45
45
  it 'returns an equivalent relation to the unoptimized operation' do
46
46
  should == object
@@ -102,11 +102,11 @@ describe Algebra::Intersection, '#optimize' do
102
102
 
103
103
  unless defined?(JRUBY_VERSION) && JRUBY_VERSION < '1.6'
104
104
  context 'left and right are equivalent relations' do
105
- let(:right_body) { LazyEnumerable.new([ [ 1 ] ]) }
106
- let(:left) { original_left }
107
- let(:right) { original_right }
105
+ let(:right_body) { LazyEnumerable.new([[1]]) }
106
+ let(:left) { original_left }
107
+ let(:right) { original_right }
108
108
 
109
- it { should equal(left) }
109
+ it { should be(left) }
110
110
 
111
111
  it 'returns an equivalent relation to the unoptimized operation' do
112
112
  should == object
@@ -130,7 +130,7 @@ describe Algebra::Intersection, '#optimize' do
130
130
  let(:left) { original_left }
131
131
  let(:right) { original_right }
132
132
 
133
- it { should equal(object) }
133
+ it { should be(object) }
134
134
 
135
135
  it 'executed left_body#each' do
136
136
  left_body.should_receive(:each)
@@ -146,10 +146,10 @@ describe Algebra::Intersection, '#optimize' do
146
146
  end
147
147
 
148
148
  context 'left and right are materialized relations' do
149
- let(:left) { Relation.new(header, [ [ 1 ], [ 2 ] ]) }
150
- let(:right) { Relation.new(header, [ [ 1 ] ]) }
149
+ let(:left) { Relation.new(header, [[1], [2]]) }
150
+ let(:right) { Relation.new(header, [[1]]) }
151
151
 
152
- it { should eql(Relation::Materialized.new(header, [ [ 1 ] ])) }
152
+ it { should eql(Relation::Materialized.new(header, [[1]])) }
153
153
 
154
154
  it 'returns an equivalent relation to the unoptimized operation' do
155
155
  should == object
@@ -5,13 +5,13 @@ require 'spec_helper'
5
5
  describe Algebra::Join, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:left_body) { LazyEnumerable.new([ [ 1 ], [ 2 ] ]) }
9
- let(:right_body) { LazyEnumerable.new([ [ 2, 'Dan Kubb' ] ]) }
10
- let(:original_left) { Relation.new([ [ :id, Integer ] ], left_body) }
11
- let(:original_right) { Relation.new([ [ :id, Integer ], [ :name, String ] ], right_body) }
12
- let(:left) { original_left }
13
- let(:right) { original_right }
14
- let(:object) { described_class.new(left, right) }
8
+ let(:left_body) { LazyEnumerable.new([[1], [2]]) }
9
+ let(:right_body) { LazyEnumerable.new([[2, 'Dan Kubb']]) }
10
+ let(:original_left) { Relation.new([[:id, Integer]], left_body) }
11
+ let(:original_right) { Relation.new([[:id, Integer], [:name, String]], right_body) }
12
+ let(:left) { original_left }
13
+ let(:right) { original_right }
14
+ let(:object) { described_class.new(left, right) }
15
15
 
16
16
  context 'left is an empty relation' do
17
17
  let(:left) { Relation::Empty.new(original_left.header) }
@@ -82,7 +82,7 @@ describe Algebra::Join, '#optimize' do
82
82
  end
83
83
 
84
84
  context 'left and right are not empty relations' do
85
- it { should equal(object) }
85
+ it { should be(object) }
86
86
 
87
87
  it 'does not execute left_body#each' do
88
88
  left_body.should_not_receive(:each)
@@ -98,10 +98,10 @@ describe Algebra::Join, '#optimize' do
98
98
  end
99
99
 
100
100
  context 'left and right are materialized relations' do
101
- let(:left) { Relation.new([ [ :id, Integer ] ], [ [ 1 ], [ 2 ] ]) }
102
- let(:right) { Relation.new([ [ :id, Integer ], [ :name, String ] ], [ [ 2, 'Dan Kubb' ] ]) }
101
+ let(:left) { Relation.new([[:id, Integer]], [[1], [2]]) }
102
+ let(:right) { Relation.new([[:id, Integer], [:name, String]], [[2, 'Dan Kubb']]) }
103
103
 
104
- it { should eql(Relation::Materialized.new([ [ :id, Integer ], [ :name, String ] ], [ [ 2, 'Dan Kubb' ] ])) }
104
+ it { should eql(Relation::Materialized.new([[:id, Integer], [:name, String]], [[2, 'Dan Kubb']])) }
105
105
 
106
106
  it 'returns an equivalent relation to the unoptimized operation' do
107
107
  should == object
@@ -5,11 +5,11 @@ require 'spec_helper'
5
5
  describe Algebra::Product, '#optimize' do
6
6
  subject { object.optimize }
7
7
 
8
- let(:left_body) { LazyEnumerable.new([ [ 1 ] ]) }
9
- let(:right_body) { LazyEnumerable.new([ [ 'Dan Kubb' ] ]) }
10
- let(:left) { Relation.new([ [ :id, Integer ] ], left_body) }
11
- let(:right) { Relation.new([ [ :name, String ] ], right_body) }
12
- let(:object) { described_class.new(left, right) }
8
+ let(:left_body) { LazyEnumerable.new([[1]]) }
9
+ let(:right_body) { LazyEnumerable.new([['Dan Kubb']]) }
10
+ let(:left) { Relation.new([[:id, Integer]], left_body) }
11
+ let(:right) { Relation.new([[:name, String]], right_body) }
12
+ let(:object) { described_class.new(left, right) }
13
13
 
14
14
  context 'left is a TABLE_DUM' do
15
15
  let(:left) { TABLE_DUM }
@@ -82,7 +82,7 @@ describe Algebra::Product, '#optimize' do
82
82
  context 'left is a TABLE_DEE' do
83
83
  let(:left) { TABLE_DEE }
84
84
 
85
- it { should equal(right) }
85
+ it { should be(right) }
86
86
 
87
87
  it 'returns an equivalent relation to the unoptimized operation' do
88
88
  should == object
@@ -99,7 +99,7 @@ describe Algebra::Product, '#optimize' do
99
99
  context 'right is a TABLE_DEE' do
100
100
  let(:right) { TABLE_DEE }
101
101
 
102
- it { should equal(left) }
102
+ it { should be(left) }
103
103
 
104
104
  it 'returns an equivalent relation to the unoptimized operation' do
105
105
  should == object
@@ -116,7 +116,7 @@ describe Algebra::Product, '#optimize' do
116
116
  context 'left is a TABLE_DEE when optimized' do
117
117
  let(:left) { TABLE_DEE.project([]) }
118
118
 
119
- it { should equal(right) }
119
+ it { should be(right) }
120
120
 
121
121
  it 'returns an equivalent relation to the unoptimized operation' do
122
122
  should == object
@@ -133,7 +133,7 @@ describe Algebra::Product, '#optimize' do
133
133
  context 'right is a TABLE_DEE when optimized' do
134
134
  let(:right) { TABLE_DEE.project([]) }
135
135
 
136
- it { should equal(left) }
136
+ it { should be(left) }
137
137
 
138
138
  it 'returns an equivalent relation to the unoptimized operation' do
139
139
  should == object
@@ -148,7 +148,7 @@ describe Algebra::Product, '#optimize' do
148
148
  end
149
149
 
150
150
  context 'left and right are normal relations' do
151
- it { should equal(object) }
151
+ it { should be(object) }
152
152
 
153
153
  it 'does not execute left_body#each' do
154
154
  left_body.should_not_receive(:each)
@@ -164,10 +164,10 @@ describe Algebra::Product, '#optimize' do
164
164
  end
165
165
 
166
166
  context 'left and right are materialized relations' do
167
- let(:left) { Relation.new([ [ :id, Integer ] ], [ [ 1 ] ]) }
168
- let(:right) { Relation.new([ [ :name, String ] ], [ [ 'Dan Kubb' ] ]) }
167
+ let(:left) { Relation.new([[:id, Integer]], [[1]]) }
168
+ let(:right) { Relation.new([[:name, String]], [['Dan Kubb']]) }
169
169
 
170
- it { should eql(Relation::Materialized.new([ [ :id, Integer ], [ :name, String ] ], [ [ 1, 'Dan Kubb' ] ])) }
170
+ it { should eql(Relation::Materialized.new([[:id, Integer], [:name, String]], [[1, 'Dan Kubb']])) }
171
171
 
172
172
  it 'returns an equivalent relation to the unoptimized operation' do
173
173
  should == object
@@ -5,21 +5,21 @@ require 'spec_helper'
5
5
  describe Algebra::Projection, '#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 ] ]) }
10
- let(:relation) { Relation.new(header, body) }
11
- let(:operand) { relation }
12
- let(:object) { described_class.new(operand, attributes) }
8
+ let(:header) { [[:id, Integer], [:name, String], [:age, Integer]] }
9
+ let(:body) { LazyEnumerable.new([[1, 'Dan Kubb', 35]]) }
10
+ let(:relation) { Relation.new(header, body) }
11
+ let(:operand) { relation }
12
+ let(:object) { described_class.new(operand, attributes) }
13
13
 
14
14
  before do
15
15
  # skip dup of the body to avoid clearing the method stubs
16
- body.stub!(:frozen?).and_return(true)
16
+ body.stub(:frozen?).and_return(true)
17
17
  end
18
18
 
19
19
  context 'when the attributes are equivalent to the relation headers, and in the same order' do
20
20
  let(:attributes) { header }
21
21
 
22
- it { should equal(operand) }
22
+ it { should be(operand) }
23
23
 
24
24
  it 'returns an equivalent relation to the unoptimized operation' do
25
25
  should == object
@@ -34,10 +34,10 @@ describe Algebra::Projection, '#optimize' do
34
34
  end
35
35
 
36
36
  context 'when the attributes are equivalent to the relation headers, and not in the same order' do
37
- let(:attributes) { [ :name, :id ] }
37
+ let(:attributes) { [:name, :id] }
38
38
 
39
39
  it 'does not factor out the object, because tuple order is currently significant' do
40
- should equal(object)
40
+ should be(object)
41
41
  end
42
42
 
43
43
  it 'does not execute body#each' do
@@ -49,9 +49,9 @@ describe Algebra::Projection, '#optimize' do
49
49
  end
50
50
 
51
51
  context 'when the attributes are different from the relation headers' do
52
- let(:attributes) { [ :id ] }
52
+ let(:attributes) { [:id] }
53
53
 
54
- it { should equal(object) }
54
+ it { should be(object) }
55
55
 
56
56
  it 'does not execute body#each' do
57
57
  body.should_not_receive(:each)
@@ -63,7 +63,7 @@ describe Algebra::Projection, '#optimize' do
63
63
 
64
64
  context 'containing an empty relation' do
65
65
  let(:operand) { Relation::Empty.new(header) }
66
- let(:attributes) { [ :id ] }
66
+ let(:attributes) { [:id] }
67
67
 
68
68
  it { should eql(Relation::Empty.new(object.header)) }
69
69
 
@@ -76,7 +76,7 @@ describe Algebra::Projection, '#optimize' do
76
76
 
77
77
  context 'containing an empty relation when optimized' do
78
78
  let(:operand) { Algebra::Restriction.new(relation, Function::Proposition::Contradiction.instance) }
79
- let(:attributes) { [ :id ] }
79
+ let(:attributes) { [:id] }
80
80
 
81
81
  it { should eql(Relation::Empty.new(object.header)) }
82
82
 
@@ -94,13 +94,13 @@ describe Algebra::Projection, '#optimize' do
94
94
 
95
95
  context 'containing an optimizable relation' do
96
96
  let(:operand) { Algebra::Restriction.new(relation, Function::Proposition::Tautology.instance) }
97
- let(:attributes) { [ :id ] }
97
+ let(:attributes) { [:id] }
98
98
 
99
- it { should_not equal(object) }
99
+ it { should_not be(object) }
100
100
 
101
101
  it { should be_kind_of(described_class) }
102
102
 
103
- its(:operand) { should equal(relation) }
103
+ its(:operand) { should be(relation) }
104
104
 
105
105
  its(:header) { should == object.header }
106
106
 
@@ -117,14 +117,14 @@ describe Algebra::Projection, '#optimize' do
117
117
  end
118
118
 
119
119
  context 'containing a projection' do
120
- let(:operand) { relation.project([ :id, :name ]) }
121
- let(:attributes) { [ :id ] }
120
+ let(:operand) { relation.project([:id, :name]) }
121
+ let(:attributes) { [:id] }
122
122
 
123
- it { should_not equal(object) }
123
+ it { should_not be(object) }
124
124
 
125
125
  it { should be_kind_of(described_class) }
126
126
 
127
- its(:operand) { should equal(relation) }
127
+ its(:operand) { should be(relation) }
128
128
 
129
129
  its(:header) { should == object.header }
130
130
 
@@ -141,14 +141,14 @@ describe Algebra::Projection, '#optimize' do
141
141
  end
142
142
 
143
143
  context 'containing a set operation' do
144
- let(:left) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 1, 'Dan Kubb' ] ])) }
145
- let(:right) { Relation.new([ [ :id, Integer ], [ :name, String ] ], LazyEnumerable.new([ [ 2, 'Dan Kubb' ] ])) }
146
- let(:operand) { left.union(right) }
147
- let(:attributes) { [ :name ] }
144
+ let(:left) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[1, 'Dan Kubb']])) }
145
+ let(:right) { Relation.new([[:id, Integer], [:name, String]], LazyEnumerable.new([[2, 'Dan Kubb']])) }
146
+ let(:operand) { left.union(right) }
147
+ let(:attributes) { [:name] }
148
148
 
149
149
  it 'pushes the object to each relation' do
150
150
  should eql(Algebra::Union.new(
151
- described_class.new(left, object.header),
151
+ described_class.new(left, object.header),
152
152
  described_class.new(right, object.header)
153
153
  ))
154
154
  end
@@ -166,21 +166,21 @@ describe Algebra::Projection, '#optimize' do
166
166
  end
167
167
 
168
168
  context 'containing a set operation containing a projection of relations' do
169
- let(:left_body) { LazyEnumerable.new([ [ 1, 'Dan Kubb', 35 ] ]) }
170
- let(:right_body) { LazyEnumerable.new([ [ 2, 'Dan Kubb', 35 ] ]) }
171
- let(:left) { Relation.new(header, left_body) }
172
- let(:right) { Relation.new(header, right_body) }
173
- let(:operand) { left.project([ :id, :name ]).union(right.project([ :id, :name ])) }
174
- let(:attributes) { [ :name ] }
169
+ let(:left_body) { LazyEnumerable.new([[1, 'Dan Kubb', 35]]) }
170
+ let(:right_body) { LazyEnumerable.new([[2, 'Dan Kubb', 35]]) }
171
+ let(:left) { Relation.new(header, left_body) }
172
+ let(:right) { Relation.new(header, right_body) }
173
+ let(:operand) { left.project([:id, :name]).union(right.project([:id, :name])) }
174
+ let(:attributes) { [:name] }
175
175
 
176
176
  before do
177
177
  # skip dup of the left and right body to avoid clearing the method stubs
178
- left_body.stub!(:frozen?).and_return(true)
179
- right_body.stub!(:frozen?).and_return(true)
178
+ left_body.stub(:frozen?).and_return(true)
179
+ right_body.stub(:frozen?).and_return(true)
180
180
  end
181
181
 
182
182
  it 'pushes the object to each relation, and combine the nested objects' do
183
- should eql(left.project([ :name ]).union(right.project([ :name ])))
183
+ should eql(left.project([:name]).union(right.project([:name])))
184
184
  end
185
185
 
186
186
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -205,15 +205,15 @@ describe Algebra::Projection, '#optimize' do
205
205
  end
206
206
 
207
207
  context 'containing a set operation containing a projection of materialized relations' do
208
- let(:left_body) { [ [ 1, 'Dan Kubb', 35 ] ] }
209
- let(:right_body) { [ [ 2, 'Dan Kubb', 35 ] ] }
210
- let(:left) { Relation.new(header, left_body) }
211
- let(:right) { Relation.new(header, right_body) }
212
- let(:operand) { left.project([ :id, :name ]).union(right.project([ :id, :name ])) }
213
- let(:attributes) { [ :name ] }
208
+ let(:left_body) { [[1, 'Dan Kubb', 35]] }
209
+ let(:right_body) { [[2, 'Dan Kubb', 35]] }
210
+ let(:left) { Relation.new(header, left_body) }
211
+ let(:right) { Relation.new(header, right_body) }
212
+ let(:operand) { left.project([:id, :name]).union(right.project([:id, :name])) }
213
+ let(:attributes) { [:name] }
214
214
 
215
215
  it 'pushes the object to each relation, and combine the nested objects, then materializes' do
216
- should eql(Relation.new([ [ :name, String ] ], [ [ 'Dan Kubb' ] ]))
216
+ should eql(Relation.new([[:name, String]], [['Dan Kubb']]))
217
217
  end
218
218
 
219
219
  it 'returns an equivalent relation to the unoptimized operation' do
@@ -236,10 +236,10 @@ describe Algebra::Projection, '#optimize' do
236
236
  end
237
237
 
238
238
  context 'containing a materialized relation' do
239
- let(:operand) { Relation.new(header, [ [ 1, 'Dan Kubb', 35 ] ]) }
240
- let(:attributes) { [ :id ] }
239
+ let(:operand) { Relation.new(header, [[1, 'Dan Kubb', 35]]) }
240
+ let(:attributes) { [:id] }
241
241
 
242
- it { should eql(Relation::Materialized.new([ [ :id, Integer ] ], [ [ 1 ] ])) }
242
+ it { should eql(Relation::Materialized.new([[:id, Integer]], [[1]])) }
243
243
 
244
244
  it 'returns an equivalent relation to the unoptimized operation' do
245
245
  should == object