github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/data/coercion_test.go (about)

     1  package data
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"os"
     8  	"github.com/TIBCOSoftware/flogo-lib/config"
     9  )
    10  
    11  func TestCoerceToString(t *testing.T) {
    12  
    13  	os.Setenv(config.ENV_DATA_SECRET_KEY_KEY, "SecretKey")
    14  	defer func() {
    15  		os.Unsetenv(config.ENV_DATA_SECRET_KEY_KEY)
    16  	}()
    17  
    18  	var valInt interface{} = 2
    19  	cval, _ := CoerceToString(valInt)
    20  	assert.Equal(t, "2", cval, "not equal")
    21  
    22  	var valBool interface{} = true
    23  	cval, _ = CoerceToString(valBool)
    24  	assert.Equal(t, "true", cval, "not equal")
    25  
    26  	var valStr interface{} = "12"
    27  	cval, _ = CoerceToString(valStr)
    28  	assert.Equal(t, "12", cval, "not equal")
    29  
    30  	var valFloat interface{} = 1.23
    31  	cval, _ = CoerceToString(valFloat)
    32  	assert.Equal(t, "1.23", cval, "not equal")
    33  
    34  	var valNil interface{} // = nil
    35  	cval, _ = CoerceToString(valNil)
    36  	assert.Equal(t, "", cval, "not equal")
    37  }
    38  
    39  func TestCoerceToInteger(t *testing.T) {
    40  
    41  	var valInt interface{} = 2
    42  	cval, _ := CoerceToInteger(valInt)
    43  	assert.Equal(t, 2, cval, "not equal")
    44  
    45  	var valBool interface{} = true
    46  	cval, _ = CoerceToInteger(valBool)
    47  	assert.Equal(t, 1, cval, "not equal")
    48  
    49  	var valStr interface{} = "12"
    50  	cval, _ = CoerceToInteger(valStr)
    51  	assert.Equal(t, 12, cval, "not equal")
    52  
    53  	var valFloat interface{} = 1.23
    54  	cval, _ = CoerceToInteger(valFloat)
    55  	assert.Equal(t, 1, cval, "not equal")
    56  
    57  	var valNil interface{} //= nil
    58  	cval, _ = CoerceToInteger(valNil)
    59  	assert.Equal(t, 0, cval, "not equal")
    60  }
    61  
    62  func TestCoerceToNumber(t *testing.T) {
    63  
    64  	var valInt interface{} = 2
    65  	cval, _ := CoerceToNumber(valInt)
    66  	assert.Equal(t, 2.0, cval, "not equal")
    67  
    68  	var valBool interface{} = true
    69  	cval, _ = CoerceToNumber(valBool)
    70  	assert.Equal(t, 1.0, cval, "not equal")
    71  
    72  	var valStr interface{} = "12"
    73  	cval, _ = CoerceToNumber(valStr)
    74  	assert.Equal(t, 12.0, cval, "not equal")
    75  
    76  	var valFloat interface{} = 1.23
    77  	cval, _ = CoerceToNumber(valFloat)
    78  	assert.Equal(t, 1.23, cval, "not equal")
    79  
    80  	var valNil interface{} //= nil
    81  	cval, _ = CoerceToNumber(valNil)
    82  	assert.Equal(t, 0.0, cval, "not equal")
    83  }
    84  
    85  func TestCoerceToBoolean(t *testing.T) {
    86  
    87  	var valInt interface{} = 2
    88  	cval, _ := CoerceToBoolean(valInt)
    89  	assert.Equal(t, true, cval, "not equal")
    90  
    91  	var valBool interface{} = true
    92  	cval, _ = CoerceToBoolean(valBool)
    93  	assert.Equal(t, true, cval, "not equal")
    94  
    95  	var valStr interface{} = "false"
    96  	cval, _ = CoerceToBoolean(valStr)
    97  	assert.Equal(t, false, cval, "not equal")
    98  
    99  	var valFloat interface{} = 1.23
   100  	cval, _ = CoerceToBoolean(valFloat)
   101  	assert.Equal(t, true, cval, "not equal")
   102  
   103  	var valNil interface{} //= nil
   104  	cval, _ = CoerceToBoolean(valNil)
   105  	assert.Equal(t, false, cval, "not equal")
   106  }
   107  
   108  func TestUnmarshComplexObject(t *testing.T) {
   109  	complexStr := `{"metadata":"this is metdata string","value":""}`
   110  	complexObject, err := CoerceToComplexObject(complexStr)
   111  	assert.Nil(t, err)
   112  	assert.NotNil(t, complexObject)
   113  	assert.NotEqual(t, "", complexObject.Value)
   114  }