fix NewAnd taking quadstore in tests

This commit is contained in:
Barak Michener 2015-04-19 15:14:38 -04:00
parent b90ba7cd77
commit 102b3d7ef5
8 changed files with 62 additions and 26 deletions

View file

@ -334,7 +334,7 @@ func TestSetIterator(t *testing.T) {
} }
it.Reset() it.Reset()
and := iterator.NewAnd() and := iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadsAllIterator()) and.AddSubIterator(qs.QuadsAllIterator())
and.AddSubIterator(it) and.AddSubIterator(it)
@ -354,7 +354,7 @@ func TestSetIterator(t *testing.T) {
t.Errorf("Failed to get expected results, got:%v expect:%v", got, expect) t.Errorf("Failed to get expected results, got:%v expect:%v", got, expect)
} }
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))
and.AddSubIterator(it) and.AddSubIterator(it)
@ -393,7 +393,7 @@ func TestSetIterator(t *testing.T) {
it.Reset() it.Reset()
// Order is important // Order is important
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))
and.AddSubIterator(it) and.AddSubIterator(it)
@ -406,7 +406,7 @@ func TestSetIterator(t *testing.T) {
it.Reset() it.Reset()
// Order is important // Order is important
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(it) and.AddSubIterator(it)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))

View file

@ -282,12 +282,12 @@ func TestIteratorsAndNextResultOrderA(t *testing.T) {
all := qs.NodesAllIterator() all := qs.NodesAllIterator()
innerAnd := iterator.NewAnd() innerAnd := iterator.NewAnd(qs)
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate))
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, all, quad.Object)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, all, quad.Object))
hasa := iterator.NewHasA(qs, innerAnd, quad.Subject) hasa := iterator.NewHasA(qs, innerAnd, quad.Subject)
outerAnd := iterator.NewAnd() outerAnd := iterator.NewAnd(qs)
outerAnd.AddSubIterator(fixed) outerAnd.AddSubIterator(fixed)
outerAnd.AddSubIterator(hasa) outerAnd.AddSubIterator(hasa)

View file

