veritas 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/.travis.yml +5 -4
  2. data/Gemfile +16 -14
  3. data/Guardfile +0 -4
  4. data/README.md +188 -0
  5. data/Rakefile +2 -2
  6. data/TODO +0 -16
  7. data/config/flay.yml +1 -1
  8. data/config/flog.yml +1 -1
  9. data/config/roodi.yml +4 -4
  10. data/config/site.reek +7 -3
  11. data/lib/veritas/aggregate.rb +18 -0
  12. data/lib/veritas/algebra/extension.rb +2 -29
  13. data/lib/veritas/algebra/projection.rb +2 -29
  14. data/lib/veritas/algebra/rename/aliases.rb +4 -32
  15. data/lib/veritas/algebra/rename.rb +2 -29
  16. data/lib/veritas/algebra/restriction.rb +2 -29
  17. data/lib/veritas/algebra/summarization.rb +2 -31
  18. data/lib/veritas/attribute/time.rb +1 -1
  19. data/lib/veritas/attribute.rb +20 -40
  20. data/lib/veritas/function/binary.rb +2 -3
  21. data/lib/veritas/function/connective/negation.rb +1 -1
  22. data/lib/veritas/function/predicate/enumerable.rb +19 -0
  23. data/lib/veritas/function/predicate/exclusion.rb +1 -1
  24. data/lib/veritas/function/predicate/match.rb +1 -1
  25. data/lib/veritas/function/unary.rb +5 -3
  26. data/lib/veritas/function.rb +1 -41
  27. data/lib/veritas/relation/base.rb +2 -29
  28. data/lib/veritas/relation/empty.rb +30 -2
  29. data/lib/veritas/relation/header.rb +17 -31
  30. data/lib/veritas/relation/materialized.rb +0 -12
  31. data/lib/veritas/relation/operation/limit.rb +2 -29
  32. data/lib/veritas/relation/operation/offset.rb +2 -29
  33. data/lib/veritas/relation/operation/order/direction.rb +3 -29
  34. data/lib/veritas/relation/operation/order/direction_set.rb +18 -34
  35. data/lib/veritas/relation/operation/order.rb +4 -56
  36. data/lib/veritas/relation.rb +8 -36
  37. data/lib/veritas/support/aliasable.rb +20 -7
  38. data/lib/veritas/support/comparator.rb +81 -0
  39. data/lib/veritas/support/evaluator.rb +1 -1
  40. data/lib/veritas/support/immutable.rb +22 -49
  41. data/lib/veritas/support/operation/binary.rb +3 -30
  42. data/lib/veritas/support/operation/unary.rb +3 -29
  43. data/lib/veritas/tuple.rb +19 -29
  44. data/lib/veritas/version.rb +1 -1
  45. data/lib/veritas.rb +1 -0
  46. data/spec/integration/veritas/relation/efficient_enumerable_spec.rb +3 -3
  47. data/spec/shared/hash_method_behavior.rb +7 -2
  48. data/spec/unit/date/pred_spec.rb +1 -1
  49. data/spec/unit/veritas/aggregate/equal_value_spec.rb +52 -0
  50. data/spec/unit/veritas/aggregate/hash_spec.rb +15 -0
  51. data/spec/unit/veritas/aliasable/inheritable_alias_spec.rb +1 -1
  52. data/spec/unit/veritas/comparator/compare_spec.rb +40 -0
  53. data/spec/unit/veritas/comparator/methods/eql_spec.rb +48 -0
  54. data/spec/unit/veritas/evaluator/context/respond_to_spec.rb +1 -1
  55. data/spec/unit/veritas/function/predicate/enumerable/call_spec.rb +36 -0
  56. data/spec/unit/veritas/function/unary/hash_spec.rb +18 -0
  57. data/spec/unit/veritas/immutable/freeze_spec.rb +2 -2
  58. data/spec/unit/veritas/immutable/memoize_spec.rb +13 -0
  59. data/spec/unit/veritas/immutable/module_methods/memoize_spec.rb +1 -1
  60. data/spec/unit/veritas/relation/empty/class_methods/new_spec.rb +30 -0
  61. data/spec/unit/veritas/relation/empty/each_spec.rb +20 -5
  62. data/spec/unit/veritas/relation/empty/size_spec.rb +11 -0
  63. data/spec/unit/veritas/relation/header/hash_spec.rb +1 -1
  64. data/spec/unit/veritas/relation/materialized/empty_spec.rb +0 -10
  65. data/spec/unit/veritas/relation/operation/order/direction_set/class_methods/coerce_spec.rb +12 -3
  66. data/tasks/metrics/heckle.rake +2 -3
  67. data/veritas.gemspec +21 -18
  68. metadata +36 -33
  69. data/README.rdoc +0 -143
  70. data/spec/unit/veritas/function/eql_spec.rb +0 -14
  71. data/spec/unit/veritas/function/equal_value_spec.rb +0 -14
  72. data/spec/unit/veritas/function/hash_spec.rb +0 -13
  73. data/spec/unit/veritas/immutable/memory/element_reference_spec.rb +0 -26
  74. data/spec/unit/veritas/immutable/memory/element_set_spec.rb +0 -19
  75. data/spec/unit/veritas/relation/operation/order/methods/order_spec.rb +0 -54
