732 lines
20 KiB
Go
732 lines
20 KiB
Go
package carbon
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type BoundarySuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func TestBoundarySuite(t *testing.T) {
|
|
suite.Run(t, new(BoundarySuite))
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_SecondBoundariesAtOffsetTransitions() {
|
|
for _, test := range []struct {
|
|
name string
|
|
zone string
|
|
inputUTC time.Time
|
|
}{
|
|
{"New York first occurrence", "America/New_York", time.Date(2026, 11, 1, 5, 34, 49, 123456789, time.UTC)},
|
|
{"New York second occurrence", "America/New_York", time.Date(2026, 11, 1, 6, 34, 49, 123456789, time.UTC)},
|
|
{"Lord Howe first occurrence", "Australia/Lord_Howe", time.Date(2026, 4, 4, 14, 45, 49, 123456789, time.UTC)},
|
|
{"Lord Howe second occurrence", "Australia/Lord_Howe", time.Date(2026, 4, 4, 15, 15, 49, 123456789, time.UTC)},
|
|
{"Algiers second-offset transition", "Africa/Algiers", time.Date(1891, 3, 15, 23, 48, 22, 123456789, time.UTC)},
|
|
{"Monrovia forward transition", "Africa/Monrovia", time.Date(1972, 1, 7, 0, 44, 30, 123456789, time.UTC)},
|
|
{"UTC control", "UTC", time.Date(2026, 1, 2, 12, 34, 49, 123456789, time.UTC)},
|
|
} {
|
|
s.Run(test.name, func() {
|
|
loc, err := time.LoadLocation(test.zone)
|
|
s.Require().NoError(err)
|
|
input := test.inputUTC.In(loc)
|
|
c := NewCarbon(input).SetWeekStartsAt(Sunday)
|
|
start, end := c.StartOfSecond(), c.EndOfSecond()
|
|
s.Equal(input.Unix(), start.StdTime().Unix())
|
|
s.Equal(input.Unix(), end.StdTime().Unix())
|
|
s.Equal(0, start.Nanosecond())
|
|
s.Equal(MaxNanosecond, end.Nanosecond())
|
|
s.Same(loc, start.StdTime().Location())
|
|
s.Same(loc, end.StdTime().Location())
|
|
s.Equal(Sunday, start.WeekStartsAt())
|
|
s.Equal(Sunday, end.WeekStartsAt())
|
|
s.Equal(input, c.StdTime())
|
|
})
|
|
}
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfCentury() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfCentury()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfCentury()
|
|
s.False(c.HasError())
|
|
s.Equal("0000-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfCentury()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfCentury()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2000-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfCentury().ToString())
|
|
s.Equal("2000-01-01 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfCentury().ToString())
|
|
s.Equal("2000-01-01 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfCentury().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfCentury() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfCentury()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfCentury()
|
|
s.False(c.HasError())
|
|
s.Equal("0099-12-31 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfCentury()
|
|
s.False(c.HasError())
|
|
s.Empty(c.String())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfCentury()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2099-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfCentury().ToString())
|
|
s.Equal("2099-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfCentury().ToString())
|
|
s.Equal("2099-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfCentury().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfDecade() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfDecade()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfDecade()
|
|
s.False(c.HasError())
|
|
s.Equal("0000-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfDecade()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfDecade()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfDecade().ToString())
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfDecade().ToString())
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfDecade().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfDecade() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfDecade()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfDecade()
|
|
s.False(c.HasError())
|
|
s.Equal("0009-12-31 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfDecade()
|
|
s.False(c.HasError())
|
|
s.Empty(c.String())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfDecade()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2029-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfDecade().ToString())
|
|
s.Equal("2029-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfDecade().ToString())
|
|
s.Equal("2029-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfDecade().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfYear() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfYear()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfYear()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfYear()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfYear()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfYear().ToString())
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfYear().ToString())
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfYear().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfYear() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfYear()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfYear()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-12-31 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfYear()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfYear()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfYear().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfYear().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfYear().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfQuarter() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfQuarter()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfQuarter().ToString())
|
|
s.Equal("2020-07-01 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfQuarter().ToString())
|
|
s.Equal("2020-10-01 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfQuarter().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfQuarter() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-03-31 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfQuarter()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfQuarter()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-03-31 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfQuarter().ToString())
|
|
s.Equal("2020-09-30 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfQuarter().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfQuarter().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfMonth() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfMonth()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfMonth()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfMonth()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfMonth()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfMonth().ToString())
|
|
s.Equal("2020-08-01 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfMonth().ToString())
|
|
s.Equal("2020-12-01 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfMonth().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfMonth() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfMonth()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfMonth()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-31 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfMonth()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfMonth()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-31 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfMonth().ToString())
|
|
s.Equal("2020-08-31 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfMonth().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfMonth().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfWeek() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfWeek()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfWeek()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfWeek()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfWeek()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2019-12-30 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfWeek().ToString())
|
|
s.Equal("2020-08-10 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfWeek().ToString())
|
|
s.Equal("2020-12-28 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfWeek().ToString())
|
|
s.Equal("2025-04-07 00:00:00 +0000 UTC", Parse("2025-04-07 00:00:00").StartOfWeek().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfWeek() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfWeek()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfWeek()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-07 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfWeek()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfWeek()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-05 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfWeek().ToString())
|
|
s.Equal("2020-08-16 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfWeek().ToString())
|
|
s.Equal("2021-01-03 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfWeek().ToString())
|
|
s.Equal("2025-04-13 23:59:59.999999999 +0000 UTC", Parse("2025-04-13 00:00:00").EndOfWeek().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfDay() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfDay()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfDay()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfDay()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfDay()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfDay().ToString())
|
|
s.Equal("2020-08-15 00:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfDay().ToString())
|
|
s.Equal("2020-12-31 00:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfDay().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfDay() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfDay()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfDay()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 23:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfDay()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfDay()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 23:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfDay().ToString())
|
|
s.Equal("2020-08-15 23:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfDay().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfDay().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfHour() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfHour()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfHour()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfHour()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfHour()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfHour().ToString())
|
|
s.Equal("2020-08-15 12:00:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfHour().ToString())
|
|
s.Equal("2020-12-31 23:00:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfHour().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfHour() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfHour()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfHour()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:59:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfHour()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfHour()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:59:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfHour().ToString())
|
|
s.Equal("2020-08-15 12:59:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfHour().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfHour().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfMinute() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfMinute()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfMinute()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfMinute()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfMinute()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfMinute().ToString())
|
|
s.Equal("2020-08-15 12:30:00 +0000 UTC", Parse("2020-08-15 12:30:30").StartOfMinute().ToString())
|
|
s.Equal("2020-12-31 23:59:00 +0000 UTC", Parse("2020-12-31 23:59:59").StartOfMinute().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfMinute() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfMinute()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfMinute()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:59.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfMinute()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfMinute()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:59.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfMinute().ToString())
|
|
s.Equal("2020-08-15 12:30:59.999999999 +0000 UTC", Parse("2020-08-15 12:30:30").EndOfMinute().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59").EndOfMinute().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_StartOfSecond() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.StartOfSecond()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().StartOfSecond()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").StartOfSecond()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").StartOfSecond()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00 +0000 UTC", Parse("2020-01-01 00:00:00").StartOfSecond().ToString())
|
|
s.Equal("2020-08-15 12:30:30 +0000 UTC", Parse("2020-08-15 12:30:30.66666").StartOfSecond().ToString())
|
|
s.Equal("2020-12-31 23:59:59 +0000 UTC", Parse("2020-12-31 23:59:59.999999999").StartOfSecond().ToString())
|
|
})
|
|
}
|
|
|
|
func (s *BoundarySuite) TestCarbon_EndOfSecond() {
|
|
s.Run("nil carbon", func() {
|
|
var c *Carbon
|
|
c = nil
|
|
c = c.EndOfSecond()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("zero carbon", func() {
|
|
c := NewCarbon().EndOfSecond()
|
|
s.False(c.HasError())
|
|
s.Equal("0001-01-01 00:00:00.999999999 +0000 UTC", c.ToString())
|
|
})
|
|
|
|
s.Run("empty carbon", func() {
|
|
c := Parse("").EndOfSecond()
|
|
s.False(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("error carbon", func() {
|
|
c := Parse("xxx").EndOfSecond()
|
|
s.True(c.HasError())
|
|
s.Empty(c.ToString())
|
|
})
|
|
|
|
s.Run("valid carbon", func() {
|
|
s.Equal("2020-01-01 00:00:00.999999999 +0000 UTC", Parse("2020-01-01 00:00:00").EndOfSecond().ToString())
|
|
s.Equal("2020-08-15 12:30:30.999999999 +0000 UTC", Parse("2020-08-15 12:30:30.66666").EndOfSecond().ToString())
|
|
s.Equal("2020-12-31 23:59:59.999999999 +0000 UTC", Parse("2020-12-31 23:59:59.999999999").EndOfSecond().ToString())
|
|
})
|
|
}
|