feat(tags): Create Flatten() method

This commit is contained in:
Quentin Lemaire 2020-12-28 16:16:10 +01:00
parent 9c41e4a343
commit 334d8ce724
No known key found for this signature in database
GPG key ID: 5A99AA8DCE71630E
2 changed files with 59 additions and 0 deletions

View file

@ -40,6 +40,20 @@ func (l TagLists) String() string {
return fmt.Sprintf("%v", []TagList(l)) return fmt.Sprintf("%v", []TagList(l))
} }
// Flatten returns the list of all tags provided in TagLists
func (l TagLists) Flatten() (tags TagList) {
tags = make([]string, 0)
for _, list := range l {
for _, tag := range list {
if tag != "" {
tags = append(tags, tag)
}
}
}
return tags
}
// Set updates the TagList's value. // Set updates the TagList's value.
func (l *TagLists) Set(s string) error { func (l *TagLists) Set(s string) error {
*l = append(*l, splitTagList(s)) *l = append(*l, splitTagList(s))

View file

@ -0,0 +1,45 @@
package restic
import (
rtest "github.com/restic/restic/internal/test"
"testing"
)
func TestTagLists_Flatten(t *testing.T) {
tests := []struct {
name string
l TagLists
want TagList
}{
{
name: "4 tags",
l: TagLists{
TagList{
"tag1",
"tag2",
},
TagList{
"tag3",
"tag4",
},
},
want: TagList{"tag1", "tag2", "tag3", "tag4"},
},
{
name: "No tags",
l: nil,
want: TagList{},
},
{
name: "Empty tags",
l: TagLists{[]string{""}},
want: TagList{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.l.Flatten()
rtest.Equals(t, got, tt.want)
})
}
}