github.com/fozzysec/SiaPrime@v0.0.0-20190612043147-66c8e8d11fe3/cmd/spc/sort_test.go (about)

     1  package main
     2  
     3  import (
     4  	"sort"
     5  	"testing"
     6  
     7  	"SiaPrime/node/api"
     8  	"SiaPrime/types"
     9  )
    10  
    11  // TestSortByValue tests that byValue sorts contracts correctly.
    12  func TestSortByValue(t *testing.T) {
    13  	contracts := []api.RenterContract{
    14  		{RenterFunds: types.NewCurrency64(1), NetAddress: "b"},
    15  		{RenterFunds: types.NewCurrency64(4), NetAddress: "a"},
    16  		{RenterFunds: types.NewCurrency64(2), NetAddress: "c"},
    17  		{RenterFunds: types.NewCurrency64(5), NetAddress: "z"},
    18  		{RenterFunds: types.NewCurrency64(2), NetAddress: "c"},
    19  		{RenterFunds: types.NewCurrency64(0), NetAddress: "e"},
    20  		{RenterFunds: types.NewCurrency64(2), NetAddress: "a"},
    21  	}
    22  	sort.Sort(byValue(contracts))
    23  
    24  	// check ordering
    25  	for i := 0; i < len(contracts)-1; i++ {
    26  		a, b := contracts[i], contracts[i+1]
    27  		if cmp := a.RenterFunds.Cmp(b.RenterFunds); cmp < 0 {
    28  			t.Error("contracts not primarily sorted by value:", a.RenterFunds, b.RenterFunds)
    29  		} else if cmp == 0 && a.NetAddress > b.NetAddress {
    30  			t.Error("contracts not secondarily sorted by address:", a.NetAddress, b.NetAddress)
    31  		}
    32  	}
    33  }