data/lib/veritas.rb CHANGED
@@ -11,6 +11,7 @@ require 'veritas/core_ext/time'
11
11
 
12
12
  require 'veritas/support/abstract_class'
13
13
  require 'veritas/support/aliasable'
14
+ require 'veritas/support/comparator'
14
15
  require 'veritas/support/immutable'
15
16
  require 'veritas/support/visitable'
16
17
 
@@ -7,11 +7,11 @@ require 'spec_helper'
7
7
  class InfiniteList
8
8
  include Enumerable
9
9
 
10
- Infinity = 1.0/0.0
11
-
12
10
  def each
13
- 0.upto(Infinity) do |index|
11
+ index = 0
12
+ loop do
14
13
  yield [ index ]
14
+ index += 1
15
15
  end
16
16
  self
17
17
  end
@@ -3,9 +3,14 @@
3
3
  shared_examples_for 'a hash method' do
4
4
  it_should_behave_like 'an idempotent method'
5
5
 
6
- it { should be_instance_of(Fixnum) }
6
+ # TOOD: figure out if #hash under rbx should also always use Fixnum
7
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
8
+ it { should be_kind_of(Integer) }
9
+ else
10
+ it { should be_instance_of(Fixnum) }
11
+ end
7
12
 
8
13
  it 'memoizes the hash code' do
9
- subject.should eql(object.memoized('hash'))
14
+ subject.should eql(object.memoized(:hash))
10
15
  end
11
16
  end
@@ -14,6 +14,6 @@ describe Date, '#pred' do
14
14
  end
15
15
 
16
16
  it 'is the inverse of #succ' do
17
- subject.succ.should eql(object)
17
+ (subject + 1).should eql(object)
18
18
  end
19
19
  end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Aggregate, '#==' do
6
+ subject { object == other }
7
+
8
+ let(:described_class) { Class.new(Aggregate) }
9
+ let(:object) { described_class.new(attribute) }
10
+ let(:attribute) { Attribute::Integer.new(:id) }
11
+
12
+ context 'with the same object' do
13
+ let(:other) { object }
14
+
15
+ it { should be(true) }
16
+
17
+ it 'is symmetric' do
18
+ should eql(other == object)
19
+ end
20
+ end
21
+
22
+ context 'with an equivalent object' do
23
+ let(:other) { object.dup }
24
+
25
+ it { should be(true) }
26
+
27
+ it 'is symmetric' do
28
+ should eql(other == object)
29
+ end
30
+ end
31
+
32
+ context 'with an equivalent object of a subclass' do
33
+ let(:other) { Class.new(described_class).new(attribute) }
34
+
35
+ it { should be(true) }
36
+
37
+ it 'is symmetric' do
38
+ should eql(other == object)
39
+ end
40
+ end
41
+
42
+ context 'with an object having a different attribute' do
43
+ let(:other_attribute) { Attribute::Integer.new(:other_id) }
44
+ let(:other) { described_class.new(other_attribute) }
45
+
46
+ it { should be(false) }
47
+
48
+ it 'is symmetric' do
49
+ should eql(other.eql?(object))
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Aggregate, '#hash' do
6
+ subject { object.hash }
7
+
8
+ let(:described_class) { Class.new(Aggregate) }
9
+ let(:object) { described_class.new(attribute) }
10
+ let(:attribute) { Attribute::Integer.new(:id) }
11
+
12
+ it_should_behave_like 'a hash method'
13
+
14
+ it { should == described_class.hash ^ attribute.hash }
15
+ end
@@ -37,7 +37,7 @@ describe Aliasable, '#inheritable_alias' do
37
37
  file, line = aliasable.other.first.split(':')[0, 2]
