github.com/go-graphite/carbonapi@v0.17.0/date/date_test.go (about)

     1  package date
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  func TestDateParamToEpoch(t *testing.T) {
    10  
    11  	defaultTimeZone := time.Local
    12  	timeNow = func() time.Time {
    13  		//16 Aug 1994 15:30
    14  		return time.Date(1994, time.August, 16, 15, 30, 0, 100, defaultTimeZone)
    15  	}
    16  
    17  	const shortForm = "15:04 2006-Jan-02"
    18  
    19  	var tests = []struct {
    20  		input  string
    21  		output string
    22  	}{
    23  		{"midnight", "00:00 1994-Aug-16"},
    24  		{"noon", "12:00 1994-Aug-16"},
    25  		{"teatime", "16:00 1994-Aug-16"},
    26  		{"tomorrow", "00:00 1994-Aug-17"},
    27  
    28  		{"noon 08/12/94", "12:00 1994-Aug-12"},
    29  		{"midnight 20060812", "00:00 2006-Aug-12"},
    30  		{"noon tomorrow", "12:00 1994-Aug-17"},
    31  
    32  		{"17:04 19940812", "17:04 1994-Aug-12"},
    33  		{"-1day", "15:30 1994-Aug-15"},
    34  		{"19940812", "00:00 1994-Aug-12"},
    35  	}
    36  
    37  	for _, tt := range tests {
    38  		got := DateParamToEpoch(tt.input, "Local", 0, defaultTimeZone)
    39  		ts, err := time.ParseInLocation(shortForm, tt.output, defaultTimeZone)
    40  		if err != nil {
    41  			panic(fmt.Sprintf("error parsing time: %q: %v", tt.output, err))
    42  		}
    43  
    44  		want := int64(ts.Unix())
    45  		if got != want {
    46  			t.Errorf("dateParamToEpoch(%q, 0)=%v, want %v", tt.input, got, want)
    47  		}
    48  	}
    49  }