storj.io/uplink@v1.13.0/private/ecclient/client_test.go (about)

     1  // Copyright (C) 2019 Storj Labs, Inc.
     2  // See LICENSE for copying information.
     3  
     4  package ecclient
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	"storj.io/common/pb"
    13  	"storj.io/common/testrand"
    14  )
    15  
    16  func TestUnique(t *testing.T) {
    17  	limits := make([]*pb.AddressedOrderLimit, 4)
    18  	for i := 0; i < len(limits); i++ {
    19  		limits[i] = &pb.AddressedOrderLimit{
    20  			Limit: &pb.OrderLimit{
    21  				StorageNodeId: testrand.NodeID(),
    22  			},
    23  		}
    24  	}
    25  
    26  	for i, tt := range []struct {
    27  		limits []*pb.AddressedOrderLimit
    28  		unique bool
    29  	}{
    30  		{nil, true},
    31  		{[]*pb.AddressedOrderLimit{}, true},
    32  		{[]*pb.AddressedOrderLimit{limits[0]}, true},
    33  		{[]*pb.AddressedOrderLimit{limits[0], limits[1]}, true},
    34  		{[]*pb.AddressedOrderLimit{limits[0], limits[0]}, false},
    35  		{[]*pb.AddressedOrderLimit{limits[0], limits[1], limits[0]}, false},
    36  		{[]*pb.AddressedOrderLimit{limits[1], limits[0], limits[0]}, false},
    37  		{[]*pb.AddressedOrderLimit{limits[0], limits[0], limits[1]}, false},
    38  		{[]*pb.AddressedOrderLimit{limits[2], limits[0], limits[1]}, true},
    39  		{[]*pb.AddressedOrderLimit{limits[2], limits[0], limits[3], limits[1]}, true},
    40  		{[]*pb.AddressedOrderLimit{limits[2], limits[0], limits[2], limits[1]}, false},
    41  		{[]*pb.AddressedOrderLimit{limits[1], limits[0], limits[3], limits[1]}, false},
    42  	} {
    43  		errTag := fmt.Sprintf("Test case #%d", i)
    44  		assert.Equal(t, tt.unique, unique(tt.limits), errTag)
    45  	}
    46  }