@@ -9,67 +9,95 @@ import (
9
9
10
10
var _ = Describe ("ArrayInsertion" , func () {
11
11
Describe ("Concrete" , func () {
12
+ act := func (insertion ArrayInsertion , array []interface {}, obj interface {}) ([]interface {}, error ) {
13
+ insertion .Array = array
14
+
15
+ idx , err := insertion .Concrete ()
16
+ if err != nil {
17
+ return nil , err
18
+ }
19
+
20
+ return idx .Update (array , obj ), nil
21
+ }
22
+
12
23
It ("returns specified index when not using any modifiers" , func () {
13
- idx := ArrayInsertion {Index : 1 , Modifiers : []Modifier {}, Array : []interface {}{1 , 2 , 3 }}
14
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {1 , false }))
24
+ result , err := act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {}}, []interface {}{1 , 2 , 3 }, 10 )
25
+ Expect (err ).ToNot (HaveOccurred ())
26
+ Expect (result ).To (Equal ([]interface {}{1 , 10 , 3 }))
15
27
})
16
28
17
29
It ("returns index adjusted for previous and next modifiers" , func () {
18
30
p := PrevModifier {}
19
31
n := NextModifier {}
20
32
21
- idx := ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n }, Array : []interface {}{1 , 2 , 3 }}
22
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {2 , false }))
33
+ result , err := act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n }}, []interface {}{1 , 2 , 3 }, 10 )
34
+ Expect (err ).ToNot (HaveOccurred ())
35
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 10 }))
23
36
})
24
37
25
38
It ("returns error if both after and before are used" , func () {
26
- idx := ArrayInsertion {Index : 0 , Modifiers : []Modifier {BeforeModifier {}, AfterModifier {}}, Array : []interface {}{}}
27
- _ , err := idx .Concrete ()
39
+ _ , err := act (ArrayInsertion {Index : 0 , Modifiers : []Modifier {BeforeModifier {}, AfterModifier {}}}, []interface {}{}, 10 )
28
40
Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'before' modifier, but found modifier 'patch.AfterModifier'" ))
29
41
30
- idx = ArrayInsertion {Index : 0 , Modifiers : []Modifier {AfterModifier {}, BeforeModifier {}}, Array : []interface {}{}}
31
- _ , err = idx .Concrete ()
42
+ _ , err = act (ArrayInsertion {Index : 0 , Modifiers : []Modifier {AfterModifier {}, BeforeModifier {}}}, []interface {}{}, 10 )
32
43
Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'after' modifier, but found modifier 'patch.BeforeModifier'" ))
33
44
34
- idx = ArrayInsertion {Index : 0 , Modifiers : []Modifier {AfterModifier {}, PrevModifier {}}, Array : []interface {}{}}
35
- _ , err = idx .Concrete ()
45
+ _ , err = act (ArrayInsertion {Index : 0 , Modifiers : []Modifier {AfterModifier {}, PrevModifier {}}}, []interface {}{}, 10 )
36
46
Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'after' modifier, but found modifier 'patch.PrevModifier'" ))
37
47
})
38
48
39
49
It ("returns (0, true) when inserting in the beginning" , func () {
40
- idx := ArrayInsertion {Index : 0 , Modifiers : []Modifier {BeforeModifier {}}, Array : []interface {}{1 , 2 , 3 }}
41
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {0 , true }))
50
+ result , err := act (ArrayInsertion {Index : 0 , Modifiers : []Modifier {BeforeModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
51
+ Expect (err ).ToNot (HaveOccurred ())
52
+ Expect (result ).To (Equal ([]interface {}{10 , 1 , 2 , 3 }))
53
+
54
+ result , err = act (ArrayInsertion {Index : 0 , Modifiers : []Modifier {AfterModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
55
+ Expect (err ).ToNot (HaveOccurred ())
56
+ Expect (result ).To (Equal ([]interface {}{1 , 10 , 2 , 3 }))
42
57
})
43
58
44
- It ("returns (last+1, true) when inserting in the end" , func () {
45
- idx := ArrayInsertion {Index : 2 , Modifiers : []Modifier {AfterModifier {}}, Array : []interface {}{1 , 2 , 3 }}
46
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {3 , true }))
59
+ It ("returns (last, true) when inserting in the end" , func () {
60
+ result , err := act (ArrayInsertion {Index : 2 , Modifiers : []Modifier {AfterModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
61
+ Expect (err ).ToNot (HaveOccurred ())
62
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 3 , 10 }))
47
63
48
- idx = ArrayInsertion {Index : - 1 , Modifiers : []Modifier {AfterModifier {}}, Array : []interface {}{1 , 2 , 3 }}
49
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {3 , true }))
64
+ result , err = act (ArrayInsertion {Index : - 1 , Modifiers : []Modifier {AfterModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
65
+ Expect (err ).ToNot (HaveOccurred ())
66
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 3 , 10 }))
50
67
})
51
68
52
- It ("returns (mid+1, true) when inserting in the middle" , func () {
53
- idx := ArrayInsertion {Index : 1 , Modifiers : []Modifier {AfterModifier {}}, Array : []interface {}{1 , 2 , 3 }}
54
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {2 , true }))
69
+ It ("returns (mid, true) when inserting in the middle" , func () {
70
+ result , err := act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {AfterModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
71
+ Expect (err ).ToNot (HaveOccurred ())
72
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 10 , 3 }))
73
+
74
+ result , err = act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {BeforeModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
75
+ Expect (err ).ToNot (HaveOccurred ())
76
+ Expect (result ).To (Equal ([]interface {}{1 , 10 , 2 , 3 }))
77
+
78
+ result , err = act (ArrayInsertion {Index : 2 , Modifiers : []Modifier {BeforeModifier {}}}, []interface {}{1 , 2 , 3 }, 10 )
79
+ Expect (err ).ToNot (HaveOccurred ())
80
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 10 , 3 }))
55
81
})
56
82
57
83
It ("returns index adjusted for previous, next modifiers and before modifier" , func () {
58
84
p := PrevModifier {}
59
85
n := NextModifier {}
60
86
b := BeforeModifier {}
61
87
62
- idx := ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n , b }, Array : []interface {}{1 , 2 , 3 }}
63
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {1 , true }))
88
+ result , err := act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n , b }}, []interface {}{1 , 2 , 3 }, 10 )
89
+ Expect (err ).ToNot (HaveOccurred ())
90
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 10 , 3 }))
64
91
})
65
92
66
93
It ("returns index adjusted for previous, next modifiers and after modifier" , func () {
67
94
p := PrevModifier {}
68
95
n := NextModifier {}
69
96
a := AfterModifier {}
70
97
71
- idx := ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n , a }, Array : []interface {}{1 , 2 , 3 }}
72
- Expect (idx .Concrete ()).To (Equal (ArrayInsertionIndex {3 , true }))
98
+ result , err := act (ArrayInsertion {Index : 1 , Modifiers : []Modifier {p , n , n , a }}, []interface {}{1 , 2 , 3 }, 10 )
99
+ Expect (err ).ToNot (HaveOccurred ())
100
+ Expect (result ).To (Equal ([]interface {}{1 , 2 , 3 , 10 }))
73
101
})
74
102
})
75
103
})
0 commit comments