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