v0.0.463 Fix SubtractYears
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Failing after 3m29s

This commit is contained in:
2024-05-29 20:20:01 +02:00
parent 62980e1489
commit d2c04afcd5
5 changed files with 168 additions and 6 deletions

View File

@@ -156,7 +156,7 @@ func SubtractYears(t time.Time, yearCount float64, tz *time.Location) time.Time
intCount, floatCount := math.Modf(yearCount)
t.AddDate(-int(intCount), 0, 0)
t = t.AddDate(-int(intCount), 0, 0)
t0 := TimeToYearStart(t, tz)
t1 := TimeToYearEnd(t, tz)
@@ -173,7 +173,7 @@ func AddYears(t time.Time, yearCount float64, tz *time.Location) time.Time {
intCount, floatCount := math.Modf(yearCount)
t.AddDate(int(intCount), 0, 0)
t = t.AddDate(int(intCount), 0, 0)
t0 := TimeToYearStart(t, tz)
t1 := TimeToYearEnd(t, tz)

158
timeext/time_test.go Normal file
View File

@@ -0,0 +1,158 @@
package timeext
import (
"testing"
"time"
)
func TestTimeToDayStart(t *testing.T) {
tz := TimezoneBerlin
tm := time.Date(2022, 1, 1, 13, 14, 15, 0, tz)
expected := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
result := TimeToDayStart(tm, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestTimeToDayEnd(t *testing.T) {
tz := TimezoneBerlin
tm := time.Date(2022, 1, 1, 13, 14, 15, 0, tz)
expected := time.Date(2022, 1, 2, 0, 0, 0, 0, tz).Add(-1)
result := TimeToDayEnd(tm, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestIsSameDayIncludingDateBoundaries(t *testing.T) {
tz := TimezoneBerlin
t1 := time.Date(2022, 1, 1, 23, 59, 59, 0, tz)
t2 := time.Date(2022, 1, 2, 0, 0, 0, 0, tz)
if !IsSameDayIncludingDateBoundaries(t1, t2, tz) {
t.Errorf("Expected %v and %v to be the same day", t1, t2)
}
}
func TestIsDatePartEqual(t *testing.T) {
tz := TimezoneBerlin
t1 := time.Date(2022, 1, 1, 23, 59, 59, 0, tz)
t2 := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
if !IsDatePartEqual(t1, t2, tz) {
t.Errorf("Expected %v and %v to have the same date part", t1, t2)
}
}
func TestWithTimePart(t *testing.T) {
tz := TimezoneBerlin
base := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
expected := time.Date(2022, 1, 1, 13, 14, 15, 0, tz)
result := WithTimePart(base, 13, 14, 15)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestCombineDateAndTime(t *testing.T) {
tz := TimezoneBerlin
d := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
tm := time.Date(0, 0, 0, 13, 14, 15, 0, tz)
expected := time.Date(2022, 1, 1, 13, 14, 15, 0, tz)
result := CombineDateAndTime(d, tm)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestIsSunday(t *testing.T) {
tz := TimezoneBerlin
tm := time.Date(2022, 1, 2, 0, 0, 0, 0, tz) // 2nd January 2022 is a Sunday
if !IsSunday(tm, tz) {
t.Errorf("Expected %v to be a Sunday", tm)
}
}
func TestDurationFromTime(t *testing.T) {
expected := time.Duration(13*time.Hour + 14*time.Minute + 15*time.Second)
result := DurationFromTime(13, 14, 15)
if result != expected {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestMin(t *testing.T) {
t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
t2 := time.Date(2022, 1, 2, 0, 0, 0, 0, time.UTC)
expected := t1
result := Min(t1, t2)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestMax(t *testing.T) {
t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
t2 := time.Date(2022, 1, 2, 0, 0, 0, 0, time.UTC)
expected := t2
result := Max(t1, t2)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestUnixFloatSeconds(t *testing.T) {
v := 1640995200.0 // 1st January 2022 00:00:00 UTC in Unix timestamp
expected := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
result := UnixFloatSeconds(v)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestFloorTime(t *testing.T) {
tm := time.Date(2022, 1, 1, 13, 14, 15, 0, time.UTC)
expected := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
result := FloorTime(tm)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestSubtractYears(t *testing.T) {
tz := TimezoneBerlin
tm := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
expected := time.Date(2021, 1, 1, 0, 0, 0, 0, tz)
result := SubtractYears(tm, 1, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
expected = time.Date(2020, 1, 1, 0, 0, 0, 0, tz)
result = SubtractYears(tm, 2, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
expected = time.Date(2019, 1, 1, 0, 0, 0, 0, tz)
result = SubtractYears(tm, 3, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
expected = time.Date(2025, 1, 1, 0, 0, 0, 0, tz)
result = SubtractYears(tm, -3, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}
func TestAddYears(t *testing.T) {
tz := TimezoneBerlin
tm := time.Date(2022, 1, 1, 0, 0, 0, 0, tz)
expected := time.Date(2023, 1, 1, 0, 0, 0, 0, tz)
result := AddYears(tm, 1, tz)
if !result.Equal(expected) {
t.Errorf("Expected %v but got %v", expected, result)
}
}