github.com/goravel/framework@v1.13.9/support/carbon/carbon_test.go (about)

     1  package carbon
     2  
     3  import (
     4  	"testing"
     5  	stdtime "time"
     6  
     7  	"github.com/golang-module/carbon/v2"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestSetTestNow(t *testing.T) {
    12  	SetTestNow(Now().SubHour())
    13  	assert.True(t, IsTestNow())
    14  	UnsetTestNow()
    15  	assert.False(t, IsTestNow())
    16  }
    17  
    18  func TestTimezone(t *testing.T) {
    19  	timezones := []string{Local, UTC, GMT, EET, WET, CET, EST, MST, Cuba, Egypt, Eire, Greenwich, Iceland, Iran,
    20  		Israel, Jamaica, Japan, Libya, Poland, Portugal, PRC, Singapore, Turkey, Shanghai, Chongqing, Harbin, Urumqi,
    21  		HongKong, Macao, Taipei, Tokyo, Saigon, Seoul, Bangkok, Dubai, NewYork, LosAngeles, Chicago, Moscow, London,
    22  		Berlin, Paris, Rome, Sydney, Melbourne, Darwin}
    23  
    24  	for _, timezone := range timezones {
    25  		now := Now(timezone)
    26  		assert.Nil(t, now.Error, timezone)
    27  		assert.True(t, now.Timestamp() > 0, timezone)
    28  	}
    29  
    30  	now := Now()
    31  	assert.Nil(t, now.Error)
    32  	assert.True(t, now.Timestamp() > 0)
    33  }
    34  
    35  func TestNow(t *testing.T) {
    36  	SetTestNow(Now().SubSeconds(10))
    37  	stdtime.Sleep(2 * stdtime.Second)
    38  	testNow := Now().Timestamp()
    39  	UnsetTestNow()
    40  	now := Now().Timestamp()
    41  	assert.True(t, now-testNow >= 10)
    42  
    43  	utcNow := Now()
    44  	shanghaiNow := Now(Shanghai)
    45  	assert.Equal(t, shanghaiNow.SubHours(8).ToDateTimeString(), utcNow.ToDateTimeString())
    46  }
    47  
    48  func TestParse(t *testing.T) {
    49  	time := Parse("2020-01-01 00:00:00", carbon.UTC)
    50  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    51  }
    52  
    53  func TestParseByFormat(t *testing.T) {
    54  	time := ParseByFormat("2020-01-01 00:00:00", "Y-m-d H:i:s", carbon.UTC)
    55  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    56  }
    57  
    58  func TestParseByLayout(t *testing.T) {
    59  	time := ParseByLayout("2020-01-01 00:00:00", "2006-01-02 15:04:05", carbon.UTC)
    60  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    61  }
    62  
    63  func TestFromTimestamp(t *testing.T) {
    64  	time := FromTimestamp(1577836800, carbon.UTC)
    65  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    66  }
    67  
    68  func TestFromTimestampMilli(t *testing.T) {
    69  	time := FromTimestampMilli(1577836800000, carbon.UTC)
    70  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    71  }
    72  
    73  func TestFromTimestampMicro(t *testing.T) {
    74  	time := FromTimestampMicro(1577836800000000, carbon.UTC)
    75  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    76  }
    77  
    78  func TestFromTimestampNano(t *testing.T) {
    79  	time := FromTimestampNano(1577836800000000000, carbon.UTC)
    80  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    81  }
    82  
    83  func TestFromDateTime(t *testing.T) {
    84  	time := FromDateTime(2020, 1, 1, 0, 0, 0, carbon.UTC)
    85  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    86  }
    87  
    88  func TestFromDateTimeMilli(t *testing.T) {
    89  	time := FromDateTimeMilli(2020, 1, 1, 0, 0, 0, 0, carbon.UTC)
    90  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    91  }
    92  
    93  func TestFromDateTimeMicro(t *testing.T) {
    94  	time := FromDateTimeMicro(2020, 1, 1, 0, 0, 0, 0, carbon.UTC)
    95  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
    96  }
    97  
    98  func TestFromDateTimeNano(t *testing.T) {
    99  	time := FromDateTimeNano(2020, 1, 1, 0, 0, 0, 0, carbon.UTC)
   100  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
   101  }
   102  
   103  func TestFromDate(t *testing.T) {
   104  	clock := Now(carbon.UTC).ToTimeString(carbon.UTC)
   105  	time := FromDate(2020, 1, 1, carbon.UTC)
   106  	assert.Equal(t, "2020-01-01 "+clock, time.ToDateTimeString(carbon.UTC))
   107  }
   108  
   109  func TestFromDateMilli(t *testing.T) {
   110  	clock := Now().ToTimeString(carbon.UTC)
   111  	time := FromDateMilli(2020, 1, 1, 999, carbon.UTC)
   112  	assert.Equal(t, "2020-01-01 "+clock+".999", time.ToDateTimeMilliString(carbon.UTC))
   113  }
   114  
   115  func TestFromDateMicro(t *testing.T) {
   116  	clock := Now().ToTimeString(carbon.UTC)
   117  	time := FromDateMicro(2020, 1, 1, 999999, carbon.UTC)
   118  	assert.Equal(t, "2020-01-01 "+clock+".999999", time.ToDateTimeMicroString(carbon.UTC))
   119  }
   120  
   121  func TestFromDateNano(t *testing.T) {
   122  	clock := Now().ToTimeString(carbon.UTC)
   123  	time := FromDateNano(2020, 1, 1, 999999999, carbon.UTC)
   124  	assert.Equal(t, "2020-01-01 "+clock+".999999999", time.ToDateTimeNanoString(carbon.UTC))
   125  }
   126  
   127  func TestFromTime(t *testing.T) {
   128  	date := Now().ToDateString(carbon.UTC)
   129  	time := FromTime(0, 0, 0, carbon.UTC)
   130  	assert.Equal(t, date+" 00:00:00", time.ToDateTimeString(carbon.UTC))
   131  }
   132  
   133  func TestFromTimeMilli(t *testing.T) {
   134  	date := Now().ToDateString(carbon.UTC)
   135  	time := FromTimeMilli(0, 0, 0, 999, carbon.UTC)
   136  	assert.Equal(t, date+" 00:00:00.999", time.ToDateTimeMilliString(carbon.UTC))
   137  }
   138  
   139  func TestFromTimeMicro(t *testing.T) {
   140  	date := Now().ToDateString(carbon.UTC)
   141  	time := FromTimeMicro(0, 0, 0, 999999, carbon.UTC)
   142  	assert.Equal(t, date+" 00:00:00.999999", time.ToDateTimeMicroString(carbon.UTC))
   143  }
   144  
   145  func TestFromTimeNano(t *testing.T) {
   146  	date := Now().ToDateString(carbon.UTC)
   147  	time := FromTimeNano(0, 0, 0, 999999999, carbon.UTC)
   148  	assert.Equal(t, date+" 00:00:00.999999999", time.ToDateTimeNanoString(carbon.UTC))
   149  }
   150  
   151  func TestFromStdTime(t *testing.T) {
   152  	time := FromStdTime(stdtime.Date(2020, 1, 1, 0, 0, 0, 0, stdtime.UTC))
   153  	assert.Equal(t, "2020-01-01 00:00:00", time.ToDateTimeString(carbon.UTC))
   154  }
   155  
   156  func TestErrorTime(t *testing.T) {
   157  	year, month, day, hour, minute, second, timestamp, timezone := 2020, 8, 5, 13, 14, 15, int64(1577855655), "xxx"
   158  
   159  	assert.NotNil(t, FromDateTime(year, month, day, hour, minute, second, timezone).Error, "It should catch an exception in CreateFromDateTime()")
   160  	assert.NotNil(t, FromDate(year, month, day, timezone).Error, "It should catch an exception in CreateFromDate()")
   161  	assert.NotNil(t, FromTime(hour, minute, second, timezone).Error, "It should catch an exception in CreateFromTime()")
   162  	assert.NotNil(t, FromTimestamp(timestamp, timezone).Error, "It should catch an exception in CreateFromTime()")
   163  	assert.NotNil(t, FromTimestampMilli(timestamp, timezone).Error, "It should catch an exception in CreateFromTimestampMilli()")
   164  	assert.NotNil(t, FromTimestampMicro(timestamp, timezone).Error, "It should catch an exception in CreateFromTimestampMicro()")
   165  	assert.NotNil(t, FromTimestampNano(timestamp, timezone).Error, "It should catch an exception in CreateFromTimestampNano()")
   166  }