veritas 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/.travis.yml +10 -4
  2. data/Gemfile +1 -1
  3. data/TODO +10 -0
  4. data/config/flay.yml +1 -1
  5. data/config/flog.yml +1 -1
  6. data/config/roodi.yml +2 -2
  7. data/config/site.reek +2 -1
  8. data/lib/veritas.rb +2 -2
  9. data/lib/veritas/algebra/join.rb +13 -91
  10. data/lib/veritas/algebra/product.rb +4 -1
  11. data/lib/veritas/attribute.rb +1 -1
  12. data/lib/veritas/function/connective/negation.rb +13 -1
  13. data/lib/veritas/function/numeric/absolute.rb +5 -19
  14. data/lib/veritas/function/numeric/unary.rb +3 -0
  15. data/lib/veritas/function/numeric/unary_minus.rb +5 -19
  16. data/lib/veritas/function/numeric/unary_plus.rb +5 -21
  17. data/lib/veritas/function/proposition.rb +3 -28
  18. data/lib/veritas/function/string/length.rb +0 -1
  19. data/lib/veritas/function/unary.rb +47 -0
  20. data/lib/veritas/relation.rb +16 -2
  21. data/lib/veritas/relation/header.rb +48 -41
  22. data/lib/veritas/relation/operation/order/direction.rb +13 -1
  23. data/lib/veritas/relation/operation/order/direction_set.rb +9 -198
  24. data/lib/veritas/relation/operation/reverse.rb +0 -2
  25. data/lib/veritas/support/comparator.rb +1 -1
  26. data/lib/veritas/support/evaluator.rb +3 -0
  27. data/lib/veritas/support/immutable.rb +33 -8
  28. data/lib/veritas/tuple.rb +8 -6
  29. data/lib/veritas/version.rb +1 -1
  30. data/spec/integration/veritas/algebra/projection_spec.rb +1 -1
  31. data/spec/integration/veritas/relation/efficient_enumerable_spec.rb +40 -15
  32. data/spec/rcov.opts +1 -0
  33. data/spec/shared/hash_method_behavior.rb +10 -5
  34. data/spec/spec_helper.rb +1 -1
  35. data/spec/unit/veritas/algebra/extension/class_methods/new_spec.rb +1 -1
  36. data/spec/unit/veritas/algebra/join/class_methods/new_spec.rb +1 -1
  37. data/spec/unit/veritas/algebra/join/each_spec.rb +36 -9
  38. data/spec/unit/veritas/aliasable/inheritable_alias_spec.rb +1 -1
  39. data/spec/unit/veritas/comparator/compare_spec.rb +4 -1
  40. data/spec/unit/veritas/evaluator/context/method_missing_spec.rb +7 -1
  41. data/spec/unit/veritas/function/connective/negation/class_methods/operation_spec.rb +11 -0
  42. data/spec/unit/veritas/function/numeric/absolute/class_methods/operation_spec.rb +11 -0
  43. data/spec/unit/veritas/function/numeric/unary_minus/class_methods/operation_spec.rb +11 -0
  44. data/spec/unit/veritas/function/numeric/unary_plus/class_methods/operation_spec.rb +11 -0
  45. data/spec/unit/veritas/function/unary/callable/call_spec.rb +23 -0
  46. data/spec/unit/veritas/function/unary/callable/included_spec.rb +23 -0
  47. data/spec/unit/veritas/function/unary/inspect_spec.rb +34 -0
  48. data/spec/unit/veritas/immutable/fixtures/classes.rb +3 -3
  49. data/spec/unit/veritas/immutable/module_methods/memoize_spec.rb +20 -10
  50. data/spec/unit/veritas/relation/class_methods/coerce_spec.rb +23 -0
  51. data/spec/unit/veritas/relation/each_spec.rb +1 -1
  52. data/spec/unit/veritas/relation/equal_value_spec.rb +12 -0
  53. data/spec/unit/veritas/relation/header/call_spec.rb +23 -0
  54. data/spec/unit/veritas/relation/header/class_methods/coerce_spec.rb +1 -1
  55. data/spec/unit/veritas/relation/header/class_methods/new_spec.rb +2 -2
  56. data/spec/unit/veritas/relation/header/each_spec.rb +1 -1
  57. data/spec/unit/veritas/relation/header/empty_spec.rb +5 -4
  58. data/spec/unit/veritas/relation/header/intersect_spec.rb +18 -4
  59. data/spec/unit/veritas/relation/operation/binary/class_methods/new_spec.rb +25 -25
  60. data/spec/unit/veritas/relation/operation/order/direction/name_spec.rb +13 -0
  61. data/spec/unit/veritas/relation/operation/order/direction_set/class_methods/new_spec.rb +1 -1
  62. data/spec/unit/veritas/relation/operation/order/direction_set/equal_value_spec.rb +13 -0
  63. data/spec/unit/veritas/tuple/call_spec.rb +25 -0
  64. data/spec/unit/veritas/tuple/class_methods/coerce_spec.rb +1 -1
  65. data/tasks/metrics/ci.rake +2 -2
  66. data/tasks/metrics/flay.rake +1 -1
  67. data/tasks/metrics/flog.rake +5 -3
  68. data/tasks/metrics/heckle.rake +18 -11
  69. data/tasks/metrics/reek.rake +1 -1
  70. data/tasks/spec.rake +23 -14
  71. data/veritas.gemspec +14 -8
  72. metadata +31 -25
  73. data/spec/unit/veritas/relation/header/element_reference_spec.rb +0 -21
  74. data/spec/unit/veritas/relation/operation/order/direction_set/each_spec.rb +0 -32
  75. data/spec/unit/veritas/relation/operation/order/direction_set/empty_spec.rb +0 -21
  76. data/spec/unit/veritas/relation/operation/order/direction_set/union_spec.rb +0 -18
  77. data/spec/unit/veritas/tuple/element_reference_spec.rb +0 -22
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Relation::Header, '#[]' do
6
- subject { object[name] }
7
-
8
- let(:object) { described_class.new([ [ :id, Integer ] ]) }
9
-
10
- context 'with a known attribute name' do
11
- let(:name) { :id }
12
-
13
- it { should == [ :id, Integer ] }
14
- end
15
-
16
- context 'with an unknown attribute name' do
17
- let(:name) { :name }
18
-
19
- it { should be_nil }
20
- end
21
- end
@@ -1,32 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Relation::Operation::Order::DirectionSet, '#each' do
6
- subject { object.each { |direction| yields << direction } }
7
-
8
- let(:attributes) { [ Attribute::Integer.new(:id), Attribute::String.new(:name) ] }
9
- let(:object) { described_class.new(attributes) }
10
- let(:yields) { [] }
11
-
12
- it_should_behave_like 'an #each method'
13
-
14
- it 'yields each direction' do
15
- expect { subject }.to change { yields.dup }.
16
- from([]).
17
- to(attributes.map { |attribute| attribute.asc })
18
- end
19
- end
20
-
21
- describe Relation::Operation::Order::DirectionSet do
22
- subject { object.new(attributes) }
23
-
24
- let(:attributes) { [ Attribute::Integer.new(:id) ] }
25
- let(:object) { Relation::Operation::Order::DirectionSet }
26
-
27
- it { should be_kind_of(Enumerable) }
28
-
29
- it 'case matches Enumerable' do
30
- (Enumerable === subject).should be(true)
31
- end
32
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Relation::Operation::Order::DirectionSet, '#empty?' do
6
- subject { object.empty? }
7
-
8
- let(:object) { described_class.new(attributes) }
9
-
10
- context 'with an empty set' do
11
- let(:attributes) { [] }
12
-
13
- it { should be(true) }
14
- end
15
-
16
- context 'with directions' do
17
- let(:attributes) { [ Attribute::Integer.new(:id) ] }
18
-
19
- it { should be(false) }
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- [ :union, :| ].each do |method|
6
- describe Relation::Operation::Order::DirectionSet, "##{method}" do
7
- subject { object.send(method, other) }
8
-
9
- let(:attribute1) { Attribute::Integer.new(:id) }
10
- let(:attribute2) { Attribute::String.new(:name) }
11
- let(:object) { described_class.new([ attribute1 ]) }
12
- let(:other) { described_class.new([ attribute2 ]) }
13
-
14
- it { should be_instance_of(described_class) }
15
-
16
- it { should == [ attribute1.asc, attribute2.asc ] }
17
- end
18
- end
@@ -1,22 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tuple, '#[]' do
6
- subject { object[attribute] }
7
-
8
- let(:header) { Relation::Header.new([ [ :id, Integer ] ]) }
9
- let(:object) { described_class.new(header, [ 1 ]) }
10
-
11
- context 'with a known attribute' do
12
- let(:attribute) { header[:id] }
13
-
14
- it { should == 1 }
15
- end
16
-
17
- context 'with an unknown attribute' do
18
- let(:attribute) { Attribute::Integer.new(:other_id) }
19
-
20
- specify { expect { subject }.to raise_error(IndexError) }
21
- end
22
- end