Commit dbed8eed authored by Carter's avatar Carter Committed by GitHub

Cleanup stringer types with ~string generic (#6920)

* Cleanup stringer types with ~string generic

* Fix linter error
parent 4af15d02
package enum package enum
import ( import (
"fmt"
"strings" "strings"
) )
// Stringered wraps the string type to implement the fmt.Stringer interface.
type Stringered string
// String returns the string value.
func (s Stringered) String() string {
return string(s)
}
// StringeredList converts a list of strings to a list of Stringered.
func StringeredList(values []string) []Stringered {
var out []Stringered
for _, v := range values {
out = append(out, Stringered(v))
}
return out
}
// EnumString returns a comma-separated string of the enum values. // EnumString returns a comma-separated string of the enum values.
// This is primarily used to generate a cli flag. // This is primarily used to generate a cli flag.
func EnumString[T fmt.Stringer](values []T) string { func EnumString[T ~string](values []T) string {
var out strings.Builder var out strings.Builder
for i, v := range values { for i, v := range values {
out.WriteString(v.String()) out.WriteString(string(v))
if i+1 < len(values) { if i+1 < len(values) {
out.WriteString(", ") out.WriteString(", ")
} }
......
...@@ -8,30 +8,15 @@ import ( ...@@ -8,30 +8,15 @@ import (
// TestEnumString_MultipleInputs tests the EnumString function with multiple inputs. // TestEnumString_MultipleInputs tests the EnumString function with multiple inputs.
func TestEnumString_MultipleInputs(t *testing.T) { func TestEnumString_MultipleInputs(t *testing.T) {
require.Equal(t, "a, b, c", EnumString([]Stringered{"a", "b", "c"})) require.Equal(t, "a, b, c", EnumString([]string{"a", "b", "c"}))
} }
// TestEnumString_SingleString tests the EnumString function with a single input. // TestEnumString_SingleString tests the EnumString function with a single input.
func TestEnumString_SingleString(t *testing.T) { func TestEnumString_SingleString(t *testing.T) {
require.Equal(t, "a", EnumString([]Stringered{"a"})) require.Equal(t, "a", EnumString([]string{"a"}))
} }
// TestEnumString_EmptyString tests the EnumString function with no inputs. // TestEnumString_EmptyString tests the EnumString function with no inputs.
func TestEnumString_EmptyString(t *testing.T) { func TestEnumString_EmptyString(t *testing.T) {
require.Equal(t, "", EnumString([]Stringered{})) require.Equal(t, "", EnumString([]string{}))
}
// TestStringeredList_MultipleInputs tests the StringeredList function with multiple inputs.
func TestStringeredList_MultipleInputs(t *testing.T) {
require.Equal(t, []Stringered{"a", "b", "c"}, StringeredList([]string{"a", "b", "c"}))
}
// TestStringeredList_SingleString tests the StringeredList function with a single input.
func TestStringeredList_SingleString(t *testing.T) {
require.Equal(t, []Stringered{"a"}, StringeredList([]string{"a"}))
}
// TestStringeredList_EmptyString tests the StringeredList function with no inputs.
func TestStringeredList_EmptyString(t *testing.T) {
require.Equal(t, []Stringered(nil), StringeredList([]string{}))
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment