// 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)
}
}
}