v0.0.481
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m50s
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m50s
This commit is contained in:
83
timeext/diff_test.go
Normal file
83
timeext/diff_test.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package timeext
|
||||
|
||||
import (
|
||||
"math"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestYearDifferenceWithSameYearAndDay(t *testing.T) {
|
||||
t1 := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
t2 := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
expected := 0.0
|
||||
result := YearDifference(t1, t2, time.UTC)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceWithOneYearApart(t *testing.T) {
|
||||
t1 := time.Date(2021, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
t2 := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
expected := 1.0
|
||||
result := YearDifference(t1, t2, time.UTC)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceWithDifferentMonths(t *testing.T) {
|
||||
t1 := time.Date(2020, 6, 1, 0, 0, 0, 0, time.UTC)
|
||||
t2 := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
expected := 0.4166666666666667 // Approximation of 5/12 months
|
||||
result := YearDifference(t1, t2, time.UTC)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceAcrossYears(t *testing.T) {
|
||||
t1 := time.Date(2021, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
t2 := time.Date(2020, 6, 1, 0, 0, 0, 0, time.UTC)
|
||||
expected := 0.5833333333333334 // Approximation of 7/12 months
|
||||
result := YearDifference(t1, t2, time.UTC)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceWithTimezone(t *testing.T) {
|
||||
tz, _ := time.LoadLocation("America/New_York")
|
||||
t1 := time.Date(2021, 1, 1, 0, 0, 0, 0, tz)
|
||||
t2 := time.Date(2020, 6, 1, 0, 0, 0, 0, tz)
|
||||
expected := 0.5833333333333334 // Same as UTC but ensuring timezone is considered
|
||||
result := YearDifference(t1, t2, tz)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceWithNegativeDifference(t *testing.T) {
|
||||
t1 := time.Date(2020, 1, 1, 0, 0, 0, 0, TimezoneBerlin)
|
||||
t2 := time.Date(2021, 1, 1, 0, 0, 0, 0, TimezoneBerlin)
|
||||
expected := -1.0
|
||||
result := YearDifference(t1, t2, TimezoneBerlin)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestYearDifferenceWithNegativeDifference2(t *testing.T) {
|
||||
t1 := time.Date(2020, 7, 1, 0, 0, 0, 0, TimezoneBerlin)
|
||||
t2 := time.Date(2021, 7, 1, 0, 0, 0, 0, TimezoneBerlin)
|
||||
expected := -1.0
|
||||
result := YearDifference(t1, t2, TimezoneBerlin)
|
||||
if !epsilonEquals(result, expected) {
|
||||
t.Errorf("Expected %v, got %v", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func epsilonEquals(a, b float64) bool {
|
||||
epsilon := 0.01
|
||||
return math.Abs(a-b) < epsilon
|
||||
}
|
||||
Reference in New Issue
Block a user