aboutsummaryrefslogtreecommitdiffstats
path: root/spec/predicates
diff options
context:
space:
mode:
Diffstat (limited to 'spec/predicates')
-rw-r--r--spec/predicates/binary_predicate_spec.rb27
-rw-r--r--spec/predicates/equality_predicate_spec.rb25
-rw-r--r--spec/predicates/relation_inclusion_predicate_spec.rb16
3 files changed, 68 insertions, 0 deletions
diff --git a/spec/predicates/binary_predicate_spec.rb b/spec/predicates/binary_predicate_spec.rb
new file mode 100644
index 0000000000..1be7dd067d
--- /dev/null
+++ b/spec/predicates/binary_predicate_spec.rb
@@ -0,0 +1,27 @@
+require File.join(File.dirname(__FILE__), '..', 'spec_helper')
+
+describe BinaryPredicate do
+ before do
+ @relation1 = TableRelation.new(:foo)
+ @relation2 = TableRelation.new(:bar)
+ @attribute1 = Attribute.new(@relation1, :attribute_name)
+ @attribute2 = Attribute.new(@relation2, :attribute_name)
+ end
+
+ describe BinaryPredicate, '==' do
+ before do
+ class ConcreteBinaryPredicate < BinaryPredicate
+ end
+ end
+
+ it "obtains if attribute1 and attribute2 are identical" do
+ BinaryPredicate.new(@attribute1, @attribute2).should == BinaryPredicate.new(@attribute1, @attribute2)
+ BinaryPredicate.new(@attribute1, @attribute2).should_not == BinaryPredicate.new(@attribute1, @attribute1)
+ end
+
+ it "obtains if the concrete type of the BinaryPredicates are identical" do
+ ConcreteBinaryPredicate.new(@attribute1, @attribute2).should == ConcreteBinaryPredicate.new(@attribute1, @attribute2)
+ BinaryPredicate.new(@attribute1, @attribute2).should_not == ConcreteBinaryPredicate.new(@attribute1, @attribute2)
+ end
+ end
+end \ No newline at end of file
diff --git a/spec/predicates/equality_predicate_spec.rb b/spec/predicates/equality_predicate_spec.rb
new file mode 100644
index 0000000000..18d3399193
--- /dev/null
+++ b/spec/predicates/equality_predicate_spec.rb
@@ -0,0 +1,25 @@
+require File.join(File.dirname(__FILE__), '..', 'spec_helper')
+
+describe EqualityPredicate do
+ before do
+ @relation1 = TableRelation.new(:foo)
+ @relation2 = TableRelation.new(:bar)
+ @attribute1 = Attribute.new(@relation1, :attribute_name)
+ @attribute2 = Attribute.new(@relation2, :attribute_name)
+ end
+
+ describe EqualityPredicate, '==' do
+ it "obtains if attribute1 and attribute2 are identical" do
+ EqualityPredicate.new(@attribute1, @attribute2).should == EqualityPredicate.new(@attribute1, @attribute2)
+ EqualityPredicate.new(@attribute1, @attribute2).should_not == EqualityPredicate.new(@attribute1, @attribute1)
+ end
+
+ it "obtains if the concrete type of the predicates are identical" do
+ EqualityPredicate.new(@attribute1, @attribute2).should_not == BinaryPredicate.new(@attribute1, @attribute2)
+ end
+
+ it "is commutative on the attributes" do
+ EqualityPredicate.new(@attribute1, @attribute2).should == EqualityPredicate.new(@attribute2, @attribute1)
+ end
+ end
+end \ No newline at end of file
diff --git a/spec/predicates/relation_inclusion_predicate_spec.rb b/spec/predicates/relation_inclusion_predicate_spec.rb
new file mode 100644
index 0000000000..6cd37fafa8
--- /dev/null
+++ b/spec/predicates/relation_inclusion_predicate_spec.rb
@@ -0,0 +1,16 @@
+require File.join(File.dirname(__FILE__), '..', 'spec_helper')
+
+describe RelationInclusionPredicate do
+ before do
+ @relation1 = TableRelation.new(:foo)
+ @relation2 = TableRelation.new(:bar)
+ @attribute = @relation1[:baz]
+ end
+
+ describe RelationInclusionPredicate, '==' do
+ it "obtains if attribute1 and attribute2 are identical" do
+ RelationInclusionPredicate.new(@attribute, @relation1).should == RelationInclusionPredicate.new(@attribute, @relation1)
+ RelationInclusionPredicate.new(@attribute, @relation1).should_not == RelationInclusionPredicate.new(@attribute, @relation2)
+ end
+ end
+end \ No newline at end of file