github.com/yaoapp/kun@v0.9.0/day/datetime_test.go (about)

     1  package day
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestNow(t *testing.T) {
    12  	TimezoneUTC()
    13  	v := Now()
    14  	name, offset := v.Zone()
    15  	assert.Equal(t, "UTC", name)
    16  	assert.Equal(t, 0, offset)
    17  
    18  	name, offset = v.Timezone("US/Hawaii").Zone()
    19  	assert.Equal(t, -10*60*60, offset)
    20  	assert.Equal(t, "HST", name)
    21  
    22  	Timezone("US/Hawaii")
    23  	v2 := Now()
    24  	name, offset = v2.Zone()
    25  	assert.Equal(t, -10*60*60, offset)
    26  	assert.Equal(t, "HST", name)
    27  
    28  	name, offset = v2.Timezone("Beijing", 8*60*60).Zone()
    29  	assert.Equal(t, "Beijing", name)
    30  	assert.Equal(t, 8*60*60, offset)
    31  }
    32  
    33  func TestOf(t *testing.T) {
    34  	TimezoneSystem()
    35  	assert.Equal(t, 31, Of("2019-12-31 08:31:56").Day())
    36  
    37  	Timezone("UTC", 0)
    38  	assert.Equal(t, 31, Of(Of("2019-12-31")).Day())
    39  	assert.Equal(t, 31, Of(*Of("2019-12-31")).Day())
    40  	assert.Equal(t, 31, Of(time.Date(2019, 12, 31, 0, 0, 0, 0, time.UTC)).Day())
    41  
    42  	assert.Equal(t, 31, Of("2019-12-31").Day())
    43  	assert.Equal(t, 30, Of("2019-12-31").Timezone("US/Hawaii").Day())
    44  	assert.Equal(t, 31, Of("2019-12-31 11:31:56").Day())
    45  	assert.Equal(t, 56, Of("2019-12-31 11:31:56").Second())
    46  
    47  	Timezone("US/Hawaii")
    48  	assert.Equal(t, 30, Of("2019-12-31").Day())
    49  	assert.Equal(t, 31, Of("2019-12-31 11:31:56").Day())
    50  	assert.Equal(t, 56, Of("2019-12-31 11:31:56").Second())
    51  
    52  	assert.Panics(t, func() {
    53  		fmt.Println(Of("error").Day())
    54  	})
    55  }
    56  
    57  func TestLoad(t *testing.T) {
    58  	TimezoneSystem()
    59  	v := Now()
    60  	assert.Equal(t, 31, v.Load("2019-12-31 08:31:56").Day())
    61  
    62  	v = Now()
    63  	assert.Equal(t, 4, v.Load("2022-01-04T13:23:45+08:00").Day())
    64  
    65  	TimezoneUTC()
    66  	v = Now()
    67  	assert.Equal(t, 31, v.Load("2019-12-31").Day())
    68  	assert.Equal(t, 30, v.Load("2019-12-31").Timezone("US/Hawaii").Day())
    69  	assert.Equal(t, 31, v.Load("2019-12-31 11:31:56").Day())
    70  	assert.Equal(t, 56, v.Load("2019-12-31 11:31:56").Second())
    71  
    72  	Timezone("US/Hawaii")
    73  	v = Now()
    74  	assert.Equal(t, 30, v.Load("2019-12-31").Day())
    75  	assert.Equal(t, 31, v.Load("2019-12-31 11:31:56").Day())
    76  	assert.Equal(t, 56, v.Load("2019-12-31 11:31:56").Second())
    77  }
    78  
    79  func TestTimezones(t *testing.T) {
    80  	zones := TimeZones()
    81  	assert.True(t, len(zones) > 0)
    82  }
    83  
    84  func TestTimezone(t *testing.T) {
    85  	Timezone("US/Hawaii")
    86  	Timezone("Beijing", 8*60*60)
    87  	TimezoneSystem()
    88  	TimezoneUTC()
    89  	assert.Panics(t, func() {
    90  		Timezone("America/Heibei")
    91  	})
    92  	assert.Panics(t, func() {
    93  		Of("2019-12-31").Timezone("America/Heibei").Day()
    94  	})
    95  }
    96  
    97  func TestGetTimezone(t *testing.T) {
    98  	TimezoneSystem()
    99  	name, offset := GetTimezone()
   100  	assert.True(t, 0 <= offset)
   101  	assert.True(t, "" != name)
   102  
   103  	TimezoneUTC()
   104  	name, offset = GetTimezone()
   105  	assert.Equal(t, 0, offset)
   106  	assert.Equal(t, "UTC", name)
   107  
   108  	Timezone("US/Hawaii")
   109  	name, offset = GetTimezone()
   110  	assert.Equal(t, -10*60*60, offset)
   111  	assert.Equal(t, "HST", name)
   112  
   113  	Timezone("Beijing", 8*60*60)
   114  	name, offset = GetTimezone()
   115  	assert.Equal(t, 8*60*60, offset)
   116  	assert.Equal(t, "Beijing", name)
   117  
   118  }
   119  
   120  func TestFormat(t *testing.T) {
   121  	day := Of("2021-02-05T00:00:00Z")
   122  	assert.Equal(t, 2021, day.Year())
   123  	assert.Equal(t, time.Month(2), day.Month())
   124  	assert.Equal(t, 5, day.Day())
   125  }