github.com/nsqio/nsq@v1.3.0/internal/test/assertions.go (about)

     1  package test
     2  
     3  import (
     4  	"path/filepath"
     5  	"reflect"
     6  	"runtime"
     7  	"testing"
     8  )
     9  
    10  func Equal(t *testing.T, expected, actual interface{}) {
    11  	if !reflect.DeepEqual(expected, actual) {
    12  		_, file, line, _ := runtime.Caller(1)
    13  		t.Logf("\033[31m%s:%d:\n\n\t   %#v (expected)\n\n\t!= %#v (actual)\033[39m\n\n",
    14  			filepath.Base(file), line, expected, actual)
    15  		t.FailNow()
    16  	}
    17  }
    18  
    19  func NotEqual(t *testing.T, expected, actual interface{}) {
    20  	if reflect.DeepEqual(expected, actual) {
    21  		_, file, line, _ := runtime.Caller(1)
    22  		t.Logf("\033[31m%s:%d:\n\n\tnexp: %#v\n\n\tgot:  %#v\033[39m\n\n",
    23  			filepath.Base(file), line, expected, actual)
    24  		t.FailNow()
    25  	}
    26  }
    27  
    28  func Nil(t *testing.T, object interface{}) {
    29  	if !isNil(object) {
    30  		_, file, line, _ := runtime.Caller(1)
    31  		t.Logf("\033[31m%s:%d:\n\n\t   <nil> (expected)\n\n\t!= %#v (actual)\033[39m\n\n",
    32  			filepath.Base(file), line, object)
    33  		t.FailNow()
    34  	}
    35  }
    36  
    37  func NotNil(t *testing.T, object interface{}) {
    38  	if isNil(object) {
    39  		_, file, line, _ := runtime.Caller(1)
    40  		t.Logf("\033[31m%s:%d:\n\n\tExpected value not to be <nil>\033[39m\n\n",
    41  			filepath.Base(file), line)
    42  		t.FailNow()
    43  	}
    44  }
    45  
    46  func isNil(object interface{}) bool {
    47  	if object == nil {
    48  		return true
    49  	}
    50  
    51  	value := reflect.ValueOf(object)
    52  	kind := value.Kind()
    53  	if kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() {
    54  		return true
    55  	}
    56  
    57  	return false
    58  }