Mike Schwörer
d2c04afcd5
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Failing after 3m29s
159 lines
4.3 KiB
Go
159 lines
4.3 KiB
Go
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)
|
|
}
|
|
}
|