github.com/0chain/gosdk@v1.17.11/core/common/time_test.go (about)

     1  package common
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestParseTime(t *testing.T) {
    12  
    13  	now := time.Date(2022, 3, 22, 0, 0, 0, 0, time.Now().UTC().Location())
    14  	null := time.Now()
    15  
    16  	tests := []struct {
    17  		name         string
    18  		input        string
    19  		exceptedTime time.Time
    20  		exceptedErr  error
    21  	}{
    22  		{
    23  			name:         "duration",
    24  			input:        "+1h30m",
    25  			exceptedTime: now.Add(90 * time.Minute),
    26  		},
    27  		{
    28  			name:         "seconds",
    29  			input:        "+30",
    30  			exceptedTime: now.Add(30 * time.Second),
    31  		},
    32  		{
    33  			name:         "Unix timestamp",
    34  			input:        "1647858200",
    35  			exceptedTime: time.Unix(1647858200, 0),
    36  		},
    37  		{
    38  			name:         "YYYY-MM-dd HH:mm:ss",
    39  			input:        "1647858200",
    40  			exceptedTime: time.Unix(1647858200, 0),
    41  		},
    42  		{
    43  			name:         "empty input",
    44  			input:        "",
    45  			exceptedTime: null,
    46  			exceptedErr:  ErrInvalidTime,
    47  		},
    48  		{
    49  			name:         "invaid input",
    50  			input:        "s",
    51  			exceptedTime: null,
    52  			exceptedErr:  ErrInvalidTime,
    53  		},
    54  	}
    55  
    56  	for _, test := range tests {
    57  
    58  		t.Run(test.name, func(t *testing.T) {
    59  
    60  			v, err := ParseTime(now, test.input)
    61  
    62  			if test.exceptedTime.Equal(null) {
    63  				require.Nil(t, v)
    64  			} else {
    65  				require.NotNil(t, v)
    66  				require.True(t, v.Equal(test.exceptedTime))
    67  			}
    68  
    69  			if test.exceptedErr == nil {
    70  				require.Nil(t, err)
    71  			} else {
    72  				require.True(t, errors.Is(err, test.exceptedErr))
    73  			}
    74  		})
    75  	}
    76  
    77  }