// 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 (
	"./mysync"
	"log"
	"runtime"
)

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{
		"mysync.(*WaitGroup).Add",
		"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])
		}
	}
}
