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