1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
package utils
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestMergeTags(t *testing.T) {
type Foo struct {
Tags []*string
}
type Bar struct{}
assert := assert.New(t)
a := "tag1"
b := "tag2"
c := "tag3"
var f Foo
err := MergeTags(f, []string{"tag1"})
assert.NotNil(err)
assert.Panics(func() {
MustMergeTags(f, []string{"tag1"})
})
var bar Bar
err = MergeTags(&bar, []string{"tag1"})
assert.Nil(err)
f = Foo{Tags: []*string{&a, &b}}
assert.Nil(MergeTags(&f, []string{"tag1", "tag2", "tag3"}))
assert.True(equalArray([]*string{&a, &b, &c}, f.Tags))
f = Foo{Tags: []*string{}}
assert.Nil(MergeTags(&f, []string{"tag1", "tag2", "tag3"}))
assert.True(equalArray([]*string{&a, &b, &c}, f.Tags))
f = Foo{Tags: []*string{&a, &b}}
assert.Nil(MergeTags(&f, nil))
assert.True(equalArray([]*string{&a, &b}, f.Tags))
}
func equalArray(want, have []*string) bool {
if len(want) != len(have) {
return false
}
for i := 0; i < len(want); i++ {
if *want[i] != *have[i] {
return false
}
}
return true
}
func TestRemoveTags(t *testing.T) {
type Foo struct {
Tags []*string
}
type Bar struct{}
assert := assert.New(t)
a := "tag1"
b := "tag2"
var f Foo
err := RemoveTags(f, []string{"tag1"})
assert.NotNil(err)
assert.Panics(func() {
MustRemoveTags(f, []string{"tag1"})
})
var bar Bar
err = RemoveTags(&bar, []string{"tag1"})
assert.Nil(err)
f = Foo{Tags: []*string{&a, &b}}
RemoveTags(&f, []string{"tag2", "tag3"})
assert.True(equalArray([]*string{&a}, f.Tags))
f = Foo{Tags: []*string{}}
RemoveTags(&f, []string{"tag1", "tag2", "tag3"})
assert.True(equalArray([]*string{}, f.Tags))
f = Foo{Tags: []*string{&a, &b}}
RemoveTags(&f, nil)
assert.True(equalArray([]*string{&a, &b}, f.Tags))
}
|