From 40cbbfcc1b2bbd0d16e5c2388da6d0c728a939ec Mon Sep 17 00:00:00 2001 From: Andrew Dunham Date: Tue, 14 Apr 2015 17:21:12 -0700 Subject: [PATCH] Fix Err fallout for graph/iterator.Comparison iterator --- graph/iterator/value_comparison_iterator.go | 8 ++++++++ graph/iterator/value_comparison_iterator_test.go | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/graph/iterator/value_comparison_iterator.go b/graph/iterator/value_comparison_iterator.go index b1a0842..19abab7 100644 --- a/graph/iterator/value_comparison_iterator.go +++ b/graph/iterator/value_comparison_iterator.go @@ -51,6 +51,7 @@ type Comparison struct { val interface{} qs graph.QuadStore result graph.Value + err error } func NewComparison(sub graph.Iterator, op Operator, val interface{}, qs graph.QuadStore) *Comparison { @@ -133,9 +134,16 @@ func (it *Comparison) Next() bool { return true } } + if err := graph.Err(it.subIt); err != nil { + it.err = err + } return false } +func (it *Comparison) Err() error { + return it.err +} + // DEPRECATED func (it *Comparison) ResultTree() *graph.ResultTree { return graph.NewResultTree(it.Result()) diff --git a/graph/iterator/value_comparison_iterator_test.go b/graph/iterator/value_comparison_iterator_test.go index b8a6cc8..64ce5e9 100644 --- a/graph/iterator/value_comparison_iterator_test.go +++ b/graph/iterator/value_comparison_iterator_test.go @@ -15,6 +15,7 @@ package iterator import ( + "errors" "reflect" "testing" @@ -118,3 +119,17 @@ func TestVCIContains(t *testing.T) { } } } + +func TestComparisonIteratorErr(t *testing.T) { + retErr := errors.New("unique") + errIt := newTestIterator(false, retErr) + + vc := NewComparison(errIt, compareLT, int64(2), simpleStore) + + if vc.Next() != false { + t.Errorf("Comparison iterator did not pass through initial 'false'") + } + if vc.Err() != retErr { + t.Errorf("Comparison iterator did not pass through underlying Err") + } +}