@ -26,10 +26,14 @@ import (
) )
func TestIteratorPromotion(t *testing.T) { func TestIteratorPromotion(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
all := NewInt64(1, 3) all := NewInt64(1, 3)
fixed := NewFixed(Identity) fixed := NewFixed(Identity)
fixed.Add(3) fixed.Add(3)
a := NewAnd() a := NewAnd(qs)
a.AddSubIterator(all) a.AddSubIterator(all)
a.AddSubIterator(fixed) a.AddSubIterator(fixed)
all.Tagger().Add("a") all.Tagger().Add("a")
@ -51,9 +55,13 @@ func TestIteratorPromotion(t *testing.T) {
} }
func TestNullIteratorAnd(t *testing.T) { func TestNullIteratorAnd(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
all := NewInt64(1, 3) all := NewInt64(1, 3)
null := NewNull() null := NewNull()
a := NewAnd() a := NewAnd(qs)
a.AddSubIterator(all) a.AddSubIterator(all)
a.AddSubIterator(null) a.AddSubIterator(null)
newIt, changed := a.Optimize() newIt, changed := a.Optimize()
@ -66,11 +74,15 @@ func TestNullIteratorAnd(t *testing.T) {
} }
func TestReorderWithTag(t *testing.T) { func TestReorderWithTag(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
all := NewInt64(100, 300) all := NewInt64(100, 300)
all.Tagger().Add("good") all.Tagger().Add("good")
all2 := NewInt64(1, 30000) all2 := NewInt64(1, 30000)
all2.Tagger().Add("slow") all2.Tagger().Add("slow")
a := NewAnd() a := NewAnd(qs)
// Make all2 the default iterator // Make all2 the default iterator
a.AddSubIterator(all2) a.AddSubIterator(all2)
a.AddSubIterator(all) a.AddSubIterator(all)
@ -92,11 +104,15 @@ func TestReorderWithTag(t *testing.T) {
} }
func TestAndStatistics(t *testing.T) { func TestAndStatistics(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
all := NewInt64(100, 300) all := NewInt64(100, 300)
all.Tagger().Add("good") all.Tagger().Add("good")
all2 := NewInt64(1, 30000) all2 := NewInt64(1, 30000)
all2.Tagger().Add("slow") all2.Tagger().Add("slow")
a := NewAnd() a := NewAnd(qs)
// Make all2 the default iterator // Make all2 the default iterator
a.AddSubIterator(all2) a.AddSubIterator(all2)
a.AddSubIterator(all) a.AddSubIterator(all)

View file

@ -23,10 +23,14 @@ import (
// Make sure that tags work on the And. // Make sure that tags work on the And.
func TestTag(t *testing.T) { func TestTag(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
fix1 := NewFixed(Identity) fix1 := NewFixed(Identity)
fix1.Add(234) fix1.Add(234)
fix1.Tagger().Add("foo") fix1.Tagger().Add("foo")
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(fix1) and.AddSubIterator(fix1)
and.Tagger().Add("bar") and.Tagger().Add("bar")
out := fix1.Tagger().Tags() out := fix1.Tagger().Tags()
@ -56,6 +60,10 @@ func TestTag(t *testing.T) {
// Do a simple itersection of fixed values. // Do a simple itersection of fixed values.
func TestAndAndFixedIterators(t *testing.T) { func TestAndAndFixedIterators(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
fix1 := NewFixed(Identity) fix1 := NewFixed(Identity)
fix1.Add(1) fix1.Add(1)
fix1.Add(2) fix1.Add(2)
@ -65,7 +73,7 @@ func TestAndAndFixedIterators(t *testing.T) {
fix2.Add(3) fix2.Add(3)
fix2.Add(4) fix2.Add(4)
fix2.Add(5) fix2.Add(5)
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(fix1) and.AddSubIterator(fix1)
and.AddSubIterator(fix2) and.AddSubIterator(fix2)
// Should be as big as smallest subiterator // Should be as big as smallest subiterator
@ -94,6 +102,10 @@ func TestAndAndFixedIterators(t *testing.T) {
// If there's no intersection, the size should still report the same, // If there's no intersection, the size should still report the same,
// but there should be nothing to Next() // but there should be nothing to Next()
func TestNonOverlappingFixedIterators(t *testing.T) { func TestNonOverlappingFixedIterators(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
fix1 := NewFixed(Identity) fix1 := NewFixed(Identity)
fix1.Add(1) fix1.Add(1)
fix1.Add(2) fix1.Add(2)
@ -103,7 +115,7 @@ func TestNonOverlappingFixedIterators(t *testing.T) {
fix2.Add(5) fix2.Add(5)
fix2.Add(6) fix2.Add(6)
fix2.Add(7) fix2.Add(7)
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(fix1) and.AddSubIterator(fix1)
and.AddSubIterator(fix2) and.AddSubIterator(fix2)
// Should be as big as smallest subiterator // Should be as big as smallest subiterator
@ -122,9 +134,13 @@ func TestNonOverlappingFixedIterators(t *testing.T) {
} }
func TestAllIterators(t *testing.T) { func TestAllIterators(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
all1 := NewInt64(1, 5) all1 := NewInt64(1, 5)
all2 := NewInt64(4, 10) all2 := NewInt64(4, 10)
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(all2) and.AddSubIterator(all2)
and.AddSubIterator(all1) and.AddSubIterator(all1)
@ -142,10 +158,14 @@ func TestAllIterators(t *testing.T) {
} }
func TestAndIteratorErr(t *testing.T) { func TestAndIteratorErr(t *testing.T) {
qs := &store{
data: []string{},
iter: NewFixed(Identity),
}
wantErr := errors.New("unique") wantErr := errors.New("unique")
allErr := newTestIterator(false, wantErr) allErr := newTestIterator(false, wantErr)
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(allErr) and.AddSubIterator(allErr)
and.AddSubIterator(NewInt64(1, 5)) and.AddSubIterator(NewInt64(1, 5))

View file

@ -23,7 +23,7 @@ import (
) )
func hasaWithTag(qs graph.QuadStore, tag string, target string) *HasA { func hasaWithTag(qs graph.QuadStore, tag string, target string) *HasA {
and := NewAnd() and := NewAnd(qs)
obj := qs.FixedIterator() obj := qs.FixedIterator()
obj.Add(qs.ValueOf(target)) obj.Add(qs.ValueOf(target))
@ -91,7 +91,7 @@ func TestQueryShape(t *testing.T) {
} }
// Given a name-of-an-and-iterator's shape. // Given a name-of-an-and-iterator's shape.
andInternal := NewAnd() andInternal := NewAnd(qs)
hasa1 := hasaWithTag(qs, "tag1", "cool") hasa1 := hasaWithTag(qs, "tag1", "cool")
hasa1.Tagger().Add("hasa1") hasa1.Tagger().Add("hasa1")
@ -104,7 +104,7 @@ func TestQueryShape(t *testing.T) {
pred := qs.FixedIterator() pred := qs.FixedIterator()
pred.Add(qs.ValueOf("name")) pred.Add(qs.ValueOf("name"))
and := NewAnd() and := NewAnd(qs)
and.AddSubIterator(NewLinksTo(qs, andInternal, quad.Subject)) and.AddSubIterator(NewLinksTo(qs, andInternal, quad.Subject))
and.AddSubIterator(NewLinksTo(qs, pred, quad.Predicate)) and.AddSubIterator(NewLinksTo(qs, pred, quad.Predicate))

View file

@ -333,7 +333,7 @@ func TestSetIterator(t *testing.T) {
} }
it.Reset() it.Reset()
and := iterator.NewAnd() and := iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadsAllIterator()) and.AddSubIterator(qs.QuadsAllIterator())
and.AddSubIterator(it) and.AddSubIterator(it)
@ -353,7 +353,7 @@ func TestSetIterator(t *testing.T) {
t.Errorf("Failed to get expected results, got:%v expect:%v", got, expect) t.Errorf("Failed to get expected results, got:%v expect:%v", got, expect)
} }
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))
and.AddSubIterator(it) and.AddSubIterator(it)
@ -392,7 +392,7 @@ func TestSetIterator(t *testing.T) {
it.Reset() it.Reset()
// Order is important // Order is important
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))
and.AddSubIterator(it) and.AddSubIterator(it)
@ -405,7 +405,7 @@ func TestSetIterator(t *testing.T) {
it.Reset() it.Reset()
// Order is important // Order is important
and = iterator.NewAnd() and = iterator.NewAnd(qs)
and.AddSubIterator(it) and.AddSubIterator(it)
and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B"))) and.AddSubIterator(qs.QuadIterator(quad.Subject, qs.ValueOf("B")))

View file

@ -108,12 +108,12 @@ func TestIteratorsAndNextResultOrderA(t *testing.T) {
all := qs.NodesAllIterator() all := qs.NodesAllIterator()
innerAnd := iterator.NewAnd() innerAnd := iterator.NewAnd(qs)
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate))
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, all, quad.Object)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, all, quad.Object))
hasa := iterator.NewHasA(qs, innerAnd, quad.Subject) hasa := iterator.NewHasA(qs, innerAnd, quad.Subject)
outerAnd := iterator.NewAnd() outerAnd := iterator.NewAnd(qs)
outerAnd.AddSubIterator(fixed) outerAnd.AddSubIterator(fixed)
outerAnd.AddSubIterator(hasa) outerAnd.AddSubIterator(hasa)
@ -193,7 +193,7 @@ func TestRemoveQuad(t *testing.T) {
fixed2 := qs.FixedIterator() fixed2 := qs.FixedIterator()
fixed2.Add(qs.ValueOf("follows")) fixed2.Add(qs.ValueOf("follows"))
innerAnd := iterator.NewAnd() innerAnd := iterator.NewAnd(qs)
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed, quad.Subject)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed, quad.Subject))
innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate)) innerAnd.AddSubIterator(iterator.NewLinksTo(qs, fixed2, quad.Predicate))

View file

@ -33,7 +33,7 @@ func TestSingleIterator(t *testing.T) {
func TestAndIterator(t *testing.T) { func TestAndIterator(t *testing.T) {
all1 := iterator.NewInt64(1, 3) all1 := iterator.NewInt64(1, 3)
all2 := iterator.NewInt64(3, 5) all2 := iterator.NewInt64(3, 5)
and := iterator.NewAnd() and := iterator.NewAnd(nil)
and.AddSubIterator(all1) and.AddSubIterator(all1)
and.AddSubIterator(all2) and.AddSubIterator(all2)