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 }