(t *testing.T)
| 576 | } |
| 577 | |
| 578 | func TestEvalStructFieldPointerExpressions(t *testing.T) { |
| 579 | var data = make(VarMap) |
| 580 | |
| 581 | type structWithPointers struct { |
| 582 | StringField *string |
| 583 | IntField *int |
| 584 | StructField *structWithPointers |
| 585 | } |
| 586 | |
| 587 | stringVal := "test" |
| 588 | intVal := 10 |
| 589 | nestedStringVal := "nested" |
| 590 | |
| 591 | s := structWithPointers{ |
| 592 | StringField: &stringVal, |
| 593 | IntField: &intVal, |
| 594 | StructField: &structWithPointers{ |
| 595 | StringField: &nestedStringVal, |
| 596 | }, |
| 597 | } |
| 598 | data.Set("structWithPointerFields", s) |
| 599 | RunJetTest(t, data, nil, "PointerFields_1", `{{ structWithPointerFields.IntField }}`, "10") |
| 600 | RunJetTest(t, data, nil, "PointerFields_2", `{{ structWithPointerFields.StructField.IntField }}`, "<nil>") |
| 601 | RunJetTest(t, data, nil, "PointerFields_3", `{{ structWithPointerFields.StringField }}`, "test") |
| 602 | RunJetTest(t, data, nil, "PointerFields_4", `{{ structWithPointerFields.StructField.StringField }}`, "nested") |
| 603 | |
| 604 | s2 := structWithPointers{ |
| 605 | StringField: &stringVal, |
| 606 | IntField: &intVal, |
| 607 | } |
| 608 | data.Set("structWithPointerFields2", s2) |
| 609 | RunJetTest(t, data, nil, "PointerFields_5", `{{ structWithPointerFields2.IntField }}`, "10") |
| 610 | RunJetTest(t, data, nil, "PointerFields_6", `{{ structWithPointerFields2.StringField }}`, "test") |
| 611 | RunJetTest(t, data, nil, "PointerFields_7", `{{ structWithPointerFields2.StructField }}`, "<nil>") |
| 612 | |
| 613 | var set = NewSet(NewOSFileSystemLoader("./testData"), WithSafeWriter(nil)) |
| 614 | tt, err := set.parse("PointerFields_8", `{{ structWithPointerFields2.StructField.StringField }}`, false) |
| 615 | if err != nil { |
| 616 | t.Error(err) |
| 617 | } |
| 618 | buff := bytes.NewBuffer(nil) |
| 619 | err = tt.Execute(buff, data, nil) |
| 620 | if err == nil { |
| 621 | t.Error("expected evaluating field of nil struct to fail with a runtime error but got nil") |
| 622 | } |
| 623 | } |
| 624 | |
| 625 | func TestEvalBuiltinExpression(t *testing.T) { |
| 626 | var data = make(VarMap) |
nothing calls this directly
no test coverage detected
searching dependent graphs…