38
38
 
39
39
  File.expand_path(file).should eql(File.expand_path('../../../../../lib/veritas/support/aliasable.rb', __FILE__))
40
- line.to_i.should eql(23)
40
+ line.to_i.should eql(38)
41
41
  end
42
42
 
43
43
  it 'sets the file and line number properly' do
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Comparator, '#compare' do
6
+ subject { object.compare(*methods) }
7
+
8
+ let(:methods) { [ :nil?, :to_s ] }
9
+ let(:object) { Class.new { extend Comparator } }
10
+ let(:instance) { object.new }
11
+
12
+ before do
13
+ object.instance_eval { include Immutable }
14
+ end
15
+
16
+ it { should equal(object) }
17
+
18
+ it 'includes Comparator::Methods' do
19
+ expect { subject }.to change { object.include?(Comparator::Methods) }.from(false).to(true)
20
+ end
21
+
22
+ it 'defines a #hash public instance method' do
23
+ expect { subject }.to change { object.public_instance_methods(false).map(&:to_s) }.from([]).to([ 'hash' ])
24
+ end
25
+
26
+ it 'defines a #hash method that uses the class and declared methods' do
27
+ subject
28
+ instance.hash.should equal(object.hash ^ false.hash ^ instance.to_s.hash)
29
+ end
30
+
31
+ it 'memoizes #hash' do
32
+ subject
33
+ instance.hash
34
+ instance.memoized(:hash).should_not be_nil
35
+ end
36
+
37
+ it 'defines a #cmp? private instance method' do
38
+ expect { subject }.to change { object.private_instance_methods(false).map(&:to_s) }.from([]).to([ 'cmp?' ])
39
+ end
40
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Comparator::Methods, '#eql?' do
6
+ subject { object.eql?(other) }
7
+
8
+ let(:described_class) { Class.new { include Comparator::Methods } }
9
+ let(:object) { described_class.new }
10
+
11
+ before do
12
+ described_class.class_eval do
13
+ extend Comparator
14
+ include Immutable
15
+ compare :nil?
16
+ end
17
+ end
18
+
19
+ context 'with the same object' do
20
+ let(:other) { object }
21
+
22
+ it { should be(true) }
23
+
24
+ it 'is symmetric' do
25
+ should eql(other.eql?(object))
26
+ end
27
+ end
28
+
29
+ context 'with an equivalent object' do
30
+ let(:other) { object.dup }
31
+
32
+ it { should be(true) }
33
+
34
+ it 'is symmetric' do
35
+ should eql(other.eql?(object))
36
+ end
37
+ end
38
+
39
+ context 'with an equivalent object of a subclass' do
40
+ let(:other) { Class.new(described_class).new }
41
+
42
+ it { should be(false) }
43
+
44
+ it 'is symmetric' do
45
+ should eql(other.eql?(object))
46
+ end
47
+ end
48
+ end
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Evaluator::Context, '#respond_to?' do
6
- subject { object.respond_to?(method) }
6
+ subject { object.respond_to?(method, include_private) }
7
7
 
8
8
  let(:attribute) { Attribute::Integer.new(:id) }
