gitee.com/go-spring2/spring-base@v1.1.3/cast/string_test.go (about) 1 /* 2 * Copyright 2012-2019 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package cast_test 18 19 import ( 20 "bytes" 21 "errors" 22 "html/template" 23 "strconv" 24 "testing" 25 26 "gitee.com/go-spring2/spring-base/assert" 27 "gitee.com/go-spring2/spring-base/cast" 28 ) 29 30 func BenchmarkToString(b *testing.B) { 31 // int/strconv-8 419501868 2.87 ns/op 32 // int/go-spring-8 60869038 18.2 ns/op 33 b.Run("int", func(b *testing.B) { 34 v := 10 35 b.Run("strconv", func(b *testing.B) { 36 for i := 0; i < b.N; i++ { 37 _ = strconv.Itoa(v) 38 } 39 }) 40 b.Run("go-spring", func(b *testing.B) { 41 for i := 0; i < b.N; i++ { 42 _, err := cast.ToStringE(v) 43 if err != nil { 44 b.Fatal(err) 45 } 46 } 47 }) 48 }) 49 } 50 51 func TestToString(t *testing.T) { 52 53 assert.Equal(t, cast.ToString(nil), "") 54 55 assert.Equal(t, cast.ToString(int(3)), "3") 56 assert.Equal(t, cast.ToString(int8(3)), "3") 57 assert.Equal(t, cast.ToString(int16(3)), "3") 58 assert.Equal(t, cast.ToString(int32(3)), "3") 59 assert.Equal(t, cast.ToString(int64(3)), "3") 60 assert.Equal(t, cast.ToString(cast.IntPtr(3)), "3") 61 assert.Equal(t, cast.ToString(cast.Int8Ptr(3)), "3") 62 assert.Equal(t, cast.ToString(cast.Int16Ptr(3)), "3") 63 assert.Equal(t, cast.ToString(cast.Int32Ptr(3)), "3") 64 assert.Equal(t, cast.ToString(cast.Int64Ptr(3)), "3") 65 66 assert.Equal(t, cast.ToString(uint(3)), "3") 67 assert.Equal(t, cast.ToString(uint8(3)), "3") 68 assert.Equal(t, cast.ToString(uint16(3)), "3") 69 assert.Equal(t, cast.ToString(uint32(3)), "3") 70 assert.Equal(t, cast.ToString(uint64(3)), "3") 71 assert.Equal(t, cast.ToString(cast.UintPtr(3)), "3") 72 assert.Equal(t, cast.ToString(cast.Uint8Ptr(3)), "3") 73 assert.Equal(t, cast.ToString(cast.Uint16Ptr(3)), "3") 74 assert.Equal(t, cast.ToString(cast.Uint32Ptr(3)), "3") 75 assert.Equal(t, cast.ToString(cast.Uint64Ptr(3)), "3") 76 77 assert.Equal(t, cast.ToString(float32(3)), "3") 78 assert.Equal(t, cast.ToString(float64(3)), "3") 79 assert.Equal(t, cast.ToString(cast.Float32Ptr(3)), "3") 80 assert.Equal(t, cast.ToString(cast.Float64Ptr(3)), "3") 81 82 assert.Equal(t, cast.ToString("3"), "3") 83 assert.Equal(t, cast.ToString(cast.StringPtr("3")), "3") 84 85 assert.Equal(t, cast.ToString(true), "true") 86 assert.Equal(t, cast.ToString(false), "false") 87 assert.Equal(t, cast.ToString(cast.BoolPtr(true)), "true") 88 assert.Equal(t, cast.ToString(cast.BoolPtr(false)), "false") 89 90 assert.Equal(t, cast.ToString([]byte("3")), "3") 91 assert.Equal(t, cast.ToString(template.HTML("3")), "3") 92 assert.Equal(t, cast.ToString(template.URL("3")), "3") 93 assert.Equal(t, cast.ToString(template.JS("3")), "3") 94 assert.Equal(t, cast.ToString(template.CSS("3")), "3") 95 assert.Equal(t, cast.ToString(template.HTMLAttr("3")), "3") 96 assert.Equal(t, cast.ToString(bytes.NewBufferString("abc")), "abc") 97 assert.Equal(t, cast.ToString(errors.New("abc")), "abc") 98 99 type String string 100 _, err := cast.ToStringE(String("abc")) 101 assert.Error(t, err, "unable to cast type \\(cast_test\\.String\\) to string") 102 } 103 104 func TestBytesToString(t *testing.T) { 105 b := []byte("hello, gopher!") 106 s := cast.BytesToString(b) 107 assert.Equal(t, b, []byte(s)) 108 } 109 110 func TestStringToBytes(t *testing.T) { 111 s := "hello, gopher!" 112 b := cast.StringToBytes(s) 113 assert.Equal(t, string(b), s) 114 }