fix NewAnd taking quadstore in tests
This commit is contained in:
parent
b90ba7cd77
commit
102b3d7ef5
8 changed files with 62 additions and 26 deletions
|
|
@ -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")))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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")))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue