// Copyright 2017 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 main | |
import ( | |
"log" | |
"runtime" | |
"./mysync" | |
) | |
func main() { | |
var wg mysync.WaitGroup | |
wg.Done() | |
ci := runtime.CallersFrames(wg.Callers) | |
frames := make([]runtime.Frame, 0, 4) | |
for { | |
frame, more := ci.Next() | |
frames = append(frames, frame) | |
if !more { | |
break | |
} | |
} | |
expecting := []string{ | |
"test/mysync.(*WaitGroup).Add", | |
"test/mysync.(*WaitGroup).Done", | |
} | |
for i := 0; i < 2; i++ { | |
if frames[i].Function != expecting[i] { | |
log.Fatalf("frame %d: got %s, want %s", i, frames[i].Function, expecting[i]) | |
} | |
} | |
} |