github.com/go-graphite/carbonapi@v0.17.0/pkg/parser/interval_test.go (about) 1 package parser 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestInterval(t *testing.T) { 9 10 var tests = []struct { 11 t string 12 seconds int32 13 sign int 14 }{ 15 {"1s", 1, 1}, 16 {"2d", 2 * 60 * 60 * 24, 1}, 17 {"10hours", 60 * 60 * 10, 1}, 18 {"7d13h45min21s", 7*24*60*60 + 13*60*60 + 45*60 + 21, 1}, 19 {"01hours", 60 * 60 * 1, 1}, 20 {"2d2d", 4 * 60 * 60 * 24, 1}, 21 22 {"1s", -1, -1}, 23 {"10m10s", 610, 1}, 24 {"+2d", 2 * 60 * 60 * 24, -1}, 25 {"-10hours", -60 * 60 * 10, -1}, 26 {"-360h2min", -360*60*60 - 2*60, -1}, 27 } 28 29 for _, tt := range tests { 30 if secs, _ := IntervalString(tt.t, tt.sign); secs != tt.seconds { 31 t.Errorf("intervalString(%q)=%d, want %d\n", tt.t, secs, tt.seconds) 32 } 33 } 34 35 var exceptTests = []struct { 36 t string 37 seconds int32 38 err string 39 sign int 40 }{ 41 {"", 0, "unknown time units", 1}, 42 {"-", 0, "unknown time units", 1}, 43 {"+", 0, "unknown time units", 1}, 44 {"10x10s", 0, "unknown time units", 1}, 45 {"10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000y", 0, "value out of range", 1}, 46 } 47 for _, tt := range exceptTests { 48 secs, err := IntervalString(tt.t, tt.sign) 49 if secs != tt.seconds { 50 t.Errorf("intervalString(%q)=%d, want %d\n", tt.t, secs, tt.seconds) 51 } 52 if !strings.Contains(err.Error(), tt.err) { 53 t.Errorf("Error of intervalString(%q)=%v, expected to contain %v\n", tt.t, err.Error(), tt.err) 54 } 55 } 56 }