Skip to content
This repository was archived by the owner on Mar 11, 2021. It is now read-only.

Commit d867145

Browse files
Added removeElement() test.
1 parent 35e6034 commit d867145

File tree

1 file changed

+93
-9
lines changed

1 file changed

+93
-9
lines changed

actions/rules/action_state_to_metastate_test.go

Lines changed: 93 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package rules
22

33
import (
4+
"fmt"
45
"testing"
56

67
"github.com/fabric8-services/fabric8-wit/actions/change"
@@ -23,6 +24,18 @@ type ActionStateToMetastateSuite struct {
2324
gormtestsupport.DBTestSuite
2425
}
2526

27+
func ArrayEquals(a []interface{}, b []interface{}) bool {
28+
if len(a) != len(b) {
29+
return false
30+
}
31+
for i, v := range a {
32+
if v != b[i] {
33+
return false
34+
}
35+
}
36+
return true
37+
}
38+
2639
func (s *ActionStateToMetastateSuite) TestContainsElement() {
2740
s.T().Run("contains an element", func(t *testing.T) {
2841
fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment())
@@ -80,12 +93,23 @@ func (s *ActionStateToMetastateSuite) TestRemoveElement() {
8093
a = append(a, 2)
8194
a = append(a, 3)
8295
a = append(a, 2)
83-
a = action.removeElement(a, 2)
84-
require.Len(t, a, 3)
85-
require.False(t, action.contains(a, 2))
8696
a = action.removeElement(a, 1)
87-
require.Len(t, a, 2)
88-
require.False(t, action.contains(a, 1))
97+
var expected []interface{}
98+
expected = append(expected, 0)
99+
expected = append(expected, 2)
100+
expected = append(expected, 3)
101+
expected = append(expected, 2)
102+
require.Len(t, a, 4)
103+
require.True(t, ArrayEquals(expected, a))
104+
a = action.removeElement(a, 3)
105+
expected = []interface{}{}
106+
expected = append(expected, 0)
107+
expected = append(expected, 2)
108+
expected = append(expected, 2)
109+
require.Len(t, a, 3)
110+
fmt.Println(expected)
111+
fmt.Println(a)
112+
require.True(t, ArrayEquals(expected, a))
89113
})
90114
s.T().Run("removing a non-existing element", func(t *testing.T) {
91115
fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment())
@@ -104,10 +128,70 @@ func (s *ActionStateToMetastateSuite) TestRemoveElement() {
104128
a = append(a, 2)
105129
a = action.removeElement(a, 4)
106130
require.Len(t, a, 5)
107-
require.True(t, action.contains(a, 0))
108-
require.True(t, action.contains(a, 1))
109-
require.True(t, action.contains(a, 2))
110-
require.True(t, action.contains(a, 3))
131+
var expected []interface{}
132+
expected = append(expected, 0)
133+
expected = append(expected, 1)
134+
expected = append(expected, 2)
135+
expected = append(expected, 3)
136+
expected = append(expected, 2)
137+
require.True(t, ArrayEquals(expected, a))
138+
})
139+
s.T().Run("removing a duplicate element", func(t *testing.T) {
140+
fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment())
141+
action := ActionStateToMetaState{
142+
Db: s.GormDB,
143+
Ctx: s.Ctx,
144+
UserID: &fxt.Identities[0].ID,
145+
}
146+
// there is no other way of creating an []interface{}.
147+
// but we have plenty of memory, so be it.
148+
var a []interface{}
149+
a = append(a, 0)
150+
a = append(a, 1)
151+
a = append(a, 2)
152+
a = append(a, 3)
153+
a = append(a, 2)
154+
a = action.removeElement(a, 2)
155+
var expected []interface{}
156+
expected = append(expected, 0)
157+
expected = append(expected, 1)
158+
expected = append(expected, 3)
159+
require.Len(t, a, 3)
160+
require.True(t, ArrayEquals(expected, a))
161+
})
162+
}
163+
164+
func (s *ActionStateToMetastateSuite) TestDifference() {
165+
s.T().Run("finding differences", func(t *testing.T) {
166+
fxt := tf.NewTestFixture(t, s.DB, tf.CreateWorkItemEnvironment())
167+
action := ActionStateToMetaState{
168+
Db: s.GormDB,
169+
Ctx: s.Ctx,
170+
UserID: &fxt.Identities[0].ID,
171+
}
172+
// there is no other way of creating an []interface{}.
173+
// but we have plenty of memory, so be it.
174+
var a []interface{}
175+
a = append(a, 0)
176+
a = append(a, 1)
177+
a = append(a, 2)
178+
a = append(a, 3)
179+
a = append(a, 2)
180+
var b []interface{}
181+
b = append(b, 2)
182+
b = append(b, 3)
183+
b = append(b, 5)
184+
added, removed := action.difference(a, b)
185+
require.Len(t, added, 1)
186+
require.Len(t, removed, 2)
187+
// wasting plenty more memory here
188+
var expectedAdded []interface{}
189+
expectedAdded = append(expectedAdded, 5)
190+
var expectedRemoved []interface{}
191+
expectedRemoved = append(expectedRemoved, 0)
192+
expectedRemoved = append(expectedRemoved, 1)
193+
require.True(t, ArrayEquals(added, expectedAdded))
194+
require.True(t, ArrayEquals(removed, expectedRemoved))
111195
})
112196
}
113197

0 commit comments

Comments
 (0)