github.com/yaoapp/kun@v0.9.0/num/number_test.go (about)

     1  package num
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestMake(t *testing.T) {
    11  	v := Make()
    12  	assert.Equal(t, 0.0, v.Float())
    13  }
    14  func TestOf(t *testing.T) {
    15  	v := Of(0.618)
    16  	assert.Equal(t, 0.618, v.Float())
    17  }
    18  
    19  func TestSet(t *testing.T) {
    20  	v := Of(0.618)
    21  	assert.Equal(t, 0.618, v.Float())
    22  
    23  	v.Set(0.852)
    24  	assert.Equal(t, 0.852, v.Float())
    25  }
    26  
    27  func TestFloat(t *testing.T) {
    28  	assert.Equal(t, 0.0, Of(nil).Float())
    29  	assert.Equal(t, 1.0, Of(1).Float())
    30  	assert.Equal(t, 1.618, Of(1.618+2.382i).Float())
    31  	assert.Equal(t, 1.0, Of(complex64(1+2.382i)).Float())
    32  	assert.Equal(t, 0.618, Of(0.618).Float())
    33  	assert.Equal(t, float64(float32(0.618)), Of(float32(0.618)).Float())
    34  	assert.Equal(t, 0.618, Of("0.618").Float())
    35  	assert.Panics(t, func() {
    36  		fmt.Println(Of("error").Float())
    37  	})
    38  }
    39  
    40  func TestFloat32(t *testing.T) {
    41  	assert.Equal(t, float32(0.0), Of(nil).Float32())
    42  	assert.Equal(t, float32(0.618), Of(0.618).Float32())
    43  	assert.Equal(t, float32(0.618), Of(float32(0.618)).Float32())
    44  	assert.Equal(t, float32(0.618), Of("0.618").Float32())
    45  	assert.Panics(t, func() {
    46  		fmt.Println(Of("error").Float32())
    47  	})
    48  }
    49  
    50  func TestToFixed(t *testing.T) {
    51  	assert.Equal(t, "0.62", Of(0.618).ToFixed(2))
    52  	assert.Equal(t, "0.61", Of(0.614).ToFixed(2))
    53  	assert.Equal(t, "0", Of(0.4).ToFixed(0))
    54  	assert.Equal(t, "1", Of(0.51).ToFixed(0))
    55  }
    56  
    57  func TestInt(t *testing.T) {
    58  	assert.Equal(t, 0, Of(nil).Int())
    59  	assert.Equal(t, 10, Of(10).Int())
    60  	assert.Equal(t, 0, Of(0.312).Int())
    61  	assert.Equal(t, 1, Of(0.618).Int())
    62  	assert.Equal(t, 1, Of(float32(0.618)).Int())
    63  	assert.Equal(t, 2, Of(1.618+2.382i).Int())
    64  	assert.Equal(t, 2, Of(complex64(1.618+2.382i)).Int())
    65  	assert.Equal(t, 10, Of("10").Int())
    66  	assert.Equal(t, 0, Of("0.312").Int())
    67  	assert.Equal(t, 1, Of("0.618").Int())
    68  	assert.Equal(t, 1, Of("1.24").Int())
    69  	assert.Panics(t, func() {
    70  		fmt.Println(Of("error").Int())
    71  	})
    72  }
    73  
    74  func TestInt8(t *testing.T) {
    75  	assert.Equal(t, int8(1), Of(int8(1)).Int8())
    76  	assert.Equal(t, int8(1), Of(1).Int8())
    77  }
    78  func TestInt16(t *testing.T) {
    79  	assert.Equal(t, int16(1), Of(int16(1)).Int16())
    80  	assert.Equal(t, int16(1), Of(1).Int16())
    81  }
    82  
    83  func TestInt32(t *testing.T) {
    84  	assert.Equal(t, int32(1), Of(int32(1)).Int32())
    85  	assert.Equal(t, int32(1), Of(1).Int32())
    86  }
    87  
    88  func TestInt64(t *testing.T) {
    89  	assert.Equal(t, int64(1), Of(int64(1)).Int64())
    90  	assert.Equal(t, int64(1), Of(1).Int64())
    91  }
    92  
    93  func TestUint(t *testing.T) {
    94  	assert.Equal(t, uint(1), Of(uint(1)).Uint())
    95  	assert.Equal(t, uint(1), Of(1).Uint())
    96  }
    97  
    98  func TestUint8(t *testing.T) {
    99  	assert.Equal(t, uint8(1), Of(uint8(1)).Uint8())
   100  	assert.Equal(t, uint8(1), Of(1).Uint8())
   101  }
   102  
   103  func TestUint16(t *testing.T) {
   104  	assert.Equal(t, uint16(1), Of(uint16(1)).Uint16())
   105  	assert.Equal(t, uint16(1), Of(1).Uint16())
   106  }
   107  
   108  func TestUint32(t *testing.T) {
   109  	assert.Equal(t, uint32(1), Of(uint32(1)).Uint32())
   110  	assert.Equal(t, uint32(1), Of(1).Uint32())
   111  }
   112  
   113  func TestUint64(t *testing.T) {
   114  	assert.Equal(t, uint64(1), Of(uint64(1)).Uint64())
   115  	assert.Equal(t, uint64(1), Of(1).Uint64())
   116  }
   117  
   118  func TestUintptr(t *testing.T) {
   119  	assert.Equal(t, uintptr(1), Of(uintptr(1)).Uintptr())
   120  	assert.Equal(t, uintptr(1), Of(1).Uintptr())
   121  }
   122  
   123  func TestComplex(t *testing.T) {
   124  	assert.Equal(t, 1.28+2.56i, Of(1.28+2.56i).Complex())
   125  	assert.Equal(t, 1.0+2.00i, Of(complex64(1.0+2.0i)).Complex())
   126  	assert.Equal(t, 1.28+2.56i, Of(" 1.28+ 2.56i ").Complex())
   127  	assert.Equal(t, 1.28+2.56i, Of("( 1.28+ 2.56i )").Complex())
   128  	assert.Equal(t, 1.28+2.56i, Of("( 1.28,2.56 )").Complex())
   129  	assert.Equal(t, 1.28+0i, Of("1.28").Complex())
   130  	assert.Equal(t, 1.28+0i, Of(1.28).Complex())
   131  	assert.Equal(t, 1.0+0i, Of(1).Complex())
   132  }
   133  
   134  func TestComplex64(t *testing.T) {
   135  	assert.Equal(t, complex64(1.28+2.56i), Of(1.28+2.56i).Complex64())
   136  	assert.Equal(t, complex64(1.0+2.00i), Of(complex64(1.0+2.0i)).Complex64())
   137  	assert.Equal(t, complex64(1.28+2.56i), Of(" 1.28+ 2.56i ").Complex64())
   138  	assert.Equal(t, complex64(1.28+2.56i), Of("( 1.28+ 2.56i )").Complex64())
   139  	assert.Equal(t, complex64(1.28+2.56i), Of("( 1.28,2.56 )").Complex64())
   140  	assert.Equal(t, complex64(1.28+0i), Of("1.28").Complex64())
   141  	assert.Equal(t, complex64(1.28+0i), Of(1.28).Complex64())
   142  	assert.Equal(t, complex64(1.0+0i), Of(1).Complex64())
   143  }
   144  
   145  func TestIsComplex(t *testing.T) {
   146  	assert.Equal(t, true, Of(1.28+2.56i).IsComplex())
   147  	assert.Equal(t, true, Of(complex64(1.28+2.56i)).IsComplex())
   148  	assert.Equal(t, false, Of(true).IsComplex())
   149  }
   150  
   151  func TestIsInt(t *testing.T) {
   152  	assert.Equal(t, true, Of(1).IsInt())
   153  	assert.Equal(t, true, Of(int8(1)).IsInt())
   154  	assert.Equal(t, false, Of(true).IsInt())
   155  }
   156  
   157  func TestIsFloat(t *testing.T) {
   158  	assert.Equal(t, true, Of(1.618).IsFloat())
   159  	assert.Equal(t, true, Of(float32(1.382)).IsFloat())
   160  	assert.Equal(t, false, Of(5).IsFloat())
   161  }
   162  
   163  func TestIsSet(t *testing.T) {
   164  	assert.Equal(t, true, Of(1).IsSet())
   165  	assert.Equal(t, false, Of(nil).IsSet())
   166  }
   167  
   168  func TestIsNil(t *testing.T) {
   169  	assert.Equal(t, false, Of(1).IsNil())
   170  	assert.Equal(t, true, Of(nil).IsNil())
   171  }