package main import ( "container/list" "fmt" "math" "math/rand" "time" ) type function func(*list.Element, *list.Element) *list.Element func init() { rand.Seed(time.Now().Unix()) } // verify perfoms tests func verify(op string, f function) bool { var mm, nn, rr int switch op { case "+": mm = rand.Intn(100) nn = rand.Intn(100) rr = mm + nn case "-": mm = rand.Intn(100) nn = rand.Intn(100) if nn > mm { mm, nn = nn, mm } rr = mm - nn case "*": mm = rand.Intn(10) nn = rand.Intn(10) rr = mm * nn case "^": mm = rand.Intn(10) nn = rand.Intn(3) rr = int(math.Pow(float64(mm), float64(nn))) } m := scan(mm) n := scan(nn) r := f(m, n) expected := scan(rr) ok := r.Value == expected.Value fmt.Println(m.Value, op, n.Value, "=", r.Value, ok) return ok } func verifyAll() { verify("+", add) verify("-", sub) verify("*", times) verify("^", pot) }