veritas 0.0.5 → 0.0.6

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 (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