entry_test.go 726 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package cleanup
  2. import (
  3. "testing"
  4. )
  5. type f1 struct{}
  6. func (*f1) Close() {}
  7. type f2 struct{}
  8. func (*f2) Close() error { return nil }
  9. type f3 struct{}
  10. func (*f3) Flush() {}
  11. type f4 struct{}
  12. func (*f4) NoCloseOrFlush() {}
  13. type TestStruct struct {
  14. F1 *f1
  15. F2 *f2
  16. F3 *f3
  17. F4 *f4
  18. }
  19. func TestRegisterStruct(t *testing.T) {
  20. var e Entry
  21. s := TestStruct{
  22. F1: &f1{},
  23. F2: &f2{},
  24. F3: &f3{},
  25. F4: &f4{},
  26. }
  27. e.Register(s)
  28. }
  29. func TestCleanup(t *testing.T) {
  30. var e Entry
  31. i, j := 0, 0
  32. func() {
  33. e.Register(func() { i += 1 })
  34. e.Register(func() { j += 2 })
  35. e.Run()
  36. e.Run() // multiple runs will be OK.
  37. }()
  38. if i != 1 || j != 2 {
  39. t.Errorf("Run() incorrect, want i = 1, j = 2, got i = %d, j = %d", i, j)
  40. }
  41. }