@@ -9,125 +9,154 @@ import (
99// AssertData is used to for converting interface objects to
1010// map of interfaces or array of interfaces
1111type AssertData struct {
12- D0 map [string ]string
13- A0 []string
14- Error error
15- Cache Cache
12+ d0 map [string ]string
13+ s0 * string
14+ s1 []string
15+ i0 * int
16+ i1 []int
17+ cache Cache
1618}
1719
1820// NewConvertFactory for initializing AssertData
1921func NewConvertFactory () * AssertData {
20- assertData := & AssertData {
21- D0 : make (map [string ]string ),
22- A0 : make ([]string , 0 ),
23- Cache : NewCacheFactory (),
22+ ad := & AssertData {
23+ d0 : make (map [string ]string ),
24+ s1 : make ([]string , 0 ),
25+ cache : NewCacheFactory (),
2426 }
25- return assertData
27+ return ad
2628}
2729
2830// Clear for resetting AssertData
2931func (a * AssertData ) Clear () {
30- a .Cache .Clear ()
31- a .D0 = make (map [string ]string )
32- a .A0 = make ([]string , 0 )
32+ a .cache .Clear ()
33+ a .d0 = make (map [string ]string )
34+ a .s1 = make ([]string , 0 )
35+ a .i1 = make ([]int , 0 )
36+ a .i0 = nil
37+ a .s0 = nil
38+ }
39+
40+ // GetError returns the any error set to AssertData
41+ func (a * AssertData ) GetError () error {
42+ return a .cache .GetError ()
43+ }
44+
45+ func (a * AssertData ) setErr (e ... error ) * AssertData {
46+ if len (e ) > 0 {
47+ a .cache .E = e [0 ]
48+ }
49+ return a
3350}
3451
3552// Input sets a data source that can be used for assertion
3653func (a * AssertData ) Input (o interface {}) * AssertData {
3754 a .Clear ()
38- a .Cache .V1 = o
55+ a .cache .V1 = o
3956 return a
4057}
4158
42- func (a * AssertData ) toBytes () {
43- a .Cache .B , a .Cache .E = yaml .Marshal (a .Cache .V1 )
44- if a .Cache .E != nil {
45- a .Error = a .Cache .E
59+ // GetString asserts the input as string
60+ func (a * AssertData ) GetString () (string , error ) {
61+ if a .GetError () != nil {
62+ return "" , a .GetError ()
63+ }
64+
65+ s , isString := a .cache .V1 .(string )
66+ if ! isString {
67+ a .setErr (wrapErr (fmt .Errorf (notAType , "string" ), getFn ()))
68+ return "" , a .GetError ()
4669 }
70+
71+ return s , nil
72+ }
73+
74+ // GetInt asserts the input as int
75+ func (a * AssertData ) GetInt () (int , error ) {
76+ if a .GetError () != nil {
77+ return 0 , a .GetError ()
78+ }
79+
80+ i , isInt := a .cache .V1 .(int )
81+ if ! isInt {
82+ a .setErr (wrapErr (fmt .Errorf (notAType , "int" ), getFn ()))
83+ return 0 , a .GetError ()
84+ }
85+
86+ return i , nil
4787}
4888
4989// GetMap for converting a map[interface{}]interface{} into a map[string]string
50- func (a * AssertData ) GetMap () map [string ]string {
51- if a .Cache .E != nil {
52- a .Error = a .Cache .E
53- return nil
90+ func (a * AssertData ) GetMap () (map [string ]string , error ) {
91+ if a .GetError () != nil {
92+ return nil , a .GetError ()
5493 }
5594
56- a .toBytes ( )
57- if a .Cache . E != nil {
58- return nil
95+ a .cache . B , a . cache . E = yaml . Marshal ( a . cache . V1 )
96+ if a .GetError () != nil {
97+ return nil , a . GetError ()
5998 }
6099
61- a .Cache .E = yaml .Unmarshal (a .Cache .B , & a .D0 )
62- if a .Cache .E != nil {
63- a .Error = a .Cache .E
64- return nil
100+ a .cache .E = yaml .Unmarshal (a .cache .B , & a .d0 )
101+ if a .GetError () != nil {
102+ return nil , a .GetError ()
65103 }
66- return a .D0
104+ return a .d0 , nil
67105}
68106
69107// GetArray for converting a []interface{} to []string
70- func (a * AssertData ) GetArray () []string {
71- if a .Cache .E != nil {
72- a .Error = a .Cache .E
73- return nil
108+ func (a * AssertData ) GetArray () ([]string , error ) {
109+ if a .GetError () != nil {
110+ return nil , a .GetError ()
74111 }
75112
76- _ , isArray := a .Cache .V1 .([]interface {})
113+ _ , isArray := a .cache .V1 .([]interface {})
77114 if ! isArray {
78- a .Cache .E = wrapErr (fmt .Errorf (notArrayObj ), getFn ())
79- a .Error = a .Cache .E
80- return nil
115+ a .setErr (wrapErr (fmt .Errorf (notArrayObj ), getFn ()))
116+ return nil , a .GetError ()
81117 }
82118
83- a .toBytes ( )
84- if a .Cache . E != nil {
85- return nil
119+ a .cache . B , a . cache . E = yaml . Marshal ( a . cache . V1 )
120+ if a .GetError () != nil {
121+ return nil , a . GetError ()
86122 }
87123
88- a .Cache .E = yaml .Unmarshal (a .Cache .B , & a .A0 )
89- if a .Cache .E != nil {
90- a .Error = a .Cache .E
91- return nil
124+ a .cache .E = yaml .Unmarshal (a .cache .B , & a .s1 )
125+ if a .GetError () != nil {
126+ return nil , a .GetError ()
92127 }
93128
94- return a .A0
129+ return a .s1 , nil
95130}
96131
97132// Key copies initial interface object and returns a map of interfaces{}
98133// Used to easily pipe interfaces
99134func (a * AssertData ) Key (k string ) * AssertData {
100- if a .Cache .E != nil {
101- a .Error = a .Cache .E
135+ if a .GetError () != nil {
102136 return a
103137 }
104138
105- _ , isMap := a .Cache .V1 .(map [interface {}]interface {})
139+ _ , isMap := a .cache .V1 .(map [interface {}]interface {})
106140 if ! isMap {
107- a .Cache .E = wrapErr (fmt .Errorf (notAMap ), getFn ())
108- a .Error = a .Cache .E
109- return a
141+ return a .setErr (wrapErr (fmt .Errorf (notAMap ), getFn ()))
110142 }
111143
112- a .Cache .V1 = a .Cache .V1 .(map [interface {}]interface {})[k ]
144+ a .cache .V1 = a .cache .V1 .(map [interface {}]interface {})[k ]
113145
114146 return a
115147}
116148
117149// Index getting an interface{} from a []interface{}
118150func (a * AssertData ) Index (i int ) * AssertData {
119- if a .Cache .E != nil {
120- a .Error = a .Cache .E
151+ if a .GetError () != nil {
121152 return a
122153 }
123154
124- _ , isArray := a .Cache .V1 .([]interface {})
155+ _ , isArray := a .cache .V1 .([]interface {})
125156 if ! isArray {
126- a .Cache .E = wrapErr (fmt .Errorf (notArrayObj ), getFn ())
127- a .Error = a .Cache .E
128- return a
157+ return a .setErr (wrapErr (fmt .Errorf (notArrayObj ), getFn ()))
129158 }
130- a .Cache .V1 = a .Cache .V1 .([]interface {})[i ]
159+ a .cache .V1 = a .cache .V1 .([]interface {})[i ]
131160
132161 return a
133162}
0 commit comments