lntypes+routing: add generic Min/Max functions

This commit is contained in:
bitromortac committed 2022-12-12 13:22:28 +01:00
1 parent e96d48e3a8
commit 99273cc5e1
3 files changed
+56 -6

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
package lntypes
import "golang.org/x/exp/constraints"
// Number defines a type constraint for numbers.
type Number interface {
constraints.Integer | constraints.Float
}
// Max returns the greater of the two inputs.
func Max[N Number](op1 N, op2 N) N {
if op1 > op2 {
return op1
}
return op2
}
// Min returns the lesser of the two inputs.
func Min[N Number](op1 N, op2 N) N {
if op1 < op2 {
return op1
}
return op2
}
+25
View File
@@ -0,0 +1,25 @@
package lntypes
import (
"testing"
"github.com/stretchr/testify/require"
)
// TestMin tests getting correct minimal numbers.
func TestMin(t *testing.T) {
t.Parallel()
require.Equal(t, 1, Min(1, 1))
require.Equal(t, 1, Min(1, 2))
require.Equal(t, 1.5, Min(1.5, 2.5))
}
// TestMax tests getting correct maximal numbers.
func TestMax(t *testing.T) {
t.Parallel()
require.Equal(t, 1, Max(1, 1))
require.Equal(t, 2, Max(1, 2))
require.Equal(t, 2.5, Max(1.5, 2.5))
}