78 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package errors
 | 
						|
 | 
						|
import (
 | 
						|
	er "errors"
 | 
						|
	"net/http"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestFromError(t *testing.T) {
 | 
						|
	err := NotFound("go.micro.test", "%s", "example")
 | 
						|
	merr := FromError(err)
 | 
						|
	if merr.Id != "go.micro.test" || merr.Code != 404 {
 | 
						|
		t.Fatalf("invalid conversation %v != %v", err, merr)
 | 
						|
	}
 | 
						|
	err = er.New(err.Error())
 | 
						|
	merr = FromError(err)
 | 
						|
	if merr.Id != "go.micro.test" || merr.Code != 404 {
 | 
						|
		t.Fatalf("invalid conversation %v != %v", err, merr)
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
func TestEqual(t *testing.T) {
 | 
						|
	err1 := NotFound("myid1", "msg1")
 | 
						|
	err2 := NotFound("myid2", "msg2")
 | 
						|
 | 
						|
	if !Equal(err1, err2) {
 | 
						|
		t.Fatal("errors must be equal")
 | 
						|
	}
 | 
						|
 | 
						|
	err3 := er.New("my test err")
 | 
						|
	if Equal(err1, err3) {
 | 
						|
		t.Fatal("errors must be not equal")
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
func TestErrors(t *testing.T) {
 | 
						|
	testData := []*Error{
 | 
						|
		{
 | 
						|
			Id:     "test",
 | 
						|
			Code:   500,
 | 
						|
			Detail: "Internal server error",
 | 
						|
			Status: http.StatusText(500),
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, e := range testData {
 | 
						|
		ne := New(e.Id, e.Detail, e.Code)
 | 
						|
 | 
						|
		if e.Error() != ne.Error() {
 | 
						|
			t.Fatalf("Expected %s got %s", e.Error(), ne.Error())
 | 
						|
		}
 | 
						|
 | 
						|
		pe := Parse(ne.Error())
 | 
						|
 | 
						|
		if pe == nil {
 | 
						|
			t.Fatalf("Expected error got nil %v", pe)
 | 
						|
		}
 | 
						|
 | 
						|
		if pe.Id != e.Id {
 | 
						|
			t.Fatalf("Expected %s got %s", e.Id, pe.Id)
 | 
						|
		}
 | 
						|
 | 
						|
		if pe.Detail != e.Detail {
 | 
						|
			t.Fatalf("Expected %s got %s", e.Detail, pe.Detail)
 | 
						|
		}
 | 
						|
 | 
						|
		if pe.Code != e.Code {
 | 
						|
			t.Fatalf("Expected %d got %d", e.Code, pe.Code)
 | 
						|
		}
 | 
						|
 | 
						|
		if pe.Status != e.Status {
 | 
						|
			t.Fatalf("Expected %s got %s", e.Status, pe.Status)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |