Moved logic of collapsing songs into albums to model package
(it should really be called domain.... maybe will rename it later)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package number
|
||||
|
||||
import "golang.org/x/exp/constraints"
|
||||
|
||||
func Min[T constraints.Ordered](vs ...T) T {
|
||||
if len(vs) == 0 {
|
||||
var zero T
|
||||
return zero
|
||||
}
|
||||
min := vs[0]
|
||||
for _, v := range vs[1:] {
|
||||
if v < min {
|
||||
min = v
|
||||
}
|
||||
}
|
||||
return min
|
||||
}
|
||||
|
||||
func Max[T constraints.Ordered](vs ...T) T {
|
||||
if len(vs) == 0 {
|
||||
var zero T
|
||||
return zero
|
||||
}
|
||||
max := vs[0]
|
||||
for _, v := range vs[1:] {
|
||||
if v > max {
|
||||
max = v
|
||||
}
|
||||
}
|
||||
return max
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package number_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/navidrome/navidrome/utils/number"
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestNumber(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "Number Suite")
|
||||
}
|
||||
|
||||
var _ = Describe("Min", func() {
|
||||
It("returns zero value if no arguments are passed", func() {
|
||||
Expect(number.Min[int]()).To(BeZero())
|
||||
})
|
||||
It("returns the smallest int", func() {
|
||||
Expect(number.Min(1, 2)).To(Equal(1))
|
||||
})
|
||||
It("returns the smallest float", func() {
|
||||
Expect(number.Min(-4.1, -4.2, -4.0)).To(Equal(-4.2))
|
||||
})
|
||||
})
|
||||
|
||||
var _ = Describe("Max", func() {
|
||||
It("returns zero value if no arguments are passed", func() {
|
||||
Expect(number.Max[int]()).To(BeZero())
|
||||
})
|
||||
It("returns the biggest int", func() {
|
||||
Expect(number.Max(1, 2)).To(Equal(2))
|
||||
})
|
||||
It("returns the biggest float", func() {
|
||||
Expect(number.Max(-4.1, -4.2, -4.0)).To(Equal(-4.0))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user