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 }