package core import ( "fmt" "testing" "github.com/stretchr/testify/require" ) func TestBlockchainInfo(t *testing.T) { cases := []struct { min, max int64 height int64 limit int64 resultLength int64 wantErr bool }{ // min > max {0, 0, 0, 10, 0, true}, // min set to 1 {0, 1, 0, 10, 0, true}, // max set to height (0) {0, 0, 1, 10, 1, false}, // max set to height (1) {2, 0, 1, 10, 0, true}, // max set to height (1) {2, 1, 5, 10, 0, true}, // negative {1, 10, 14, 10, 10, false}, // control {-1, 10, 14, 10, 0, true}, {1, -10, 14, 10, 0, true}, {-9223372036854775808, -9223372036854775788, 100, 20, 0, true}, // check limit and height {1, 1, 1, 10, 1, false}, {1, 1, 5, 10, 1, false}, {2, 2, 5, 10, 1, false}, {1, 2, 5, 10, 2, false}, {1, 5, 1, 10, 1, false}, {1, 5, 10, 10, 5, false}, {1, 15, 10, 10, 10, false}, {1, 15, 15, 10, 10, false}, {1, 15, 15, 20, 15, false}, {1, 20, 15, 20, 15, false}, {1, 20, 20, 20, 20, false}, } for i, c := range cases { caseString := fmt.Sprintf("test %d failed", i) min, max, err := filterMinMax(c.height, c.min, c.max, c.limit) if c.wantErr { require.Error(t, err, caseString) } else { require.NoError(t, err, caseString) require.Equal(t, 1+max-min, c.resultLength, caseString) } } }