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.
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.travis.yml +4 -6
- data/Gemfile +6 -3
- data/Gemfile.devtools +26 -24
- data/Guardfile +18 -9
- data/README.md +2 -25
- data/axiom-optimizer.gemspec +1 -3
- data/config/devtools.yml +2 -0
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/rubocop.yml +53 -0
- data/lib/axiom/optimizer.rb +1 -1
- data/lib/axiom/optimizer/algebra/difference.rb +1 -1
- data/lib/axiom/optimizer/algebra/join.rb +3 -1
- data/lib/axiom/optimizer/algebra/projection.rb +1 -1
- data/lib/axiom/optimizer/algebra/rename.rb +1 -1
- data/lib/axiom/optimizer/algebra/restriction.rb +1 -1
- data/lib/axiom/optimizer/algebra/summarization.rb +1 -1
- data/lib/axiom/optimizer/function/connective/binary.rb +1 -1
- data/lib/axiom/optimizer/optimizable.rb +5 -3
- data/lib/axiom/optimizer/relation/materialized.rb +1 -1
- data/lib/axiom/optimizer/relation/operation/combination.rb +1 -1
- data/lib/axiom/optimizer/relation/operation/limit.rb +2 -2
- data/lib/axiom/optimizer/support/predicate_partition.rb +1 -4
- data/lib/axiom/optimizer/version.rb +1 -1
- data/spec/integration/axiom/algebra/difference/optimize_spec.rb +15 -15
- data/spec/integration/axiom/algebra/intersection/optimize_spec.rb +15 -15
- data/spec/integration/axiom/algebra/join/optimize_spec.rb +11 -11
- data/spec/integration/axiom/algebra/product/optimize_spec.rb +13 -13
- data/spec/integration/axiom/algebra/projection/optimize_spec.rb +44 -44
- data/spec/integration/axiom/algebra/rename/optimize_spec.rb +70 -70
- data/spec/integration/axiom/algebra/restriction/optimize_spec.rb +23 -24
- data/spec/integration/axiom/algebra/summarization/optimize_spec.rb +8 -8
- data/spec/integration/axiom/algebra/union/optimize_spec.rb +21 -21
- data/spec/integration/axiom/function/connective/conjunction/optimize_spec.rb +26 -26
- data/spec/integration/axiom/function/connective/disjunction/optimize_spec.rb +27 -28
- data/spec/integration/axiom/function/connective/negation/optimize_spec.rb +2 -2
- data/spec/integration/axiom/function/optimize_spec.rb +1 -1
- data/spec/integration/axiom/function/predicate/equality/optimize_spec.rb +8 -8
- data/spec/integration/axiom/function/predicate/exclusion/optimize_spec.rb +19 -19
- data/spec/integration/axiom/function/predicate/greater_than/optimize_spec.rb +17 -17
- data/spec/integration/axiom/function/predicate/greater_than_or_equal_to/optimize_spec.rb +17 -17
- data/spec/integration/axiom/function/predicate/inclusion/optimize_spec.rb +19 -19
- data/spec/integration/axiom/function/predicate/inequality/optimize_spec.rb +8 -8
- data/spec/integration/axiom/function/predicate/less_than/optimize_spec.rb +17 -17
- data/spec/integration/axiom/function/predicate/less_than_or_equal_to/optimize_spec.rb +17 -17
- data/spec/integration/axiom/relation/empty/optimize_spec.rb +2 -2
- data/spec/integration/axiom/relation/materialized/optimize_spec.rb +3 -3
- data/spec/integration/axiom/relation/operation/limit/optimize_spec.rb +16 -16
- data/spec/integration/axiom/relation/operation/offset/optimize_spec.rb +14 -14
- data/spec/integration/axiom/relation/operation/order/optimize_spec.rb +11 -11
- data/spec/integration/axiom/relation/operation/reverse/optimize_spec.rb +9 -9
- data/spec/integration/axiom/relation/optimize_spec.rb +4 -4
- data/spec/shared/function_connective_binary_optimize_behavior.rb +18 -18
- data/spec/shared/optimize_method_behavior.rb +2 -2
- data/spec/spec_helper.rb +7 -8
- data/spec/support/add_method_missing.rb +3 -4
- data/spec/unit/axiom/optimizer/algebra/difference/empty_left/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/difference/empty_right/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/difference/equal_operands/optimize_spec.rb +7 -9
- data/spec/unit/axiom/optimizer/algebra/extension/extensions_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/algebra/extension/order_operand/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/algebra/extension/order_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/extension/unoptimized_operand/optimizable_predicate_spec.rb +10 -10
- data/spec/unit/axiom/optimizer/algebra/extension/unoptimized_operand/optimize_spec.rb +10 -10
- data/spec/unit/axiom/optimizer/algebra/intersection/empty_left/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/intersection/empty_right/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/intersection/equal_operands/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/join/disjoint_headers/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/join/disjoint_headers/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/join/equal_headers/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/join/equal_headers/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/algebra/join/materialized_left/optimizable_predicate_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/algebra/join/materialized_left/optimize_spec.rb +12 -12
- data/spec/unit/axiom/optimizer/algebra/join/materialized_right/optimizable_predicate_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/algebra/join/materialized_right/optimize_spec.rb +12 -12
- data/spec/unit/axiom/optimizer/algebra/product/table_dee_left/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/algebra/product/table_dee_left/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/product/table_dee_right/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/algebra/product/table_dee_right/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/projection/empty_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/projection/empty_operand/optimize_spec.rb +6 -8
- data/spec/unit/axiom/optimizer/algebra/projection/extension_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/projection/extension_operand/optimize_spec.rb +12 -6
- data/spec/unit/axiom/optimizer/algebra/projection/projection_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/projection/projection_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/projection/union_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/projection/union_operand/optimize_spec.rb +10 -10
- data/spec/unit/axiom/optimizer/algebra/projection/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/projection/unoptimized_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/aliases_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/empty_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/rename/empty_operand/optimize_spec.rb +5 -7
- data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/order_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/rename/order_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/projection_operand/optimizable_predicate_spec.rb +12 -12
- data/spec/unit/axiom/optimizer/algebra/rename/projection_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/rename_operand/optimizable_predicate_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/algebra/rename/rename_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/rename_operand_and_empty_aliases/optimizable_predicate_spec.rb +11 -11
- data/spec/unit/axiom/optimizer/algebra/rename/rename_operand_and_empty_aliases/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/rename/restriction_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/rename/restriction_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/rename/reverse_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/algebra/rename/reverse_operand/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/algebra/rename/set_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/rename/set_operand/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/algebra/rename/unoptimized_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/rename/unoptimized_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/restriction/contradiction/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/restriction/contradiction/optimize_spec.rb +7 -9
- data/spec/unit/axiom/optimizer/algebra/restriction/join_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/restriction/join_operand/optimize_spec.rb +17 -17
- data/spec/unit/axiom/optimizer/algebra/restriction/order_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/restriction/order_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/restriction/product_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/restriction/product_operand/optimize_spec.rb +17 -17
- data/spec/unit/axiom/optimizer/algebra/restriction/restriction_operand/optimizable_predicate_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/restriction_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/restriction/set_operand/optimizable_predicate_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/set_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/tautology/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/algebra/restriction/tautology/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/restriction/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/algebra/restriction/unoptimized_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/class_methods/extension_default_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/optimize_spec.rb +13 -13
- data/spec/unit/axiom/optimizer/algebra/summarization/empty_summarize_per/optimizable_predicate_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/algebra/summarization/empty_summarize_per/optimize_spec.rb +5 -7
- data/spec/unit/axiom/optimizer/algebra/summarization/order_operand/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/algebra/summarization/order_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/summarization/summarize_per_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/summarization/summarizers_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/algebra/summarization/unoptimized_operand/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/algebra/summarization/unoptimized_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/algebra/union/empty_left/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/union/empty_right/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/algebra/union/equal_operands/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/class_methods/chain_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/function/binary/constant_operands/optimize_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/binary/left_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/binary/right_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/binary/unoptimized_operands/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/function/binary/unoptimized_operands/optimize_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/class_methods/optimize_functions_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/function/class_methods/optimize_operand_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/function/connective/binary/constant_operands/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/binary/equal_operands/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/binary/equal_operands/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/binary/left_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/function/connective/binary/redundant_left/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/connective/binary/redundant_left/optimize_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/connective/binary/redundant_right/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/connective/binary/redundant_right/optimize_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/connective/binary/right_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/conjunction/optimizable_to_exclusion/optimizable_predicate_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/function/connective/conjunction/optimizable_to_exclusion/optimize_spec.rb +17 -17
- data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_left/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_left/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_right/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/conjunction/tautology_right/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_left/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_left/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_right/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/disjunction/contradiction_right/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/disjunction/optimizable_to_inclusion/optimizable_predicate_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/function/connective/disjunction/optimizable_to_inclusion/optimize_spec.rb +17 -17
- data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/negation/constant_operand/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/negation/invertible_operand/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/connective/negation/invertible_operand/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/connective/negation/operand_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/function/predicate/comparable/never_comparable/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/comparable/never_equivalent/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/function/predicate/comparable/normalizable_operands/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/comparable/normalizable_operands/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/predicate/constant_operands/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/predicate/contradiction/optimize_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/enumerable/class_methods/sort_by_value_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/enumerable/empty_right/optimizable_predicate_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/function/predicate/enumerable/one_right/optimizable_predicate_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/function/predicate/enumerable/unoptimized_operands/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/function/predicate/enumerable/unoptimized_operands/optimize_spec.rb +14 -14
- data/spec/unit/axiom/optimizer/function/predicate/equality/tautology/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/exclusion/empty_right/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/function/predicate/exclusion/one_right/optimize_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/function/predicate/greater_than/contradiction/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/greater_than/tautology/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/greater_than_or_equal_to/contradiction/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/greater_than_or_equal_to/tautology/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/inclusion/empty_right/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/function/predicate/inclusion/one_right/optimize_spec.rb +9 -9
- data/spec/unit/axiom/optimizer/function/predicate/inequality/contradiction/optimizable_predicate_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/predicate/less_than/contradiction/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/less_than/tautology/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/less_than_or_equal_to/contradiction/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/less_than_or_equal_to/tautology/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/function/predicate/tautology/optimize_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/unary/constant_operand/optimize_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/unary/operand_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/unary/unoptimized_operand/optimize_spec.rb +1 -1
- data/spec/unit/axiom/optimizer/function/util/class_methods/max_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/function/util/class_methods/min_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/operation_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/optimizable/class_methods/optimizer_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/optimizable/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/optimizable_predicate_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/optimize_spec.rb +2 -2
- data/spec/unit/axiom/optimizer/predicate_partition/left_spec.rb +18 -18
- data/spec/unit/axiom/optimizer/predicate_partition/remainder_spec.rb +19 -19
- data/spec/unit/axiom/optimizer/predicate_partition/right_spec.rb +18 -18
- data/spec/unit/axiom/optimizer/relation/materialized/empty_operand/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/relation/materialized/empty_operand/optimize_spec.rb +5 -7
- data/spec/unit/axiom/optimizer/relation/operation/binary/empty_left/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/binary/empty_right/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/binary/equal_operands/optimizable_predicate_spec.rb +3 -3
- data/spec/unit/axiom/optimizer/relation/operation/binary/left_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/binary/materialized_operands/optimizable_predicate_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/binary/materialized_operands/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/binary/order_left/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/binary/order_left/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/relation/operation/binary/order_right/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/binary/order_right/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/relation/operation/binary/right_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/binary/unoptimized_operands/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/binary/unoptimized_operands/optimize_spec.rb +8 -8
- data/spec/unit/axiom/optimizer/relation/operation/combination/optimize_spec.rb +5 -7
- data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimize_spec.rb +6 -8
- data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimize_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimize_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/order/one_limit_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/order/one_limit_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/order/order_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/order/order_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/order/unoptimized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/order/unoptimized_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/reverse/order_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/reverse/order_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/reverse/reverse_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/reverse/reverse_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimize_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/unary/empty_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/unary/empty_operand/optimize_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/unary/header_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/unary/materialized_operand/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/unary/materialized_operand/optimize_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/unary/operand_spec.rb +7 -7
- data/spec/unit/axiom/optimizer/relation/operation/unary/order_operand/optimizable_predicate_spec.rb +4 -4
- data/spec/unit/axiom/optimizer/relation/operation/unary/order_operand/optimize_spec.rb +6 -6
- data/spec/unit/axiom/optimizer/relation/operation/unary/unchanged_header/optimizable_predicate_spec.rb +5 -5
- data/spec/unit/axiom/optimizer/relation/operation/unary/unchanged_header/optimize_spec.rb +5 -5
- metadata +24 -289
- checksums.yaml +0 -7
- data/.gemtest +0 -0
- data/.rvmrc +0 -1
@@ -5,24 +5,24 @@ require 'spec_helper'
|
|
5
5
|
describe Algebra::Union, '#optimize' do
|
6
6
|
subject { object.optimize }
|
7
7
|
|
8
|
-
let(:header) { [
|
9
|
-
let(:left_body) { LazyEnumerable.new([
|
10
|
-
let(:right_body) { LazyEnumerable.new([
|
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
|
18
|
-
right_body.stub
|
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
|
25
|
+
it { should be(right) }
|
26
26
|
|
27
27
|
it 'returns an equivalent relation to the unoptimized operation' do
|
28
28
|
should == object
|
@@ -45,7 +45,7 @@ describe Algebra::Union, '#optimize' do
|
|
45
45
|
let(:left) { original_left }
|
46
46
|
let(:right) { Relation::Empty.new(header) }
|
47
47
|
|
48
|
-
it { should
|
48
|
+
it { should be(left) }
|
49
49
|
|
50
50
|
it 'returns an equivalent relation to the unoptimized operation' do
|
51
51
|
should == object
|
@@ -68,7 +68,7 @@ describe Algebra::Union, '#optimize' do
|
|
68
68
|
let(:left) { Algebra::Restriction.new(original_left, Function::Proposition::Contradiction.instance) }
|
69
69
|
let(:right) { original_right }
|
70
70
|
|
71
|
-
it { should
|
71
|
+
it { should be(right) }
|
72
72
|
|
73
73
|
it 'returns an equivalent relation to the unoptimized operation' do
|
74
74
|
should == object
|
@@ -91,7 +91,7 @@ describe Algebra::Union, '#optimize' do
|
|
91
91
|
let(:left) { original_left }
|
92
92
|
let(:right) { Algebra::Restriction.new(original_right, Function::Proposition::Contradiction.instance) }
|
93
93
|
|
94
|
-
it { should
|
94
|
+
it { should be(left) }
|
95
95
|
|
96
96
|
it 'returns an equivalent relation to the unoptimized operation' do
|
97
97
|
should == object
|
@@ -111,12 +111,12 @@ describe Algebra::Union, '#optimize' do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
context 'left and right are equivalent relations' do
|
114
|
-
let(:left_body) { LazyEnumerable.new([
|
115
|
-
let(:right_body) { LazyEnumerable.new([
|
116
|
-
let(:left) { original_left
|
117
|
-
let(:right) { original_right
|
114
|
+
let(:left_body) { LazyEnumerable.new([[1]]) }
|
115
|
+
let(:right_body) { LazyEnumerable.new([[1]]) }
|
116
|
+
let(:left) { original_left }
|
117
|
+
let(:right) { original_right }
|
118
118
|
|
119
|
-
it { should
|
119
|
+
it { should be(left) }
|
120
120
|
|
121
121
|
it 'returns an equivalent relation to the unoptimized operation' do
|
122
122
|
should == object
|
@@ -140,12 +140,12 @@ describe Algebra::Union, '#optimize' do
|
|
140
140
|
end
|
141
141
|
|
142
142
|
context 'left and right are equivalent materialized relations' do
|
143
|
-
let(:left_body) { [
|
144
|
-
let(:right_body) { [
|
143
|
+
let(:left_body) { [[1]] }
|
144
|
+
let(:right_body) { [[1]] }
|
145
145
|
let(:left) { original_left }
|
146
146
|
let(:right) { original_right }
|
147
147
|
|
148
|
-
it { should
|
148
|
+
it { should be(left) }
|
149
149
|
|
150
150
|
it 'returns an equivalent relation to the unoptimized operation' do
|
151
151
|
should == object
|
@@ -170,7 +170,7 @@ describe Algebra::Union, '#optimize' do
|
|
170
170
|
let(:left) { original_left }
|
171
171
|
let(:right) { original_right }
|
172
172
|
|
173
|
-
it { should
|
173
|
+
it { should be(object) }
|
174
174
|
|
175
175
|
it 'executes left_body#each' do
|
176
176
|
left_body.should_receive(:each)
|
@@ -186,10 +186,10 @@ describe Algebra::Union, '#optimize' do
|
|
186
186
|
end
|
187
187
|
|
188
188
|
context 'left and right are materialized relations' do
|
189
|
-
let(:left) { Relation.new(header, [
|
190
|
-
let(:right) { Relation.new(header, [
|
189
|
+
let(:left) { Relation.new(header, [[1], [2]]) }
|
190
|
+
let(:right) { Relation.new(header, [[1]]) }
|
191
191
|
|
192
|
-
it { should eql(Relation::Materialized.new(header, [
|
192
|
+
it { should eql(Relation::Materialized.new(header, [[1], [2]])) }
|
193
193
|
|
194
194
|
it 'returns an equivalent relation to the unoptimized operation' do
|
195
195
|
should == object
|
@@ -14,7 +14,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
14
14
|
let(:left) { attribute.gt(1) }
|
15
15
|
let(:right) { attribute.lt(3) }
|
16
16
|
|
17
|
-
it { should
|
17
|
+
it { should be(object) }
|
18
18
|
|
19
19
|
it_should_behave_like 'an optimize method'
|
20
20
|
end
|
@@ -23,7 +23,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
23
23
|
let(:left) { Function::Connective::Negation.new(attribute.gt(1)) }
|
24
24
|
let(:right) { Function::Connective::Negation.new(attribute.lt(3)) }
|
25
25
|
|
26
|
-
it { should_not
|
26
|
+
it { should_not be(object) }
|
27
27
|
|
28
28
|
it 'reverses the operands' do
|
29
29
|
should eql(described_class.new(attribute.lte(1), attribute.gte(3)))
|
@@ -45,7 +45,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
45
45
|
let(:left) { Function::Proposition::Tautology.instance }
|
46
46
|
let(:right) { Function::Proposition::Tautology.instance }
|
47
47
|
|
48
|
-
it { should
|
48
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
49
49
|
|
50
50
|
it_should_behave_like 'an optimize method'
|
51
51
|
end
|
@@ -54,7 +54,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
54
54
|
let(:left) { Function::Proposition::Contradiction.instance }
|
55
55
|
let(:right) { Function::Proposition::Contradiction.instance }
|
56
56
|
|
57
|
-
it { should
|
57
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
58
58
|
|
59
59
|
it_should_behave_like 'an optimize method'
|
60
60
|
end
|
@@ -63,7 +63,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
63
63
|
let(:left) { attribute.gt(1) }
|
64
64
|
let(:right) { Function::Proposition::Tautology.instance }
|
65
65
|
|
66
|
-
it { should
|
66
|
+
it { should be(left) }
|
67
67
|
|
68
68
|
it_should_behave_like 'an optimize method'
|
69
69
|
end
|
@@ -72,7 +72,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
72
72
|
let(:left) { Function::Proposition::Tautology.instance }
|
73
73
|
let(:right) { attribute.lt(3) }
|
74
74
|
|
75
|
-
it { should
|
75
|
+
it { should be(right) }
|
76
76
|
|
77
77
|
it_should_behave_like 'an optimize method'
|
78
78
|
end
|
@@ -81,7 +81,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
81
81
|
let(:left) { attribute.gt(1) }
|
82
82
|
let(:right) { Function::Proposition::Contradiction.instance }
|
83
83
|
|
84
|
-
it { should
|
84
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
85
85
|
|
86
86
|
it_should_behave_like 'an optimize method'
|
87
87
|
end
|
@@ -90,7 +90,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
90
90
|
let(:left) { Function::Proposition::Contradiction.instance }
|
91
91
|
let(:right) { attribute.lt(3) }
|
92
92
|
|
93
|
-
it { should
|
93
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
94
94
|
|
95
95
|
it_should_behave_like 'an optimize method'
|
96
96
|
end
|
@@ -99,7 +99,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
99
99
|
let(:left) { attribute.eq(1) }
|
100
100
|
let(:right) { attribute.eq(3) }
|
101
101
|
|
102
|
-
it { should
|
102
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
103
103
|
|
104
104
|
it_should_behave_like 'an optimize method'
|
105
105
|
end
|
@@ -108,7 +108,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
108
108
|
let(:left) { attribute.ne(1) }
|
109
109
|
let(:right) { attribute.ne(3) }
|
110
110
|
|
111
|
-
it { should eql(attribute.exclude([
|
111
|
+
it { should eql(attribute.exclude([1, 3])) }
|
112
112
|
|
113
113
|
it_should_behave_like 'an optimize method'
|
114
114
|
end
|
@@ -117,7 +117,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
117
117
|
let(:left) { attribute.eq(1) }
|
118
118
|
let(:right) { attribute.ne(1) }
|
119
119
|
|
120
|
-
it { should
|
120
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
121
121
|
|
122
122
|
it_should_behave_like 'an optimize method'
|
123
123
|
end
|
@@ -126,25 +126,25 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
126
126
|
let(:left) { attribute.ne(1) }
|
127
127
|
let(:right) { attribute.eq(1) }
|
128
128
|
|
129
|
-
it { should
|
129
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
130
130
|
|
131
131
|
it_should_behave_like 'an optimize method'
|
132
132
|
end
|
133
133
|
|
134
134
|
context 'left is an Inclusion and right is an Exclusion predicate for the same attribute and value' do
|
135
|
-
let(:left) { attribute.include([
|
136
|
-
let(:right) { attribute.exclude([
|
135
|
+
let(:left) { attribute.include([1, 2]) }
|
136
|
+
let(:right) { attribute.exclude([1, 2]) }
|
137
137
|
|
138
|
-
it { should
|
138
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
139
139
|
|
140
140
|
it_should_behave_like 'an optimize method'
|
141
141
|
end
|
142
142
|
|
143
143
|
context 'left is an Exclusion and right is an Inclusion predicate for the same attribute and value' do
|
144
|
-
let(:left) { attribute.exclude([
|
145
|
-
let(:right) { attribute.include([
|
144
|
+
let(:left) { attribute.exclude([1, 2]) }
|
145
|
+
let(:right) { attribute.include([1, 2]) }
|
146
146
|
|
147
|
-
it { should
|
147
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
148
148
|
|
149
149
|
it_should_behave_like 'an optimize method'
|
150
150
|
end
|
@@ -153,7 +153,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
153
153
|
let(:left) { attribute.gt(1) }
|
154
154
|
let(:right) { attribute.lte(1) }
|
155
155
|
|
156
|
-
it { should
|
156
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
157
157
|
|
158
158
|
it_should_behave_like 'an optimize method'
|
159
159
|
end
|
@@ -162,7 +162,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
162
162
|
let(:left) { attribute.lte(1) }
|
163
163
|
let(:right) { attribute.gt(1) }
|
164
164
|
|
165
|
-
it { should
|
165
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
166
166
|
|
167
167
|
it_should_behave_like 'an optimize method'
|
168
168
|
end
|
@@ -171,7 +171,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
171
171
|
let(:left) { attribute.gte(1) }
|
172
172
|
let(:right) { attribute.lt(1) }
|
173
173
|
|
174
|
-
it { should
|
174
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
175
175
|
|
176
176
|
it_should_behave_like 'an optimize method'
|
177
177
|
end
|
@@ -180,7 +180,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
180
180
|
let(:left) { attribute.lt(1) }
|
181
181
|
let(:right) { attribute.gte(1) }
|
182
182
|
|
183
|
-
it { should
|
183
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
184
184
|
|
185
185
|
it_should_behave_like 'an optimize method'
|
186
186
|
end
|
@@ -190,7 +190,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
190
190
|
let(:left) { attribute.match(/Dan Kubb/) }
|
191
191
|
let(:right) { attribute.no_match(/Dan Kubb/) }
|
192
192
|
|
193
|
-
it { should
|
193
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
194
194
|
|
195
195
|
it_should_behave_like 'an optimize method'
|
196
196
|
end
|
@@ -200,7 +200,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
200
200
|
let(:left) { attribute.no_match(/Dan Kubb/) }
|
201
201
|
let(:right) { attribute.match(/Dan Kubb/) }
|
202
202
|
|
203
|
-
it { should
|
203
|
+
it { should be(Function::Proposition::Contradiction.instance) }
|
204
204
|
|
205
205
|
it_should_behave_like 'an optimize method'
|
206
206
|
end
|
@@ -219,7 +219,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
219
219
|
let(:left) { attribute.eq(other) }
|
220
220
|
let(:right) { attribute.eq(1) }
|
221
221
|
|
222
|
-
it { should
|
222
|
+
it { should be(object) }
|
223
223
|
|
224
224
|
it_should_behave_like 'an optimize method'
|
225
225
|
end
|
@@ -229,7 +229,7 @@ describe Function::Connective::Conjunction, '#optimize' do
|
|
229
229
|
let(:left) { attribute.eq(1) }
|
230
230
|
let(:right) { attribute.eq(other) }
|
231
231
|
|
232
|
-
it { should
|
232
|
+
it { should be(object) }
|
233
233
|
|
234
234
|
it_should_behave_like 'an optimize method'
|
235
235
|
end
|
@@ -14,7 +14,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
14
14
|
let(:left) { attribute.gt(1) }
|
15
15
|
let(:right) { attribute.lt(3) }
|
16
16
|
|
17
|
-
it { should
|
17
|
+
it { should be(object) }
|
18
18
|
|
19
19
|
it_should_behave_like 'an optimize method'
|
20
20
|
end
|
@@ -23,7 +23,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
23
23
|
let(:left) { Function::Connective::Negation.new(attribute.gt(1)) }
|
24
24
|
let(:right) { Function::Connective::Negation.new(attribute.lt(3)) }
|
25
25
|
|
26
|
-
it { should_not
|
26
|
+
it { should_not be(object) }
|
27
27
|
|
28
28
|
it 'reverses the operands' do
|
29
29
|
should eql(Function::Connective::Disjunction.new(attribute.lte(1), attribute.gte(3)))
|
@@ -36,7 +36,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
36
36
|
let(:left) { attribute.gt(1) }
|
37
37
|
let(:right) { attribute.gt(1) }
|
38
38
|
|
39
|
-
it { should
|
39
|
+
it { should be(left) }
|
40
40
|
|
41
41
|
it_should_behave_like 'an optimize method'
|
42
42
|
end
|
@@ -45,7 +45,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
45
45
|
let(:left) { Function::Proposition::Tautology.instance }
|
46
46
|
let(:right) { Function::Proposition::Tautology.instance }
|
47
47
|
|
48
|
-
it { should
|
48
|
+
it { should be(left) }
|
49
49
|
|
50
50
|
it_should_behave_like 'an optimize method'
|
51
51
|
end
|
@@ -54,8 +54,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
54
54
|
let(:left) { Function::Proposition::Contradiction.instance }
|
55
55
|
let(:right) { Function::Proposition::Contradiction.instance }
|
56
56
|
|
57
|
-
|
58
|
-
it { should equal(left) }
|
57
|
+
it { should be(left) }
|
59
58
|
|
60
59
|
it_should_behave_like 'an optimize method'
|
61
60
|
end
|
@@ -64,7 +63,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
64
63
|
let(:left) { attribute.gt(1) }
|
65
64
|
let(:right) { Function::Proposition::Tautology.instance }
|
66
65
|
|
67
|
-
it { should
|
66
|
+
it { should be(right) }
|
68
67
|
|
69
68
|
it_should_behave_like 'an optimize method'
|
70
69
|
end
|
@@ -73,7 +72,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
73
72
|
let(:left) { Function::Proposition::Tautology.instance }
|
74
73
|
let(:right) { attribute.lt(3) }
|
75
74
|
|
76
|
-
it { should
|
75
|
+
it { should be(left) }
|
77
76
|
|
78
77
|
it_should_behave_like 'an optimize method'
|
79
78
|
end
|
@@ -82,7 +81,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
82
81
|
let(:left) { attribute.gt(1) }
|
83
82
|
let(:right) { Function::Proposition::Contradiction.instance }
|
84
83
|
|
85
|
-
it { should
|
84
|
+
it { should be(left) }
|
86
85
|
|
87
86
|
it_should_behave_like 'an optimize method'
|
88
87
|
end
|
@@ -91,7 +90,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
91
90
|
let(:left) { Function::Proposition::Contradiction.instance }
|
92
91
|
let(:right) { attribute.lt(3) }
|
93
92
|
|
94
|
-
it { should
|
93
|
+
it { should be(right) }
|
95
94
|
|
96
95
|
it_should_behave_like 'an optimize method'
|
97
96
|
end
|
@@ -100,7 +99,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
100
99
|
let(:left) { attribute.eq(1) }
|
101
100
|
let(:right) { attribute.eq(3) }
|
102
101
|
|
103
|
-
it { should eql(attribute.include([
|
102
|
+
it { should eql(attribute.include([1, 3])) }
|
104
103
|
|
105
104
|
it_should_behave_like 'an optimize method'
|
106
105
|
end
|
@@ -109,7 +108,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
109
108
|
let(:left) { attribute.ne(1) }
|
110
109
|
let(:right) { attribute.ne(3) }
|
111
110
|
|
112
|
-
it { should
|
111
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
113
112
|
|
114
113
|
it_should_behave_like 'an optimize method'
|
115
114
|
end
|
@@ -118,7 +117,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
118
117
|
let(:left) { attribute.eq(1) }
|
119
118
|
let(:right) { attribute.ne(1) }
|
120
119
|
|
121
|
-
it { should
|
120
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
122
121
|
|
123
122
|
it_should_behave_like 'an optimize method'
|
124
123
|
end
|
@@ -127,25 +126,25 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
127
126
|
let(:left) { attribute.ne(1) }
|
128
127
|
let(:right) { attribute.eq(1) }
|
129
128
|
|
130
|
-
it { should
|
129
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
131
130
|
|
132
131
|
it_should_behave_like 'an optimize method'
|
133
132
|
end
|
134
133
|
|
135
134
|
context 'left is an Inclusion and right is an Exclusion predicate for the same attribute and value' do
|
136
|
-
let(:left) { attribute.include([
|
137
|
-
let(:right) { attribute.exclude([
|
135
|
+
let(:left) { attribute.include([1, 2]) }
|
136
|
+
let(:right) { attribute.exclude([1, 2]) }
|
138
137
|
|
139
|
-
it { should
|
138
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
140
139
|
|
141
140
|
it_should_behave_like 'an optimize method'
|
142
141
|
end
|
143
142
|
|
144
143
|
context 'left is an Exclusion and right is an Inclusion predicate for the same attribute and value' do
|
145
|
-
let(:left) { attribute.exclude([
|
146
|
-
let(:right) { attribute.include([
|
144
|
+
let(:left) { attribute.exclude([1, 2]) }
|
145
|
+
let(:right) { attribute.include([1, 2]) }
|
147
146
|
|
148
|
-
it { should
|
147
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
149
148
|
|
150
149
|
it_should_behave_like 'an optimize method'
|
151
150
|
end
|
@@ -154,7 +153,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
154
153
|
let(:left) { attribute.gt(1) }
|
155
154
|
let(:right) { attribute.lte(1) }
|
156
155
|
|
157
|
-
it { should
|
156
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
158
157
|
|
159
158
|
it_should_behave_like 'an optimize method'
|
160
159
|
end
|
@@ -163,7 +162,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
163
162
|
let(:left) { attribute.lte(1) }
|
164
163
|
let(:right) { attribute.gt(1) }
|
165
164
|
|
166
|
-
it { should
|
165
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
167
166
|
|
168
167
|
it_should_behave_like 'an optimize method'
|
169
168
|
end
|
@@ -172,7 +171,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
172
171
|
let(:left) { attribute.gte(1) }
|
173
172
|
let(:right) { attribute.lt(1) }
|
174
173
|
|
175
|
-
it { should
|
174
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
176
175
|
|
177
176
|
it_should_behave_like 'an optimize method'
|
178
177
|
end
|
@@ -181,7 +180,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
181
180
|
let(:left) { attribute.lt(1) }
|
182
181
|
let(:right) { attribute.gte(1) }
|
183
182
|
|
184
|
-
it { should
|
183
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
185
184
|
|
186
185
|
it_should_behave_like 'an optimize method'
|
187
186
|
end
|
@@ -191,7 +190,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
191
190
|
let(:left) { attribute.match(/Dan Kubb/) }
|
192
191
|
let(:right) { attribute.no_match(/Dan Kubb/) }
|
193
192
|
|
194
|
-
it { should
|
193
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
195
194
|
|
196
195
|
it_should_behave_like 'an optimize method'
|
197
196
|
end
|
@@ -201,7 +200,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
201
200
|
let(:left) { attribute.no_match(/Dan Kubb/) }
|
202
201
|
let(:right) { attribute.match(/Dan Kubb/) }
|
203
202
|
|
204
|
-
it { should
|
203
|
+
it { should be(Function::Proposition::Tautology.instance) }
|
205
204
|
|
206
205
|
it_should_behave_like 'an optimize method'
|
207
206
|
end
|
@@ -220,7 +219,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
220
219
|
let(:left) { attribute.eq(other) }
|
221
220
|
let(:right) { attribute.eq(1) }
|
222
221
|
|
223
|
-
it { should
|
222
|
+
it { should be(object) }
|
224
223
|
|
225
224
|
it_should_behave_like 'an optimize method'
|
226
225
|
end
|
@@ -230,7 +229,7 @@ describe Function::Connective::Disjunction, '#optimize' do
|
|
230
229
|
let(:left) { attribute.eq(1) }
|
231
230
|
let(:right) { attribute.eq(other) }
|
232
231
|
|
233
|
-
it { should
|
232
|
+
it { should be(object) }
|
234
233
|
|
235
234
|
it_should_behave_like 'an optimize method'
|
236
235
|
end
|