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  }