| // Copyright 2015 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package obj |
| |
| import ( |
| "fmt" |
| "testing" |
| ) |
| |
| func TestLineHist(t *testing.T) { |
| ctxt := new(Link) |
| ctxt.Hash = make(map[SymVer]*LSym) |
| |
| ctxt.LineHist.Push(1, "a.c") |
| ctxt.LineHist.Push(3, "a.h") |
| ctxt.LineHist.Pop(5) |
| ctxt.LineHist.Update(7, "linedir", 2) |
| ctxt.LineHist.Pop(9) |
| ctxt.LineHist.Push(11, "b.c") |
| ctxt.LineHist.Pop(13) |
| |
| var expect = []string{ |
| 0: "??:0", |
| 1: "a.c:1", |
| 2: "a.c:2", |
| 3: "a.h:1", |
| 4: "a.h:2", |
| 5: "a.c:3", |
| 6: "a.c:4", |
| 7: "linedir:2", |
| 8: "linedir:3", |
| 9: "??:0", |
| 10: "??:0", |
| 11: "b.c:1", |
| 12: "b.c:2", |
| 13: "??:0", |
| 14: "??:0", |
| } |
| |
| for i, want := range expect { |
| var f *LSym |
| var l int32 |
| linkgetline(ctxt, int32(i), &f, &l) |
| have := fmt.Sprintf("%s:%d", f.Name, l) |
| if have != want { |
| t.Errorf("linkgetline(%d) = %q, want %q", i, have, want) |
| } |
| } |
| } |