1package iterator 2 3import ( 4 "context" 5 "testing" 6 7 "github.com/cayleygraph/cayley/graph" 8 "github.com/cayleygraph/cayley/quad" 9 "github.com/stretchr/testify/require" 10) 11 12func TestCount(t *testing.T) { 13 ctx := context.TODO() 14 fixed := NewFixed( 15 graph.PreFetched(quad.String("a")), 16 graph.PreFetched(quad.String("b")), 17 graph.PreFetched(quad.String("c")), 18 graph.PreFetched(quad.String("d")), 19 graph.PreFetched(quad.String("e")), 20 ) 21 it := NewCount(fixed, nil) 22 require.True(t, it.Next(ctx)) 23 require.Equal(t, graph.PreFetched(quad.Int(5)), it.Result()) 24 require.False(t, it.Next(ctx)) 25 require.True(t, it.Contains(ctx, graph.PreFetched(quad.Int(5)))) 26 require.False(t, it.Contains(ctx, graph.PreFetched(quad.Int(3)))) 27 28 fixed.Reset() 29 30 fixed2 := NewFixed( 31 graph.PreFetched(quad.String("b")), 32 graph.PreFetched(quad.String("d")), 33 ) 34 it = NewCount(NewAnd(nil, fixed, fixed2), nil) 35 require.True(t, it.Next(ctx)) 36 require.Equal(t, graph.PreFetched(quad.Int(2)), it.Result()) 37 require.False(t, it.Next(ctx)) 38 require.False(t, it.Contains(ctx, graph.PreFetched(quad.Int(5)))) 39 require.True(t, it.Contains(ctx, graph.PreFetched(quad.Int(2)))) 40 41 it.Reset() 42 it.Tagger().Add("count") 43 require.True(t, it.Next(ctx)) 44 m := make(map[string]graph.Value) 45 it.TagResults(m) 46 require.Equal(t, map[string]graph.Value{"count": graph.PreFetched(quad.Int(2))}, m) 47} 48