github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/throw/wrap_test.go (about)

     1  // Copyright 2020 Insolar Network Ltd.
     2  // All rights reserved.
     3  // This material is licensed under the Insolar License version 1.0,
     4  // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md.
     5  
     6  package throw
     7  
     8  import (
     9  	"net"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  type typedDetails1 struct {
    16  	Value int
    17  }
    18  
    19  type typedDetails2 struct {
    20  	Value string
    21  }
    22  
    23  func TestAsDetail(t *testing.T) {
    24  	err := E("A", typedDetails1{99})
    25  	err = &net.OpError{Err: err, Op: "test"}
    26  	err = W(err, "B", typedDetails2{"xyz"})
    27  
    28  	var data1 typedDetails1
    29  	var data2 typedDetails2
    30  	var data3 net.OpError
    31  
    32  	require.True(t, FindDetail(err, &data1))
    33  	require.Equal(t, data1.Value, 99)
    34  	require.True(t, FindDetail(err, &data2))
    35  	require.Equal(t, data2.Value, "xyz")
    36  	require.True(t, FindDetail(err, &data3))
    37  	require.Equal(t, data3.Op, "test")
    38  }