package def_err import ( "fmt" "testing" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner" ) type tester struct { t *testing.T owner *owner.LOwner err *LErr } func TestLetErr(t *testing.T) { sf := &tester{ t: t, owner: owner.LetOwner(1, "test_owner"), } sf.let() sf.wrap() } // Оборачивает ошибку func (sf *tester) wrap() { sf.t.Log("wrap") err := sf.err sf.err = sf.err.WrapErr(sf.owner, fmt.Errorf("add err")) strErr := sf.err.String() _err := `LTxt( OwnerPass(OwnerPass( ownerDest(LOwner( id(1) name(test_owner) )) ownerCur(LOwner( id(1) name(test_owner) )) )) Val(LTxt( OwnerPass(OwnerPass( ownerDest(LOwner( id(1) name(test_owner) )) ownerCur(LOwner( id(1) name(test_owner) )) )) Val(test_good_err) ) add err) )` if strErr != _err { sf.t.Fatalf("wrap(): err=\n\t%v", strErr) } sf.err = err.WrapTxt(sf.owner, "456") strErr = sf.err.String() _err = `LTxt( OwnerPass(OwnerPass( ownerDest(LOwner( id(1) name(test_owner) )) ownerCur(LOwner( id(1) name(test_owner) )) )) Val(LTxt( OwnerPass(OwnerPass( ownerDest(LOwner( id(1) name(test_owner) )) ownerCur(LOwner( id(1) name(test_owner) )) )) Val(test_good_err) ) 456) )` if strErr != _err { sf.t.Fatalf("wrap(): err=\n\t%v", strErr) } } // Создание ошибки func (sf *tester) let() { sf.t.Log("let") sf.letBad1() sf.letGood1() } func (sf *tester) letGood1() { sf.t.Log("letGood1") sf.err = LetErr(sf.owner, "test_good_err") if !sf.err.IsErr() { sf.t.Fatalf("letGood1(): strErr is empty") } } // Нет владельца для ошибка func (sf *tester) letBad1() { sf.t.Log("letBad1") defer func() { if _panic := recover(); _panic == nil { sf.t.Log("letBad1(): panic==nil") } }() _ = LetErr(nil, "test_bad_err") }