File: tags_test.go

package info (click to toggle)
deck 1.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,080 kB
  • sloc: makefile: 17; sh: 3
file content (92 lines) | stat: -rw-r--r-- 1,777 bytes parent folder | download | duplicates (2)
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))
}