// Copyright 2009 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 exception import "testing" func TestNoException(t *testing.T) { e := Try(func(throw Handler) {}); if e != nil { t.Fatalf("no exception expected, found: %v", e) } } func TestNilException(t *testing.T) { e := Try(func(throw Handler) { throw(nil) }); if e == nil { t.Fatalf("exception expected", e) } if e.Value != nil { t.Fatalf("nil exception expected, found: %v", e) } } func TestTry(t *testing.T) { s := 0; for i := 1; i <= 10; i++ { e := Try(func(throw Handler) { if i%3 == 0 { throw(i); panic("throw returned"); } }); if e != nil { s += e.Value.(int) } } result := 3 + 6 + 9; if s != result { t.Fatalf("expected: %d, found: %d", result, s) } } func TestCatch(t *testing.T) { s := 0; for i := 1; i <= 10; i++ { Try(func(throw Handler) { if i%3 == 0 { throw(i) } }).Catch(func(x interface{}) { s += x.(int) }) } result := 3 + 6 + 9; if s != result { t.Fatalf("expected: %d, found: %d", result, s) } }