Skip to content

Commit 31678da

Browse files
committed
Made accessors work with struct pointers
1 parent 91facc4 commit 31678da

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

dummies_test.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,27 @@ func (this dummyNestedParameter) Dunk(arg1 string) string {
3939
return arg1 + "dunk"
4040
}
4141

42+
var dummyParameterInstance = dummyParameter {
43+
String: "string!",
44+
Int: 101,
45+
BoolFalse: false,
46+
Nil: nil,
47+
Nested: dummyNestedParameter {
48+
Funk: "funkalicious",
49+
},
50+
}
51+
4252
var fooParameter = EvaluationParameter {
4353
Name: "foo",
44-
Value: dummyParameter {
45-
String: "string!",
46-
Int: 101,
47-
BoolFalse: false,
48-
Nil: nil,
49-
Nested: dummyNestedParameter {
50-
Funk: "funkalicious",
51-
},
52-
},
54+
Value: dummyParameterInstance,
55+
}
56+
57+
var fooPtrParameter = EvaluationParameter {
58+
Name: "fooptr",
59+
Value: &dummyParameterInstance,
5360
}
5461

55-
var fooFailureParameters map[string]interface{} = map[string]interface{} {
62+
var fooFailureParameters = map[string]interface{} {
5663
"foo": fooParameter.Value,
64+
"fooptr": &fooPtrParameter.Value,
5765
}

evaluationStage.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,12 @@ func makeAccessorStage(pair []string) evaluationOperator {
274274
for i := 1; i < len(pair); i++ {
275275

276276
coreValue := reflect.ValueOf(value)
277+
278+
// if this is a pointer, resolve it.
279+
if coreValue.Kind() == reflect.Ptr {
280+
coreValue = coreValue.Elem()
281+
}
282+
277283
if coreValue.Kind() != reflect.Struct {
278284
return nil, errors.New("Unable to access '"+pair[i]+"', '"+pair[i-1]+"' is not a struct");
279285
}

evaluation_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,6 +1286,20 @@ func TestParameterizedEvaluation(test *testing.T) {
12861286
Parameters: []EvaluationParameter{fooParameter},
12871287
Expected: "funk",
12881288
},
1289+
EvaluationTest{
1290+
1291+
Name: "Simple parameter call from pointer",
1292+
Input: "fooptr.String",
1293+
Parameters: []EvaluationParameter{fooPtrParameter},
1294+
Expected: fooParameter.Value.(dummyParameter).String,
1295+
},
1296+
EvaluationTest{
1297+
1298+
Name: "Simple parameter function call from pointer",
1299+
Input: "fooptr.Func()",
1300+
Parameters: []EvaluationParameter{fooPtrParameter},
1301+
Expected: "funk",
1302+
},
12891303
EvaluationTest{
12901304

12911305
Name: "Simple parameter call",

0 commit comments

Comments
 (0)