]> Cypherpunks repositories - gostls13.git/commitdiff
add test of invariant in findVar
authorRob Pike <r@golang.org>
Fri, 31 Jul 2009 19:52:03 +0000 (12:52 -0700)
committerRob Pike <r@golang.org>
Fri, 31 Jul 2009 19:52:03 +0000 (12:52 -0700)
R=rsc
DELTA=23  (23 added, 0 deleted, 0 changed)
OCL=32592
CL=32595

src/pkg/template/template_test.go

index 7aeec6d37932e90d788398686385563d64152fd4..c293f6646a2bdb17c5f750ac5f5054d052ae95d3 100644 (file)
@@ -28,6 +28,7 @@ type S struct {
        integer int;
        raw string;
        innerT T;
+       innerPointerT *T;
        data []T;
        pdata []*T;
        empty []*T;
@@ -341,3 +342,25 @@ func TestCustomDelims(t *testing.T) {
                }
        }
 }
+
+// Test that a variable evaluates to the field itself and does not further indirection
+func TestVarIndirection(t *testing.T) {
+       s := new(S);
+       // initialized by hand for clarity.
+       s.innerPointerT = &t1;
+
+       var buf bytes.Buffer;
+       input := "{.section @}{innerPointerT}{.end}";
+       tmpl, err := Parse(input, nil);
+       if err != nil {
+               t.Fatal("unexpected parse error:", err);
+       }
+       err = tmpl.Execute(s, &buf);
+       if err != nil {
+               t.Fatal("unexpected execute error:", err)
+       }
+       expect := fmt.Sprintf("%v", &t1);       // output should be hex address of t1
+       if string(buf.Data()) != expect {
+               t.Errorf("for %q: expected %q got %q", input, expect, string(buf.Data()));
+       }
+}