lntypes+routing: add generic Min/Max functions
This commit is contained in:
3 files changed
+56
-6
No files matched your search
@@ -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
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
Reference in new issue
Block a user