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  }