1// Copyright 2017 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package main 6 7import ( 8 "log" 9 "runtime" 10 11 "./mysync" 12) 13 14func main() { 15 var wg mysync.WaitGroup 16 wg.Done() 17 ci := runtime.CallersFrames(wg.Callers) 18 frames := make([]runtime.Frame, 0, 4) 19 for { 20 frame, more := ci.Next() 21 frames = append(frames, frame) 22 if !more { 23 break 24 } 25 } 26 expecting := []string{ 27 "test/mysync.(*WaitGroup).Add", 28 "test/mysync.(*WaitGroup).Done", 29 } 30 for i := 0; i < 2; i++ { 31 if frames[i].Function != expecting[i] { 32 log.Fatalf("frame %d: got %s, want %s", i, frames[i].Function, expecting[i]) 33 } 34 } 35} 36