2 Star 0 Fork 70

golang-package/carbon

forked from dromara/carbon 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
setter_unit_test.go 40.04 KB
一键复制 编辑 原始数据 按行查看 历史
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603
package carbon
import (
"testing"
"time"
"github.com/stretchr/testify/suite"
)
type SetterSuite struct {
suite.Suite
}
func TestSetterSuite(t *testing.T) {
suite.Run(t, new(SetterSuite))
}
func (s *SetterSuite) TearDownTest() {
ResetDefault()
}
func (s *SetterSuite) TestSetLayout() {
s.Run("zero carbon", func() {
SetLayout(DateLayout)
c1 := NewCarbon()
s.Equal(DateLayout, DefaultLayout)
s.Equal(DateLayout, c1.CurrentLayout())
s.Equal("0001-01-01", c1.String())
SetLayout(DateTimeLayout)
c2 := NewCarbon()
s.Equal(DateTimeLayout, DefaultLayout)
s.Equal(DateTimeLayout, c2.CurrentLayout())
s.Equal("0001-01-01 00:00:00", c2.String())
})
s.Run("valid carbon", func() {
SetLayout(DateLayout)
c1 := Parse("2020-08-05")
s.Equal(DateLayout, DefaultLayout)
s.Equal(DateLayout, c1.CurrentLayout())
s.Equal("2020-08-05", c1.String())
SetLayout(DateTimeLayout)
c2 := Parse("2020-08-05 13:14:15")
s.Equal(DateTimeLayout, DefaultLayout)
s.Equal(DateTimeLayout, c2.CurrentLayout())
s.Equal("2020-08-05 13:14:15", c2.String())
})
}
func (s *SetterSuite) TestSetFormat() {
s.Run("zero carbon", func() {
SetFormat(DateFormat)
c1 := NewCarbon()
s.Equal(DateLayout, DefaultLayout)
s.Equal(DateLayout, c1.CurrentLayout())
s.Equal("0001-01-01", c1.String())
SetFormat(DateTimeFormat)
c2 := NewCarbon()
s.Equal(DateTimeLayout, DefaultLayout)
s.Equal(DateTimeLayout, c2.CurrentLayout())
s.Equal("0001-01-01 00:00:00", c2.String())
})
s.Run("valid carbon", func() {
SetFormat(DateFormat)
c1 := Parse("2020-08-05")
s.Equal(DateLayout, DefaultLayout)
s.Equal(DateLayout, c1.CurrentLayout())
s.Equal("2020-08-05", c1.String())
SetFormat(DateTimeFormat)
c2 := Parse("2020-08-05 13:14:15")
s.Equal(DateTimeLayout, DefaultLayout)
s.Equal(DateTimeLayout, c2.CurrentLayout())
s.Equal("2020-08-05 13:14:15", c2.String())
})
}
func (s *SetterSuite) TestSetTimezone() {
s.Run("zero carbon", func() {
SetTimezone(UTC)
c1 := NewCarbon()
s.Equal(UTC, DefaultTimezone)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c1.ToString())
SetTimezone(PRC)
c2 := NewCarbon()
s.Equal(PRC, DefaultTimezone)
s.Equal(PRC, c2.Timezone())
s.Equal("LMT", c2.ZoneName())
s.Equal(29143, c2.ZoneOffset())
s.Equal("0001-01-01 08:05:43 +0805 LMT", c2.ToString())
SetTimezone(Japan)
c3 := NewCarbon()
s.Equal(Japan, DefaultTimezone)
s.Equal(Japan, c3.Timezone())
s.Equal("LMT", c3.ZoneName())
s.Equal(33539, c3.ZoneOffset())
s.Equal("0001-01-01 09:18:59 +0918 LMT", c3.ToString())
})
s.Run("valid carbon", func() {
SetTimezone(UTC)
c1 := Parse("2020-08-05 13:14:15")
s.Equal(UTC, DefaultTimezone)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0000 UTC", c1.ToString())
SetTimezone(PRC)
c2 := Parse("2020-08-05 13:14:15")
s.Equal(PRC, DefaultTimezone)
s.Equal(PRC, c2.Timezone())
s.Equal("CST", c2.ZoneName())
s.Equal(28800, c2.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0800 CST", c2.ToString())
SetTimezone(Japan)
c3 := Parse("2020-08-05 13:14:15")
s.Equal(Japan, DefaultTimezone)
s.Equal(Japan, c3.Timezone())
s.Equal("JST", c3.ZoneName())
s.Equal(32400, c3.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0900 JST", c3.ToString())
})
}
func (s *SetterSuite) TestSetLocation() {
s.Run("zero carbon", func() {
l1, _ := time.LoadLocation(UTC)
SetLocation(l1)
c1 := NewCarbon()
s.Equal(UTC, DefaultTimezone)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c1.ToString())
l2, _ := time.LoadLocation(PRC)
SetLocation(l2)
c2 := NewCarbon()
s.Equal(PRC, DefaultTimezone)
s.Equal(PRC, c2.Timezone())
s.Equal("LMT", c2.ZoneName())
s.Equal(29143, c2.ZoneOffset())
s.Equal("0001-01-01 08:05:43 +0805 LMT", c2.ToString())
l3, _ := time.LoadLocation(Japan)
SetLocation(l3)
c3 := NewCarbon()
s.Equal(Japan, DefaultTimezone)
s.Equal(Japan, c3.Timezone())
s.Equal("LMT", c3.ZoneName())
s.Equal(33539, c3.ZoneOffset())
s.Equal("0001-01-01 09:18:59 +0918 LMT", c3.ToString())
})
s.Run("valid carbon", func() {
l1, _ := time.LoadLocation(UTC)
SetLocation(l1)
c1 := Parse("2020-08-05 13:14:15")
s.Equal(UTC, DefaultTimezone)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0000 UTC", c1.ToString())
l2, _ := time.LoadLocation(PRC)
SetLocation(l2)
c2 := Parse("2020-08-05 13:14:15")
s.Equal(PRC, DefaultTimezone)
s.Equal(PRC, c2.Timezone())
s.Equal("CST", c2.ZoneName())
s.Equal(28800, c2.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0800 CST", c2.ToString())
l3, _ := time.LoadLocation(Japan)
SetLocation(l3)
c3 := Parse("2020-08-05 13:14:15")
s.Equal(Japan, DefaultTimezone)
s.Equal(Japan, c3.Timezone())
s.Equal("JST", c3.ZoneName())
s.Equal(32400, c3.ZoneOffset())
s.Equal("2020-08-05 13:14:15 +0900 JST", c3.ToString())
})
}
func (s *SetterSuite) TestSetLocale() {
s.Run("zero carbon", func() {
SetLocale("zh-CN")
s.Equal("zh-CN", DefaultLocale)
s.Equal("zh-CN", NewCarbon().Locale())
s.Equal("摩羯座", NewCarbon().Constellation())
s.Equal("冬季", NewCarbon().Season())
s.Equal("一月", NewCarbon().ToMonthString())
s.Equal("1月", NewCarbon().ToShortMonthString())
s.Equal("星期一", NewCarbon().ToWeekString())
s.Equal("周一", NewCarbon().ToShortWeekString())
SetLocale("en")
s.Equal("en", DefaultLocale)
s.Equal("en", NewCarbon().Locale())
s.Equal("Capricorn", NewCarbon().Constellation())
s.Equal("Winter", NewCarbon().Season())
s.Equal("January", NewCarbon().ToMonthString())
s.Equal("Jan", NewCarbon().ToShortMonthString())
s.Equal("Monday", NewCarbon().ToWeekString())
s.Equal("Mon", NewCarbon().ToShortWeekString())
})
s.Run("valid carbon", func() {
SetLocale("zh-CN")
c1 := Parse("2020-08-05")
s.Equal("zh-CN", DefaultLocale)
s.Equal("zh-CN", c1.Locale())
s.Equal("狮子座", c1.Constellation())
s.Equal("夏季", c1.Season())
s.Equal("八月", c1.ToMonthString())
s.Equal("8月", c1.ToShortMonthString())
s.Equal("星期三", c1.ToWeekString())
s.Equal("周三", c1.ToShortWeekString())
SetLocale("en")
c2 := Parse("2020-08-05")
s.Equal("en", DefaultLocale)
s.Equal("en", c2.Locale())
s.Equal("Leo", c2.Constellation())
s.Equal("Summer", c2.Season())
s.Equal("August", c2.ToMonthString())
s.Equal("Aug", c2.ToShortMonthString())
s.Equal("Wednesday", c2.ToWeekString())
s.Equal("Wed", c2.ToShortWeekString())
})
}
func (s *SetterSuite) TestSetWeekStartsAt() {
s.Run("zero carbon", func() {
SetWeekStartsAt(Sunday)
s.Equal(Sunday, DefaultWeekStartsAt)
s.Equal(Sunday, NewCarbon().WeekStartsAt())
s.Equal("0000-12-31 00:00:00 +0000 UTC", NewCarbon().StartOfWeek().ToString())
SetWeekStartsAt(Monday)
s.Equal(Monday, DefaultWeekStartsAt)
s.Equal(Monday, NewCarbon().WeekStartsAt())
s.Equal("0001-01-01 00:00:00 +0000 UTC", NewCarbon().StartOfWeek().ToString())
})
s.Run("valid carbon", func() {
SetWeekStartsAt(Monday)
c1 := Parse("2020-08-05")
s.Equal(Monday, DefaultWeekStartsAt)
s.Equal(Monday, c1.WeekStartsAt())
s.Equal("2020-08-03 00:00:00 +0000 UTC", c1.StartOfWeek().ToString())
SetWeekStartsAt(Sunday)
c2 := Parse("2020-08-05")
s.Equal(Sunday, DefaultWeekStartsAt)
s.Equal(Sunday, c2.WeekStartsAt())
s.Equal("2020-08-02 00:00:00 +0000 UTC", c2.StartOfWeek().ToString())
})
}
func (s *SetterSuite) TestSetWeekendDays() {
s.Run("zero carbon", func() {
SetWeekendDays([]Weekday{
Saturday, Sunday,
})
s.True(NewCarbon().IsWeekday())
s.False(NewCarbon().IsWeekend())
})
s.Run("empty carbon", func() {
SetWeekendDays([]Weekday{
Saturday, Sunday,
})
s.False(Parse("").IsWeekday())
s.False(Parse("").IsWeekend())
})
s.Run("error carbon", func() {
SetWeekendDays([]Weekday{
Saturday, Sunday,
})
s.False(Parse("xxx").IsWeekday())
s.False(Parse("xxx").IsWeekend())
})
s.Run("valid carbon", func() {
SetWeekendDays([]Weekday{
Saturday,
})
s.True(Parse("2025-04-12").IsWeekend())
s.False(Parse("2025-04-13").IsWeekend())
SetWeekendDays([]Weekday{
Sunday,
})
s.False(Parse("2025-04-12").IsWeekend())
s.True(Parse("2025-04-13").IsWeekend())
})
}
func (s *SetterSuite) TestCarbon_SetLayout() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetLayout(DateLayout)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetLayout(DateLayout)
s.False(c.HasError())
s.Equal(DateLayout, c.CurrentLayout())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetLayout(DateLayout)
s.False(c.HasError())
s.Empty(c.String())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetLayout(DateLayout)
s.True(c.HasError())
s.Empty(c.String())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05 13:14:15.999999 +0000 UTC")
s.Equal("2020-08-05 13:14:15", c.SetLayout(DateTimeLayout).String())
s.Equal("1596633255", c.SetLayout(TimestampLayout).String())
s.Equal("1596633255999", c.SetLayout(TimestampMilliLayout).String())
s.Equal("1596633255999999", c.SetLayout(TimestampMicroLayout).String())
s.Equal("1596633255999999000", c.SetLayout(TimestampNanoLayout).String())
})
s.Run("empty layout", func() {
c := Now().SetLayout("")
s.True(c.HasError())
s.Empty(c.CurrentLayout())
s.Empty(c.String())
})
}
func (s *SetterSuite) TestCarbon_SetFormat() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetFormat(DateFormat)
s.False(c.HasError())
s.Empty(c.CurrentLayout())
s.Empty(c.String())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetFormat(DateFormat)
s.False(c.HasError())
s.Equal(DateLayout, c.CurrentLayout())
})
s.Run("empty carbon", func() {
c := Parse("").SetFormat(DateFormat)
s.False(c.HasError())
s.Empty(c.CurrentLayout())
s.Empty(c.String())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetFormat(DateFormat)
s.True(c.HasError())
s.Empty(c.CurrentLayout())
s.Empty(c.String())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05 13:14:15.999999 +0000 UTC")
s.Equal("2020-08-05 13:14:15", c.SetFormat(DateTimeFormat).String())
s.Equal("1596633255", c.SetFormat(TimestampFormat).String())
s.Equal("1596633255999", c.SetFormat(TimestampMilliFormat).String())
s.Equal("1596633255999999", c.SetFormat(TimestampMicroFormat).String())
s.Equal("1596633255999999000", c.SetFormat(TimestampNanoFormat).String())
})
s.Run("empty layout", func() {
c := Now().SetFormat("")
s.True(c.HasError())
s.Empty(c.CurrentLayout())
s.Empty(c.String())
})
}
func (s *SetterSuite) TestCarbon_SetLocale() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetLocale("en")
s.False(c.HasError())
s.Empty(c.String())
})
s.Run("zero carbon", func() {
c1 := NewCarbon().SetLocale("zh-CN")
s.Equal("zh-CN", c1.Locale())
s.Equal("摩羯座", c1.Constellation())
s.Equal("冬季", c1.Season())
s.Equal("一月", c1.ToMonthString())
s.Equal("1月", c1.ToShortMonthString())
s.Equal("星期一", c1.ToWeekString())
s.Equal("周一", c1.ToShortWeekString())
c2 := NewCarbon().SetLocale("en")
s.Equal("Capricorn", c2.Constellation())
s.Equal("Winter", c2.Season())
s.Equal("January", c2.ToMonthString())
s.Equal("Jan", c2.ToShortMonthString())
s.Equal("Monday", c2.ToWeekString())
s.Equal("Mon", c2.ToShortWeekString())
})
s.Run("empty carbon", func() {
c := Parse("").SetLocale("en")
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetLocale("en")
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c1 := Parse("2020-08-05").SetLocale("zh-CN")
s.Equal("zh-CN", c1.Locale())
s.Equal("狮子座", c1.Constellation())
s.Equal("夏季", c1.Season())
s.Equal("八月", c1.ToMonthString())
s.Equal("8月", c1.ToShortMonthString())
s.Equal("星期三", c1.ToWeekString())
s.Equal("周三", c1.ToShortWeekString())
c2 := Parse("2020-08-05").SetLocale("en")
s.Equal("en", c2.Locale())
s.Equal("Leo", c2.Constellation())
s.Equal("Summer", c2.Season())
s.Equal("August", c2.ToMonthString())
s.Equal("Aug", c2.ToShortMonthString())
s.Equal("Wednesday", c2.ToWeekString())
s.Equal("Wed", c2.ToShortWeekString())
})
s.Run("empty locale", func() {
c := Now().SetLocale("")
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("error locale", func() {
c := Now().SetLocale("xxx")
s.True(c.HasError())
s.Empty(c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetTimezone() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetTimezone(UTC)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
l1, _ := time.LoadLocation(UTC)
t1 := time.Time{}.In(l1)
n1, f1 := t1.Zone()
s.Equal(UTC, t1.Location().String())
s.Equal(UTC, n1)
s.Equal(0, f1)
s.Equal("0001-01-01 00:00:00 +0000 UTC", t1.String())
c1 := NewCarbon().SetTimezone(UTC)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c1.ToString())
l2, _ := time.LoadLocation(PRC)
t2 := time.Time{}.In(l2)
n2, f2 := t2.Zone()
s.Equal(PRC, t2.Location().String())
s.Equal("LMT", n2)
s.Equal(29143, f2)
s.Equal("0001-01-01 08:05:43 +0805 LMT", t2.String())
c2 := NewCarbon().SetTimezone(PRC)
s.Equal(PRC, c2.Timezone())
s.Equal("LMT", c2.ZoneName())
s.Equal(29143, c2.ZoneOffset())
s.Equal("0001-01-01 08:05:43 +0805 LMT", c2.ToString())
l3, _ := time.LoadLocation(Japan)
t3 := time.Time{}.In(l3)
n3, f3 := t3.Zone()
s.Equal("LMT", n3)
s.Equal(33539, f3)
s.Equal("0001-01-01 09:18:59 +0918 LMT", t3.String())
c3 := NewCarbon().SetTimezone(Japan)
s.Equal(Japan, c3.Timezone())
s.Equal("LMT", c3.ZoneName())
s.Equal(33539, c3.ZoneOffset())
s.Equal("0001-01-01 09:18:59 +0918 LMT", c3.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetTimezone(PRC)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetTimezone(PRC)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05")
c.SetTimezone(UTC)
s.Equal(UTC, c.Timezone())
s.Equal(UTC, c.ZoneName())
s.Equal(0, c.ZoneOffset())
s.Equal("2020-08-05 00:00:00 +0000 UTC", c.ToString())
c.SetTimezone(PRC)
s.Equal(PRC, c.Timezone())
s.Equal("CST", c.ZoneName())
s.Equal(28800, c.ZoneOffset())
s.Equal("2020-08-05 08:00:00 +0800 CST", c.ToString())
c.SetTimezone(Japan)
s.Equal(Japan, c.Timezone())
s.Equal("JST", c.ZoneName())
s.Equal(32400, c.ZoneOffset())
s.Equal("2020-08-05 09:00:00 +0900 JST", c.ToString())
})
s.Run("empty timezone", func() {
c := Parse("2020-08-05").SetTimezone("")
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("error timezone", func() {
c := Parse("2020-08-05").SetTimezone("XXX")
s.True(c.HasError())
s.Empty(c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetLocation() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetLocation(time.UTC)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
l1, _ := time.LoadLocation(UTC)
t1 := time.Time{}.In(l1)
n1, f1 := t1.Zone()
s.Equal(UTC, t1.Location().String())
s.Equal(UTC, n1)
s.Equal(0, f1)
s.Equal("0001-01-01 00:00:00 +0000 UTC", t1.String())
c1 := NewCarbon().SetLocation(l1)
s.Equal(UTC, c1.Timezone())
s.Equal(UTC, c1.ZoneName())
s.Equal(0, c1.ZoneOffset())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c1.ToString())
l2, _ := time.LoadLocation(PRC)
t2 := time.Time{}.In(l2)
n2, f2 := t2.Zone()
s.Equal(PRC, t2.Location().String())
s.Equal("LMT", n2)
s.Equal(29143, f2)
s.Equal("0001-01-01 08:05:43 +0805 LMT", t2.String())
c2 := NewCarbon().SetLocation(l2)
s.Equal(PRC, c2.Timezone())
s.Equal("LMT", c2.ZoneName())
s.Equal(29143, c2.ZoneOffset())
s.Equal("0001-01-01 08:05:43 +0805 LMT", c2.ToString())
l3, _ := time.LoadLocation(Japan)
t3 := time.Time{}.In(l3)
n3, f3 := t3.Zone()
s.Equal("LMT", n3)
s.Equal(33539, f3)
s.Equal("0001-01-01 09:18:59 +0918 LMT", t3.String())
c3 := NewCarbon().SetLocation(l3)
s.Equal(Japan, c3.Timezone())
s.Equal("LMT", c3.ZoneName())
s.Equal(33539, c3.ZoneOffset())
s.Equal("0001-01-01 09:18:59 +0918 LMT", c3.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetLocation(time.UTC)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetLocation(time.UTC)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05")
l1, _ := time.LoadLocation(UTC)
c.SetLocation(l1)
s.Equal(UTC, c.Timezone())
s.Equal(UTC, c.ZoneName())
s.Equal(0, c.ZoneOffset())
s.Equal("2020-08-05 00:00:00 +0000 UTC", c.ToString())
l2, _ := time.LoadLocation(PRC)
c.SetLocation(l2)
s.Equal(PRC, c.Timezone())
s.Equal("CST", c.ZoneName())
s.Equal(28800, c.ZoneOffset())
s.Equal("2020-08-05 08:00:00 +0800 CST", c.ToString())
l3, _ := time.LoadLocation(Japan)
c.SetLocation(l3)
s.Equal(Japan, c.Timezone())
s.Equal("JST", c.ZoneName())
s.Equal(32400, c.ZoneOffset())
s.Equal("2020-08-05 09:00:00 +0900 JST", c.ToString())
})
s.Run("nil location", func() {
c := Parse("2020-08-05").SetLocation(nil)
s.True(c.HasError())
s.Empty(c.Timezone())
s.Empty(c.ZoneName())
s.Empty(c.ZoneOffset())
s.Empty(c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetWeekStartsAt() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetWeekStartsAt(Sunday)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c1 := NewCarbon().SetWeekStartsAt(Sunday)
s.False(c1.HasError())
s.Equal("0000-12-31 00:00:00 +0000 UTC", c1.StartOfWeek().ToString())
c2 := NewCarbon().SetWeekStartsAt(Monday)
s.False(c2.HasError())
s.Equal("0001-01-01 00:00:00 +0000 UTC", c2.StartOfWeek().ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetWeekStartsAt(Sunday)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetWeekStartsAt(Sunday)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c1 := Parse("2020-08-05").SetWeekStartsAt(Monday)
s.Equal(Monday, c1.WeekStartsAt())
s.Equal("2020-08-03 00:00:00 +0000 UTC", c1.StartOfWeek().ToString())
c2 := Parse("2020-08-05").SetWeekStartsAt(Sunday)
s.Equal(Sunday, c2.WeekStartsAt())
s.Equal("2020-08-02 00:00:00 +0000 UTC", c2.StartOfWeek().ToString())
})
}
func (s *SetterSuite) TestCarbon_SetWeekendDays() {
s.Run("nil carbon", func() {
wd := []Weekday{
Saturday, Sunday,
}
var c *Carbon
c = nil
c = c.SetWeekendDays(wd)
s.False(c.HasError())
s.False(c.IsWeekday())
s.False(c.IsWeekend())
})
s.Run("zero carbon", func() {
wd := []Weekday{
Saturday, Sunday,
}
c := NewCarbon().SetWeekendDays(wd)
s.False(c.HasError())
s.True(c.IsWeekday())
s.False(c.IsWeekend())
})
s.Run("empty carbon", func() {
wd := []Weekday{
Saturday, Sunday,
}
c := Parse("").SetWeekendDays(wd)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
wd := []Weekday{
Saturday, Sunday,
}
c := Parse("xxx").SetWeekendDays(wd)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
wd1 := []Weekday{
Saturday,
}
s.True(Parse("2025-04-12").SetWeekendDays(wd1).IsWeekend())
s.False(Parse("2025-04-13").SetWeekendDays(wd1).IsWeekend())
wd2 := []Weekday{
Sunday,
}
s.False(Parse("2025-04-12").SetWeekendDays(wd2).IsWeekend())
s.True(Parse("2025-04-13").SetWeekendDays(wd2).IsWeekend())
})
}
func (s *SetterSuite) TestCarbon_SetLanguage() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetLanguage(NewLanguage())
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
lang := NewLanguage()
lang.SetLocale("en")
c := NewCarbon().SetLanguage(lang)
s.False(c.HasError())
s.Equal("en", c.Locale())
})
s.Run("empty carbon", func() {
lang := NewLanguage()
lang.SetLocale("en")
c := Parse("").SetLanguage(lang)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
lang := NewLanguage()
lang.SetLocale("en")
s.Empty(Parse("xxx").SetLanguage(lang).ToString())
})
s.Run("valid carbon", func() {
lang := NewLanguage()
lang.SetLocale("en")
s.Equal("August", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
lang.SetLocale("zh-CN")
s.Equal("八月", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
})
s.Run("nil language", func() {
lang := NewLanguage()
lang = nil
c := NewCarbon().SetLanguage(lang)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("error language", func() {
lang := NewLanguage()
lang.SetLocale("xxx")
c := NewCarbon().SetLanguage(lang)
s.True(c.HasError())
s.Empty(c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateTime() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateTime(2020, 8, 5, 13, 14, 15)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateTime(2020, 8, 5, 13, 14, 15)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateTime(2020, 8, 5, 13, 14, 15)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDateTime(2020, 8, 5, 13, 14, 15)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateTime(2020, 8, 5, 13, 14, 15)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateTimeMilli() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateTimeMicro() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
s.Empty(Parse("xxx").SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999).ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateTimeNano() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDate() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDate(2020, 8, 5)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDate(2020, 8, 5)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDate(2020, 8, 5)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
s.Empty(Parse("xxx").SetDate(2020, 8, 5).ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDate(2020, 8, 5)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateMilli() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateMilli(2020, 8, 5, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateMilli(2020, 8, 5, 999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateMilli(2020, 8, 5, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
s.Empty(Parse("xxx").SetDateMilli(2020, 8, 5, 999).ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateMilli(2020, 8, 5, 999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateMicro() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateMicro(2020, 8, 5, 999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateMicro(2020, 8, 5, 999999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateMicro(2020, 8, 5, 999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDateMicro(2020, 8, 5, 999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateMicro(2020, 8, 5, 999999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDateNano() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDateNano(2020, 8, 5, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDateNano(2020, 8, 5, 999999999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDateNano(2020, 8, 5, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDateNano(2020, 8, 5, 999999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetDateNano(2020, 8, 5, 999999999)
s.False(c.HasError())
s.Equal("2020-08-05 00:00:00.999999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetTime() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetTime(13, 14, 15)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetTime(13, 14, 15)
s.False(c.HasError())
s.Equal("0001-01-01 13:14:15 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetTime(13, 14, 15)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetTime(13, 14, 15)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetTime(13, 14, 15)
s.Equal("2020-08-05 13:14:15 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetTimeMilli() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetTimeMilli(13, 14, 15, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetTimeMilli(13, 14, 15, 999)
s.False(c.HasError())
s.Equal("0001-01-01 13:14:15.999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetTimeMilli(13, 14, 15, 999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetTimeMilli(13, 14, 15, 999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetTimeMilli(13, 14, 15, 999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetTimeMicro() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetTimeMicro(13, 14, 15, 999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetTimeMicro(13, 14, 15, 999999)
s.False(c.HasError())
s.Equal("0001-01-01 13:14:15.999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetTimeMicro(13, 14, 15, 9999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetTimeMicro(13, 14, 15, 9999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetTimeMicro(13, 14, 15, 999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetTimeNano() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetTimeNano(13, 14, 15, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetTimeNano(13, 14, 15, 999999999)
s.False(c.HasError())
s.Equal("0001-01-01 13:14:15.999999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetTimeNano(13, 14, 15, 999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetTimeNano(13, 14, 15, 999999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
c := Parse("2020-08-05").SetTimeNano(13, 14, 15, 999999999)
s.False(c.HasError())
s.Equal("2020-08-05 13:14:15.999999999 +0000 UTC", c.ToString())
})
}
func (s *SetterSuite) TestCarbon_SetYear() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetYear(2020)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetYear(2020)
s.False(c.HasError())
s.Equal("2020-01-01 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetYear(2020)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetYear(2020)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2019-01-01 00:00:00 +0000 UTC", Parse("2020-01-01").SetYear(2019).ToString())
s.Equal("2019-01-31 00:00:00 +0000 UTC", Parse("2020-01-31").SetYear(2019).ToString())
s.Equal("2019-03-01 00:00:00 +0000 UTC", Parse("2020-02-29").SetYear(2019).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetYearNoOverflow() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetYearNoOverflow(2020)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetYearNoOverflow(2020)
s.False(c.HasError())
s.Equal("2020-01-01 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetYearNoOverflow(2020)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetYearNoOverflow(2020)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2019-01-01 00:00:00 +0000 UTC", Parse("2020-01-01").SetYearNoOverflow(2019).ToString())
s.Equal("2019-01-31 00:00:00 +0000 UTC", Parse("2020-01-31").SetYearNoOverflow(2019).ToString())
s.Equal("2019-02-28 00:00:00 +0000 UTC", Parse("2020-02-29").SetYearNoOverflow(2019).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetMonth() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetMonth(2)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetMonth(2)
s.False(c.HasError())
s.Equal("0001-02-01 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetMonth(2)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetMonth(2)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-02-01 00:00:00 +0000 UTC", Parse("2020-01-01").SetMonth(2).ToString())
s.Equal("2020-03-01 00:00:00 +0000 UTC", Parse("2020-01-30").SetMonth(2).ToString())
s.Equal("2020-03-02 00:00:00 +0000 UTC", Parse("2020-01-31").SetMonth(2).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetMonthNoOverflow() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetMonthNoOverflow(2)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetMonthNoOverflow(2)
s.False(c.HasError())
s.Equal("0001-02-01 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetMonthNoOverflow(2)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetMonthNoOverflow(2)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-02-01 00:00:00 +0000 UTC", Parse("2020-01-01").SetMonthNoOverflow(2).ToString())
s.Equal("2020-02-29 00:00:00 +0000 UTC", Parse("2020-01-30").SetMonthNoOverflow(2).ToString())
s.Equal("2020-02-29 00:00:00 +0000 UTC", Parse("2020-01-31").SetMonthNoOverflow(2).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetDay() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetDay(31)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetDay(31)
s.False(c.HasError())
s.Equal("0001-01-31 00:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetDay(31)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetDay(31)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-31 00:00:00 +0000 UTC", Parse("2020-01-01").SetDay(31).ToString())
s.Equal("2020-03-02 00:00:00 +0000 UTC", Parse("2020-02-01").SetDay(31).ToString())
s.Equal("2020-03-02 00:00:00 +0000 UTC", Parse("2020-02-28").SetDay(31).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetHour() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetHour(10)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetHour(10)
s.False(c.HasError())
s.Equal("0001-01-01 10:00:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetHour(31)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetHour(31)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 10:00:00 +0000 UTC", Parse("2020-01-01").SetHour(10).ToString())
s.Equal("2020-02-02 00:00:00 +0000 UTC", Parse("2020-02-01").SetHour(24).ToString())
s.Equal("2020-02-29 07:00:00 +0000 UTC", Parse("2020-02-28").SetHour(31).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetMinute() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
s.False(c.HasError())
s.Empty(c.ToString())
s.Nil(c.SetMinute(10))
})
s.Run("zero carbon", func() {
c := NewCarbon().SetMinute(10)
s.False(c.HasError())
s.Equal("0001-01-01 00:10:00 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetMinute(31)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetMinute(31)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 00:10:00 +0000 UTC", Parse("2020-01-01").SetMinute(10).ToString())
s.Equal("2020-02-01 00:24:00 +0000 UTC", Parse("2020-02-01").SetMinute(24).ToString())
s.Equal("2020-02-28 01:00:00 +0000 UTC", Parse("2020-02-28").SetMinute(60).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetSecond() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetSecond(10)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetSecond(10)
s.False(c.HasError())
s.Equal("0001-01-01 00:00:10 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetSecond(31)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetSecond(31)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 00:00:10 +0000 UTC", Parse("2020-01-01").SetSecond(10).ToString())
s.Equal("2020-02-01 00:00:24 +0000 UTC", Parse("2020-02-01").SetSecond(24).ToString())
s.Equal("2020-02-28 00:01:00 +0000 UTC", Parse("2020-02-28").SetSecond(60).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetMillisecond() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetMillisecond(999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetMillisecond(999)
s.False(c.HasError())
s.Equal("0001-01-01 00:00:00.999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetMillisecond(999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetMillisecond(999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 00:00:00.1 +0000 UTC", Parse("2020-01-01").SetMillisecond(100).ToString())
s.Equal("2020-01-01 00:00:00.999 +0000 UTC", Parse("2020-01-01").SetMillisecond(999).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetMicrosecond() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetMicrosecond(999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetMicrosecond(999999)
s.False(c.HasError())
s.Equal("0001-01-01 00:00:00.999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetMicrosecond(999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetMicrosecond(999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 00:00:00.1 +0000 UTC", Parse("2020-01-01").SetMicrosecond(100000).ToString())
s.Equal("2020-01-01 00:00:00.999999 +0000 UTC", Parse("2020-01-01").SetMicrosecond(999999).ToString())
})
}
func (s *SetterSuite) TestCarbon_SetNanosecond() {
s.Run("nil carbon", func() {
var c *Carbon
c = nil
c = c.SetNanosecond(999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("zero carbon", func() {
c := NewCarbon().SetNanosecond(999999999)
s.False(c.HasError())
s.Equal("0001-01-01 00:00:00.999999999 +0000 UTC", c.ToString())
})
s.Run("empty carbon", func() {
c := Parse("").SetNanosecond(999999999)
s.False(c.HasError())
s.Empty(c.ToString())
})
s.Run("error carbon", func() {
c := Parse("xxx").SetNanosecond(999999999)
s.True(c.HasError())
s.Empty(c.ToString())
})
s.Run("valid carbon", func() {
s.Equal("2020-01-01 00:00:00.1 +0000 UTC", Parse("2020-01-01").SetNanosecond(100000000).ToString())
s.Equal("2020-01-01 00:00:00.999999999 +0000 UTC", Parse("2020-01-01").SetNanosecond(999999999).ToString())
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/golang-package/carbon.git
git@gitee.com:golang-package/carbon.git
golang-package
carbon
carbon
master

搜索帮助