9
9
  let(:header) { Relation::Header.new([ attribute ]) }
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Function::Predicate::Enumerable, '#call' do
6
+ subject { object.call(tuple) }
7
+
8
+ let(:described_class) { Class.new(Function) { include Function::Binary } }
9
+ let(:header) { Relation::Header.new([ [ :id, Integer ] ]) }
10
+ let(:tuple) { Tuple.new(header, [ 1 ]) }
11
+
12
+ before do
13
+ described_class.class_eval { include Function::Predicate::Enumerable }
14
+ end
15
+
16
+ context 'with an enumerable of non-callable objects' do
17
+ let(:object) { described_class.new(header[:id], [ 1 ]) }
18
+
19
+ it 'sends the left and right value to self.class.call' do
20
+ response = mock('#call response')
21
+ described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
22
+ should equal(response)
23
+ end
24
+ end
25
+
26
+ context 'with an enumerable of callable objects' do
27
+ let(:callable) { proc { 1 } }
28
+ let(:object) { described_class.new(header[:id], [ callable ]) }
29
+
30
+ it 'sends the left and right value to self.class.call' do
31
+ response = mock('#call response')
32
+ described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
33
+ should equal(response)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require File.expand_path('../fixtures/classes', __FILE__)
5
+
6
+ describe Function::Unary, '#hash' do
7
+ subject { object.hash }
8
+
9
+ let(:described_class) { UnarySpecs::Object }
10
+ let(:attribute) { Attribute::Integer.new(:id) }
11
+ let(:header) { Relation::Header.new([ attribute ]) }
12
+ let(:operand) { attribute.eq(1) }
13
+ let(:object) { described_class.new(operand) }
14
+
15
+ it_should_behave_like 'a hash method'
16
+
17
+ it { should == described_class.hash ^ operand.hash }
18
+ end
@@ -26,7 +26,7 @@ describe Immutable, '#freeze' do
26
26
  it 'sets a memoization instance variable' do
27
27
  object.should_not be_instance_variable_defined(:@__memory)
28
28
  subject
29
- object.instance_variable_get(:@__memory).should be_instance_of(Immutable::Memory)
29
+ object.instance_variable_get(:@__memory).should be_instance_of(Hash)
30
30
  end
31
31
  end
32
32
 
@@ -44,7 +44,7 @@ describe Immutable, '#freeze' do
44
44
  end
45
45
 
46
46
  it 'sets an instance variable for memoization' do
47
- subject.instance_variable_get(:@__memory).should be_instance_of(Immutable::Memory)
47
+ subject.instance_variable_get(:@__memory).should be_instance_of(Hash)
48
48
  end
49
49
  end
50
50
  end
@@ -41,4 +41,17 @@ describe Immutable, '#memoize' do
41
41
  object.send(method).should be_frozen
42
42
  end
43
43
  end
44
+
45
+ context 'when the method is already memoized' do
46
+ let(:value) { stub }
47
+ let(:original) { nil }
48
+
49
+ before do
50
+ object.memoize(method, original)
51
+ end
52
+
53
+ it 'does not change the value' do
54
+ expect { subject }.to_not change { object.send(method) }
55
+ end
56
+ end
44
57
  end
@@ -26,7 +26,7 @@ shared_examples_for 'memoizes method' do
26
26
  file, line = object.new.send(method).first.split(':')[0, 2]
27
27
 
28
28
  File.expand_path(file).should eql(File.expand_path('../../../../../../lib/veritas/support/immutable.rb', __FILE__))
29
- line.to_i.should eql(180)
29
+ line.to_i.should eql(185)
30
30
  end
31
31
 
32
32
  it 'sets the file and line number properly' do
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Relation::Empty, '.new' do
6
+ let(:object) { described_class }
7
+ let(:header) { [ [ :id, Integer ] ] }
8
+
9
+ context 'with a header' do
10
+ subject { object.new(header) }
11
+
12
+ it { should be_instance_of(object) }
13
+
14
+ its(:header){ should == header }
15
+
16
+ its(:tuples) { should == [] }
17
+ end
18
+
19
+ context 'with a header and tuples' do
20
+ subject { object.new(header, tuples) }
21
+
22
+ let(:tuples) { mock('Tuples') }
23
+
24
+ it { should be_instance_of(object) }
25
+
26
+ its(:header){ should == header }
27
+
28
+ its(:tuples) { should equal(tuples) }
29
+ end
30
+ end
@@ -5,12 +5,27 @@ require 'spec_helper'
5
5
  describe Relation::Empty, '#each' do
6
6
  subject { object.each { |tuple| yields << tuple } }
7
7
 
8
- let(:object) { described_class.new([ [ :id, Integer ] ]) }
9
- let(:yields) { [] }
8
+ let(:header) { [ [ :id, Integer ] ] }
9
+ let(:yields) { [] }
10
10
 
