浏览代码

chore: add more tests (#2801)

Kevin Wan 2 年之前
父节点
当前提交
10da5e0424
共有 2 个文件被更改,包括 26 次插入1 次删除
  1. 1 1
      core/lang/lang.go
  2. 25 0
      core/lang/lang_test.go

+ 1 - 1
core/lang/lang.go

@@ -29,7 +29,7 @@ func Repr(v interface{}) string {
 	}
 
 	val := reflect.ValueOf(v)
-	if val.Kind() == reflect.Ptr && !val.IsNil() {
+	for val.Kind() == reflect.Ptr && !val.IsNil() {
 		val = val.Elem()
 	}
 

+ 25 - 0
core/lang/lang_test.go

@@ -1,6 +1,9 @@
 package lang
 
 import (
+	"encoding/json"
+	"errors"
+	"reflect"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -110,6 +113,28 @@ func TestRepr(t *testing.T) {
 	}
 }
 
+func TestReprOfValue(t *testing.T) {
+	t.Run("error", func(t *testing.T) {
+		assert.Equal(t, "error", reprOfValue(reflect.ValueOf(errors.New("error"))))
+	})
+
+	t.Run("stringer", func(t *testing.T) {
+		assert.Equal(t, "1.23", reprOfValue(reflect.ValueOf(json.Number("1.23"))))
+	})
+
+	t.Run("int", func(t *testing.T) {
+		assert.Equal(t, "1", reprOfValue(reflect.ValueOf(1)))
+	})
+
+	t.Run("int", func(t *testing.T) {
+		assert.Equal(t, "1", reprOfValue(reflect.ValueOf("1")))
+	})
+
+	t.Run("int", func(t *testing.T) {
+		assert.Equal(t, "1", reprOfValue(reflect.ValueOf(uint(1))))
+	})
+}
+
 type mockStringable struct{}
 
 func (m mockStringable) String() string {