mirror of https://github.com/tailscale/tailscale/
types/bools: add Compare to compare boolean values (#13792)
The bools.Compare function compares boolean values by reporting -1, 0, +1 for ordering so that it can be easily used with slices.SortFunc. Updates #cleanup Updates tailscale/corp#11038 Signed-off-by: Joe Tsai <joetsai@digital-static.net>pull/13831/head
parent
f07ff47922
commit
ecc8035f73
@ -0,0 +1,17 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Package bools contains the bools.Compare function.
|
||||
package bools
|
||||
|
||||
// Compare compares two boolean values as if false is ordered before true.
|
||||
func Compare[T ~bool](x, y T) int {
|
||||
switch {
|
||||
case x == false && y == true:
|
||||
return -1
|
||||
case x == true && y == false:
|
||||
return +1
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package bools
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestCompare(t *testing.T) {
|
||||
if got := Compare(false, false); got != 0 {
|
||||
t.Errorf("Compare(false, false) = %v, want 0", got)
|
||||
}
|
||||
if got := Compare(false, true); got != -1 {
|
||||
t.Errorf("Compare(false, true) = %v, want -1", got)
|
||||
}
|
||||
if got := Compare(true, false); got != +1 {
|
||||
t.Errorf("Compare(true, false) = %v, want +1", got)
|
||||
}
|
||||
if got := Compare(true, true); got != 0 {
|
||||
t.Errorf("Compare(true, true) = %v, want 0", got)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue