github.com/cayleygraph/cayley@v0.7.7/graph/iterator/count_test.go (about)

     1  package iterator
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/cayleygraph/cayley/graph"
     8  	"github.com/cayleygraph/quad"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func 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(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  }