11
- it_should_behave_like 'an #each method'
11
+ context 'with an empty relation having no tuples' do
12
+ let(:object) { described_class.new(header) }
12
13
 
13
- it 'yields no tuples' do
14
- expect { subject }.to_not change { yields.dup }
14
+ it_should_behave_like 'an #each method'
15
+
16
+ it 'yields no tuples' do
17
+ expect { subject }.to_not change { yields.dup }
18
+ end
19
+ end
20
+
21
+ context 'with an empty relation having tuples' do
22
+ let(:tuples) { mock('Tuples') }
23
+ let(:object) { described_class.new(header, tuples) }
24
+
25
+ it_should_behave_like 'an #each method'
26
+
27
+ it 'yields no tuples' do
28
+ expect { subject }.to_not change { yields.dup }
29
+ end
15
30
  end
16
31
  end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Relation::Empty, '#size' do
6
+ subject { object.size }
7
+
8
+ let(:object) { described_class.new([ [ :id, Integer ] ]) }
9
+
10
+ it { should eql(0) }
11
+ end
@@ -10,5 +10,5 @@ describe Relation::Header, '#hash' do
10
10
 
11
11
  it_should_behave_like 'a hash method'
12
12
 
13
- it { should == described_class.hash ^ { :id => attribute }.hash }
13
+ it { should == described_class.hash ^ Set[attribute].hash }
14
14
  end
@@ -12,21 +12,11 @@ describe Relation::Materialized, '#empty?' do
12
12
  let(:body) { [] }
13
13
 
14
14
  it { should be(true) }
15
-
16
- it 'does not execute body#each' do
17
- body.should_not_receive(:each)
18
- subject
19
- end
20
15
  end
21
16
 
22
17
  context 'with a body containing an entry' do
23
18
  let(:body) { [ [ 1 ] ] }
24
19
 
25
20
  it { should be(false) }
26
-
27
- it 'does not execute body#each' do
28
- body.should_not_receive(:each)
29
- subject
30
- end
31
21
  end
32
22
  end
@@ -5,9 +5,10 @@ require 'spec_helper'
5
5
  describe Relation::Operation::Order::DirectionSet, '.coerce' do
6
6
  subject { object.coerce(argument) }
7
7
 
8
- let(:directions) { [ Attribute::Integer.new(:id) ] }
9
- let(:object) { described_class }
10
- let(:direction_set) { object.new(directions) }
8
+ let(:direction) { Attribute::Integer.new(:id).desc }
9
+ let(:directions) { [ direction ] }
10
+ let(:object) { described_class }
11
+ let(:direction_set) { object.new(directions) }
11
12
 
12
13
  context 'when the argument is a DirectionSet' do
13
14
  let(:argument) { direction_set }
@@ -15,6 +16,14 @@ describe Relation::Operation::Order::DirectionSet, '.coerce' do
15
16
  it { should equal(argument) }
16
17
  end
17
18
 
19
+ context 'when the argument is a Direction' do
20
+ let(:argument) { direction }
21
+
22
+ it { should be_instance_of(object) }
23
+
24
+ it { should == direction_set }
25
+ end
26
+
18
27
  context 'when the argument responds to #to_ary' do
19
28
  let(:argument) { directions }
20
29
 
@@ -194,7 +194,7 @@ begin
194
194
  ObjectSpace.each_object(Module) do |descedant|
195
195
  next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
196
196
  descedant_spec_prefix = spec_dir.join(descedant.name.underscore)
197
- descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('*_spec.rb')))
197
+ descedant_specs << descedant_spec_prefix
198
198
 
199
199
  if method.to_s == 'initialize'
200
200
  descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/new_spec.rb')))
@@ -209,8 +209,7 @@ begin
209
209
 
210
210
  ObjectSpace.each_object(Module) do |descedant|
211
211
  next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
