Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
4ef5f6059b
|
|||
b23a444aa2
|
@@ -46,7 +46,7 @@ var rexEnumPackage = rext.W(regexp.MustCompile(`^package\s+(?P<name>[A-Za-z0-9_]
|
|||||||
|
|
||||||
var rexEnumDef = rext.W(regexp.MustCompile(`^\s*type\s+(?P<name>[A-Za-z0-9_]+)\s+(?P<type>[A-Za-z0-9_]+)\s*//\s*(@enum:type).*$`))
|
var rexEnumDef = rext.W(regexp.MustCompile(`^\s*type\s+(?P<name>[A-Za-z0-9_]+)\s+(?P<type>[A-Za-z0-9_]+)\s*//\s*(@enum:type).*$`))
|
||||||
|
|
||||||
var rexEnumValueDef = rext.W(regexp.MustCompile(`^\s*(?P<name>[A-Za-z0-9_]+)\s+(?P<type>[A-Za-z0-9_]+)\s*=\s*(?P<value>("[@A-Za-z0-9_:\s\-.]*"|[0-9]+))\s*(//(?P<comm>.*))?.*$`))
|
var rexEnumValueDef = rext.W(regexp.MustCompile(`^\s*(?P<name>[A-Za-z0-9_]+)\s+(?P<type>[A-Za-z0-9_]+)\s*=\s*(?P<value>("[/@A-Za-z0-9_:\s\-.]*"|[0-9]+))\s*(//(?P<comm>.*))?.*$`))
|
||||||
|
|
||||||
var rexEnumChecksumConst = rext.W(regexp.MustCompile(`const ChecksumEnumGenerator = "(?P<cs>[A-Za-z0-9_]*)"`))
|
var rexEnumChecksumConst = rext.W(regexp.MustCompile(`const ChecksumEnumGenerator = "(?P<cs>[A-Za-z0-9_]*)"`))
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
package goext
|
package goext
|
||||||
|
|
||||||
const GoextVersion = "0.0.585"
|
const GoextVersion = "0.0.587"
|
||||||
|
|
||||||
const GoextVersionTimestamp = "2025-07-04T11:46:00+0200"
|
const GoextVersionTimestamp = "2025-07-06T22:24:44+0200"
|
||||||
|
@@ -148,12 +148,16 @@ func Avg(v ...time.Time) time.Time {
|
|||||||
return time.Time{}
|
return time.Time{}
|
||||||
}
|
}
|
||||||
|
|
||||||
var sum int64
|
t0 := v[0].UnixNano()
|
||||||
|
|
||||||
|
var dsum int64
|
||||||
for _, t := range v {
|
for _, t := range v {
|
||||||
sum += t.UnixNano()
|
dsum += t.UnixNano() - t0
|
||||||
}
|
}
|
||||||
|
|
||||||
return time.Unix(0, sum/int64(len(v)))
|
tAvg := t0 + (dsum / int64(len(v)))
|
||||||
|
|
||||||
|
return time.Unix(0, tAvg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Median(v ...time.Time) time.Time {
|
func Median(v ...time.Time) time.Time {
|
||||||
|
@@ -242,6 +242,25 @@ func TestAvg_MultipleValues(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAvg_ManyValues(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)
|
||||||
|
t3 := time.Date(2022, 1, 3, 0, 0, 0, 0, time.UTC)
|
||||||
|
t4 := time.Date(2022, 1, 4, 0, 0, 0, 0, time.UTC)
|
||||||
|
t5 := time.Date(2022, 1, 5, 0, 0, 0, 0, time.UTC)
|
||||||
|
t6 := time.Date(2022, 1, 6, 0, 0, 0, 0, time.UTC)
|
||||||
|
t7 := time.Date(2022, 1, 7, 0, 0, 0, 0, time.UTC)
|
||||||
|
t8 := time.Date(2022, 1, 8, 0, 0, 0, 0, time.UTC)
|
||||||
|
t9 := time.Date(2022, 1, 9, 0, 0, 0, 0, time.UTC)
|
||||||
|
|
||||||
|
expected := time.Date(2022, 1, 5, 0, 0, 0, 0, time.UTC)
|
||||||
|
result := Avg(t1, t2, t3, t4, t5, t6, t7, t8, t9)
|
||||||
|
|
||||||
|
if !result.Equal(expected) {
|
||||||
|
t.Errorf("Expected %v but got %v", expected, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestAvg_TwoValues(t *testing.T) {
|
func TestAvg_TwoValues(t *testing.T) {
|
||||||
t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
|
t1 := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||||
t2 := time.Date(2022, 1, 3, 0, 0, 0, 0, time.UTC)
|
t2 := time.Date(2022, 1, 3, 0, 0, 0, 0, time.UTC)
|
||||||
|
Reference in New Issue
Block a user