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 }