github.com/System-Glitch/goyave/v2@v2.10.3-0.20200819142921-51011e75d504/validation/numeric_test.go (about)

     1  package validation
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestValidateNumeric(t *testing.T) {
    10  	assert.True(t, validateNumeric("field", 1, []string{}, map[string]interface{}{"field": 1}))
    11  	assert.True(t, validateNumeric("field", 1.2, []string{}, map[string]interface{}{"field": 1.2}))
    12  	assert.True(t, validateNumeric("field", uint(1), []string{}, map[string]interface{}{"field": uint(1)}))
    13  	assert.True(t, validateNumeric("field", uint8(1), []string{}, map[string]interface{}{"field": uint8(1)}))
    14  	assert.True(t, validateNumeric("field", uint16(1), []string{}, map[string]interface{}{"field": uint16(1)}))
    15  	assert.True(t, validateNumeric("field", float32(1.3), []string{}, map[string]interface{}{"field": float32(1.3)}))
    16  	assert.True(t, validateNumeric("field", "2", []string{}, map[string]interface{}{"field": "2"}))
    17  	assert.True(t, validateNumeric("field", "1.2", []string{}, map[string]interface{}{"field": "1.2"}))
    18  	assert.True(t, validateNumeric("field", "-1", []string{}, map[string]interface{}{"field": "-1"}))
    19  	assert.True(t, validateNumeric("field", "-1.3", []string{}, map[string]interface{}{"field": "1.3"}))
    20  	assert.False(t, validateNumeric("field", uintptr(1), []string{}, map[string]interface{}{"field": uintptr(1)}))
    21  	assert.False(t, validateNumeric("field", []string{}, []string{}, map[string]interface{}{"field": []string{}}))
    22  	assert.False(t, validateNumeric("field", map[string]string{}, []string{}, map[string]interface{}{"field": map[string]string{}}))
    23  	assert.False(t, validateNumeric("field", "test", []string{}, map[string]interface{}{"field": "test"}))
    24  }
    25  
    26  func TestValidateNumericConvertString(t *testing.T) {
    27  	form1 := map[string]interface{}{"field": "1.2"}
    28  	validateNumeric("field", form1["field"], []string{}, form1)
    29  	assert.Equal(t, 1.2, form1["field"])
    30  
    31  	form2 := map[string]interface{}{"field": "-1.3"}
    32  	validateNumeric("field", form2["field"], []string{}, form2)
    33  	assert.Equal(t, -1.3, form2["field"])
    34  
    35  	form3 := map[string]interface{}{"field": "2"}
    36  	validateNumeric("field", form3["field"], []string{}, form3)
    37  	assert.Equal(t, float64(2), form3["field"])
    38  }
    39  
    40  func TestValidateInteger(t *testing.T) {
    41  	assert.True(t, validateInteger("field", 1, []string{}, map[string]interface{}{"field": 1}))
    42  	assert.True(t, validateInteger("field", float64(2), []string{}, map[string]interface{}{"field": float64(2)}))
    43  	assert.True(t, validateInteger("field", float32(3), []string{}, map[string]interface{}{"field": float32(3)}))
    44  	assert.True(t, validateInteger("field", uint(1), []string{}, map[string]interface{}{"field": uint(1)}))
    45  	assert.True(t, validateInteger("field", uint8(1), []string{}, map[string]interface{}{"field": uint8(1)}))
    46  	assert.True(t, validateInteger("field", uint16(1), []string{}, map[string]interface{}{"field": uint16(1)}))
    47  	assert.True(t, validateInteger("field", "2", []string{}, map[string]interface{}{"field": "2"}))
    48  	assert.True(t, validateInteger("field", "-1", []string{}, map[string]interface{}{"field": "-1"}))
    49  	assert.False(t, validateInteger("field", 2.2, []string{}, map[string]interface{}{"field": 2.2}))
    50  	assert.False(t, validateInteger("field", float32(3.2), []string{}, map[string]interface{}{"field": float32(3.2)}))
    51  	assert.False(t, validateInteger("field", "1.2", []string{}, map[string]interface{}{"field": "1.2"}))
    52  	assert.False(t, validateInteger("field", "-1.3", []string{}, map[string]interface{}{"field": "1.3"}))
    53  	assert.False(t, validateInteger("field", uintptr(1), []string{}, map[string]interface{}{"field": uintptr(1)}))
    54  	assert.False(t, validateInteger("field", []string{}, []string{}, map[string]interface{}{"field": []string{}}))
    55  	assert.False(t, validateInteger("field", map[string]string{}, []string{}, map[string]interface{}{"field": map[string]string{}}))
    56  	assert.False(t, validateInteger("field", "test", []string{}, map[string]interface{}{"field": "test"}))
    57  }
    58  
    59  func TestValidateIntegerConvert(t *testing.T) {
    60  	form1 := map[string]interface{}{"field": "1"}
    61  	validateInteger("field", form1["field"], []string{}, form1)
    62  	assert.Equal(t, 1, form1["field"])
    63  
    64  	form2 := map[string]interface{}{"field": "-2"}
    65  	validateInteger("field", form2["field"], []string{}, form2)
    66  	assert.Equal(t, -2, form2["field"])
    67  
    68  	form3 := map[string]interface{}{"field": float64(3)}
    69  	validateInteger("field", form3["field"], []string{}, form3)
    70  	assert.Equal(t, 3, form3["field"])
    71  }