@@ -9,67 +9,95 @@ import (
99
1010var _ = Describe ("ArrayInsertion" , func () {
1111 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+
1223 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 }))
1527 })
1628
1729 It ("returns index adjusted for previous and next modifiers" , func () {
1830 p := PrevModifier {}
1931 n := NextModifier {}
2032
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 }))
2336 })
2437
2538 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 )
2840 Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'before' modifier, but found modifier 'patch.AfterModifier'" ))
2941
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 )
3243 Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'after' modifier, but found modifier 'patch.BeforeModifier'" ))
3344
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 )
3646 Expect (err .Error ()).To (Equal ("Expected to not find any modifiers after 'after' modifier, but found modifier 'patch.PrevModifier'" ))
3747 })
3848
3949 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 }))
4257 })
4358
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 }))
4763
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 }))
5067 })
5168
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 }))
5581 })
5682
5783 It ("returns index adjusted for previous, next modifiers and before modifier" , func () {
5884 p := PrevModifier {}
5985 n := NextModifier {}
6086 b := BeforeModifier {}
6187
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 }))
6491 })
6592
6693 It ("returns index adjusted for previous, next modifiers and after modifier" , func () {
6794 p := PrevModifier {}
6895 n := NextModifier {}
6996 a := AfterModifier {}
7097
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 }))
73101 })
74102 })
75103})
0 commit comments