def_err_let_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package def_err
  2. import (
  3. "fmt"
  4. "testing"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
  6. )
  7. type tester struct {
  8. t *testing.T
  9. owner *owner.LOwner
  10. err *LErr
  11. }
  12. func TestLetErr(t *testing.T) {
  13. sf := &tester{
  14. t: t,
  15. owner: owner.LetOwner(1, "test_owner"),
  16. }
  17. sf.let()
  18. sf.wrap()
  19. }
  20. // Оборачивает ошибку
  21. func (sf *tester) wrap() {
  22. sf.t.Log("wrap")
  23. err := sf.err
  24. sf.err = sf.err.WrapErr(sf.owner, fmt.Errorf("add err"))
  25. strErr := sf.err.String()
  26. _err := `LTxt(
  27. OwnerPass(OwnerPass(
  28. ownerDest(LOwner(
  29. id(1)
  30. name(test_owner)
  31. ))
  32. ownerCur(LOwner(
  33. id(1)
  34. name(test_owner)
  35. ))
  36. ))
  37. Val(LTxt(
  38. OwnerPass(OwnerPass(
  39. ownerDest(LOwner(
  40. id(1)
  41. name(test_owner)
  42. ))
  43. ownerCur(LOwner(
  44. id(1)
  45. name(test_owner)
  46. ))
  47. ))
  48. Val(test_good_err)
  49. )
  50. add err)
  51. )`
  52. if strErr != _err {
  53. sf.t.Fatalf("wrap(): err=\n\t%v", strErr)
  54. }
  55. sf.err = err.WrapTxt(sf.owner, "456")
  56. strErr = sf.err.String()
  57. _err = `LTxt(
  58. OwnerPass(OwnerPass(
  59. ownerDest(LOwner(
  60. id(1)
  61. name(test_owner)
  62. ))
  63. ownerCur(LOwner(
  64. id(1)
  65. name(test_owner)
  66. ))
  67. ))
  68. Val(LTxt(
  69. OwnerPass(OwnerPass(
  70. ownerDest(LOwner(
  71. id(1)
  72. name(test_owner)
  73. ))
  74. ownerCur(LOwner(
  75. id(1)
  76. name(test_owner)
  77. ))
  78. ))
  79. Val(test_good_err)
  80. )
  81. 456)
  82. )`
  83. if strErr != _err {
  84. sf.t.Fatalf("wrap(): err=\n\t%v", strErr)
  85. }
  86. }
  87. // Создание ошибки
  88. func (sf *tester) let() {
  89. sf.t.Log("let")
  90. sf.letBad1()
  91. sf.letGood1()
  92. }
  93. func (sf *tester) letGood1() {
  94. sf.t.Log("letGood1")
  95. sf.err = LetErr(sf.owner, "test_good_err")
  96. if !sf.err.IsErr() {
  97. sf.t.Fatalf("letGood1(): strErr is empty")
  98. }
  99. }
  100. // Нет владельца для ошибка
  101. func (sf *tester) letBad1() {
  102. sf.t.Log("letBad1")
  103. defer func() {
  104. if _panic := recover(); _panic == nil {
  105. sf.t.Log("letBad1(): panic==nil")
  106. }
  107. }()
  108. _ = LetErr(nil, "test_bad_err")
  109. }