212
- descedant_spec_prefix = spec_dir.join(descedant.name.underscore)
213
- descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/*_spec.rb')))
212
+ descedant_specs << spec_dir.join(descedant.name.underscore).join('class_methods')
214
213
  end
215
214
 
216
215
  specs << [ ".#{method}", descedant_specs ]
data/veritas.gemspec CHANGED
@@ -4,17 +4,17 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{veritas}
8
- s.version = "0.0.5"
7
+ s.name = "veritas"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Dan Kubb}]
12
- s.date = %q{2011-07-29}
13
- s.description = %q{Simplifies querying of structured data using relational algebra}
14
- s.email = %q{dan.kubb@gmail.com}
11
+ s.authors = ["Dan Kubb"]
12
+ s.date = "2011-10-04"
13
+ s.description = "Simplifies querying of structured data using relational algebra"
14
+ s.email = "dan.kubb@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc",
17
+ "README.md",
18
18
  "TODO"
19
19
  ]
20
20
  s.files = [
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  "Gemfile",
26
26
  "Guardfile",
27
27
  "LICENSE",
28
- "README.rdoc",
28
+ "README.md",
29
29
  "Rakefile",
30
30
  "TODO",
31
31
  "benchmarks/memory.rb",
@@ -128,6 +128,7 @@ Gem::Specification.new do |s|
128
128
  "lib/veritas/relation/operation/unary.rb",
129
129
  "lib/veritas/support/abstract_class.rb",
130
130
  "lib/veritas/support/aliasable.rb",
131
+ "lib/veritas/support/comparator.rb",
131
132
  "lib/veritas/support/evaluator.rb",
132
133
  "lib/veritas/support/immutable.rb",
133
134
  "lib/veritas/support/operation/binary.rb",
@@ -161,7 +162,9 @@ Gem::Specification.new do |s|
161
162
  "spec/unit/veritas/aggregate/count/methods/count_spec.rb",
162
163
  "spec/unit/veritas/aggregate/count/type_spec.rb",
163
164
  "spec/unit/veritas/aggregate/default_spec.rb",
165
+ "spec/unit/veritas/aggregate/equal_value_spec.rb",
164
166
  "spec/unit/veritas/aggregate/finalize_spec.rb",
167
+ "spec/unit/veritas/aggregate/hash_spec.rb",
165
168
  "spec/unit/veritas/aggregate/maximum/class_methods/call_spec.rb",
166
169
  "spec/unit/veritas/aggregate/maximum/class_methods/default_spec.rb",
167
170
  "spec/unit/veritas/aggregate/maximum/methods/maximum_spec.rb",
@@ -299,6 +302,8 @@ Gem::Specification.new do |s|
299
302
  "spec/unit/veritas/attribute/type_spec.rb",
300
303
  "spec/unit/veritas/attribute/valid_primitive_spec.rb",
301
304
  "spec/unit/veritas/attribute/valid_value_spec.rb",
305
+ "spec/unit/veritas/comparator/compare_spec.rb",
306
+ "spec/unit/veritas/comparator/methods/eql_spec.rb",
302
307
  "spec/unit/veritas/evaluator/context/add_spec.rb",
303
308
  "spec/unit/veritas/evaluator/context/element_reference_spec.rb",
304
309
  "spec/unit/veritas/evaluator/context/functions_spec.rb",
@@ -334,10 +339,7 @@ Gem::Specification.new do |s|
334
339
  "spec/unit/veritas/function/connective/negation/methods/fixtures/classes.rb",
335
340
  "spec/unit/veritas/function/connective/negation/methods/not_spec.rb",
336
341
  "spec/unit/veritas/function/connective/type_spec.rb",
337
- "spec/unit/veritas/function/eql_spec.rb",
338
- "spec/unit/veritas/function/equal_value_spec.rb",
339
342
  "spec/unit/veritas/function/fixtures/classes.rb",
340
- "spec/unit/veritas/function/hash_spec.rb",
341
343
  "spec/unit/veritas/function/inspect_spec.rb",
342
344
  "spec/unit/veritas/function/numeric/absolute/class_methods/call_spec.rb",
343
345
  "spec/unit/veritas/function/numeric/absolute/inspect_spec.rb",
@@ -389,6 +391,7 @@ Gem::Specification.new do |s|
389
391
  "spec/unit/veritas/function/numeric/unary_plus/methods/unary_plus_spec.rb",
390
392
  "spec/unit/veritas/function/predicate/call_spec.rb",
391
393
  "spec/unit/veritas/function/predicate/class_methods/call_spec.rb",
394
+ "spec/unit/veritas/function/predicate/enumerable/call_spec.rb",
392
395
  "spec/unit/veritas/function/predicate/enumerable/class_methods/compare_method_spec.rb",
393
396
  "spec/unit/veritas/function/predicate/eql_spec.rb",
394
397
  "spec/unit/veritas/function/predicate/equality/class_methods/call_spec.rb",
@@ -501,6 +504,7 @@ Gem::Specification.new do |s|
501
504
  "spec/unit/veritas/function/unary/call_spec.rb",
502
505
  "spec/unit/veritas/function/unary/equal_value_spec.rb",
503
506
  "spec/unit/veritas/function/unary/fixtures/classes.rb",
507
+ "spec/unit/veritas/function/unary/hash_spec.rb",
504
508
  "spec/unit/veritas/function/unary/invertible/inverse_spec.rb",
505
509
  "spec/unit/veritas/function/unary/rename_spec.rb",
506
510
  "spec/unit/veritas/immutable/class_methods/freeze_object_spec.rb",
@@ -510,8 +514,6 @@ Gem::Specification.new do |s|
510
514
  "spec/unit/veritas/immutable/freeze_spec.rb",
511
515
  "spec/unit/veritas/immutable/memoize_spec.rb",
512
516
  "spec/unit/veritas/immutable/memoized_spec.rb",
513
- "spec/unit/veritas/immutable/memory/element_reference_spec.rb",
514
- "spec/unit/veritas/immutable/memory/element_set_spec.rb",
515
517
  "spec/unit/veritas/immutable/module_methods/included_spec.rb",
516
518
  "spec/unit/veritas/immutable/module_methods/memoize_spec.rb",
517
519
  "spec/unit/veritas/operation/binary/eql_spec.rb",
@@ -529,9 +531,11 @@ Gem::Specification.new do |s|
529
531
  "spec/unit/veritas/relation/directions_spec.rb",
530
532
  "spec/unit/veritas/relation/each_spec.rb",
531
533
  "spec/unit/veritas/relation/element_reference_spec.rb",
534
+ "spec/unit/veritas/relation/empty/class_methods/new_spec.rb",
532
535
  "spec/unit/veritas/relation/empty/each_spec.rb",
533
536
  "spec/unit/veritas/relation/empty/empty_spec.rb",
534
537
  "spec/unit/veritas/relation/empty/header_spec.rb",
538
+ "spec/unit/veritas/relation/empty/size_spec.rb",
535
539
  "spec/unit/veritas/relation/empty_spec.rb",
536
540
  "spec/unit/veritas/relation/eql_spec.rb",
537
541
  "spec/unit/veritas/relation/equal_value_spec.rb",
@@ -615,7 +619,6 @@ Gem::Specification.new do |s|
615
619
  "spec/unit/veritas/relation/operation/order/eql_spec.rb",
616
620
  "spec/unit/veritas/relation/operation/order/hash_spec.rb",
617
621
  "spec/unit/veritas/relation/operation/order/header_spec.rb",
618
- "spec/unit/veritas/relation/operation/order/methods/order_spec.rb",
619
622
  "spec/unit/veritas/relation/operation/order/methods/sort_by_spec.rb",
620
623
  "spec/unit/veritas/relation/operation/reverse/class_methods/new_spec.rb",
621
624
  "spec/unit/veritas/relation/operation/reverse/directions_spec.rb",
@@ -652,10 +655,10 @@ Gem::Specification.new do |s|
652
655
  "tasks/yard.rake",
653
656
  "veritas.gemspec"
654
657
  ]
655
- s.homepage = %q{https://github.com/dkubb/veritas}
656
- s.require_paths = [%q{lib}]
657
- s.rubygems_version = %q{1.8.5}
658
- s.summary = %q{Ruby Relational Algebra}
658
+ s.homepage = "https://github.com/dkubb/veritas"
659
+ s.require_paths = ["lib"]
660
+ s.rubygems_version = "1.8.10"
661
+ s.summary = "Ruby Relational Algebra"
659
662
 
660
663
  if s.respond_to? :specification_version then
661
664
  s.specification_version = 3