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
Joe Tsai 1 month ago committed by GitHub
parent f07ff47922
commit ecc8035f73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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…
Cancel
Save