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

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

View file

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

View file

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