github.com/viant/toolbox@v0.34.5/data/udf/conversion_test.go (about)

     1  package udf
     2  
     3  import (
     4  	"github.com/stretchr/testify/assert"
     5  	"github.com/viant/toolbox/data"
     6  	"log"
     7  	"reflect"
     8  	"testing"
     9  )
    10  
    11  func Test_AsBool(t *testing.T) {
    12  	ok, err := AsBool("true", nil)
    13  	assert.Nil(t, err)
    14  	assert.Equal(t, true, ok)
    15  }
    16  
    17  func Test_AsFloat(t *testing.T) {
    18  	value, err := AsFloat(0.3, nil)
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, 0.3, value)
    21  }
    22  
    23  func Test_AsInt(t *testing.T) {
    24  	value, err := AsInt(4.3, nil)
    25  	assert.Nil(t, err)
    26  	assert.Equal(t, 4, value)
    27  }
    28  
    29  func Test_AsMap(t *testing.T) {
    30  	{
    31  		var aMap, err = AsMap(map[string]interface{}{}, nil)
    32  		assert.Nil(t, err)
    33  		assert.NotNil(t, aMap)
    34  	}
    35  	{
    36  		var aMap, err = AsMap("{\"abc\":1}", nil)
    37  		assert.Nil(t, err)
    38  		assert.NotNil(t, aMap)
    39  	}
    40  	{
    41  		var aMap, err = AsMap(`abc: 1`, nil)
    42  		assert.Nil(t, err)
    43  		assert.NotNil(t, aMap)
    44  	}
    45  	{
    46  		_, err := AsMap("{\"abc\":1, \"a}", nil)
    47  		assert.NotNil(t, err)
    48  	}
    49  }
    50  
    51  func Test_AsCollection(t *testing.T) {
    52  
    53  	{
    54  		var aSlice, err = AsCollection([]interface{}{1}, nil)
    55  		assert.Nil(t, err)
    56  		assert.NotNil(t, aSlice)
    57  	}
    58  	{
    59  		var aSlice, err = AsCollection("[1,2]", nil)
    60  		assert.Nil(t, err)
    61  		assert.NotNil(t, aSlice)
    62  	}
    63  	{
    64  		var aSlice, err = AsCollection(`
    65  - 1
    66  - 2`, nil)
    67  		assert.Nil(t, err)
    68  		assert.NotNil(t, aSlice)
    69  	}
    70  
    71  	{
    72  		_, err := AsCollection("[\"a,2]", nil)
    73  		assert.NotNil(t, err)
    74  	}
    75  	{
    76  		var aMap, err = AsData(`abc: 1`, nil)
    77  		assert.Nil(t, err)
    78  		assert.NotNil(t, aMap)
    79  	}
    80  }
    81  
    82  func Test_AsData(t *testing.T) {
    83  	{
    84  		var aSlice, err = AsData("[1,2]", nil)
    85  		assert.Nil(t, err)
    86  		assert.NotNil(t, aSlice)
    87  
    88  	}
    89  	{
    90  		var aMap, err = AsData("{\"abc\":1}", nil)
    91  		assert.Nil(t, err)
    92  		assert.NotNil(t, aMap)
    93  	}
    94  
    95  }
    96  
    97  func Test_YamlAsCollection(t *testing.T) {
    98  	var YAML = `- Requests:
    99      - URL: http://localhost:5000
   100        Method: GET
   101        Header:
   102          aHeader:
   103            - "myField=a-value; path=/; domain=localhost; Expires=Tue, 19 Jan 2038 03:14:07 GMT;"
   104          someOtherHeader:
   105            - "CP=RTO"
   106  
   107        Body: "hey there"
   108        Cookies:
   109          - Name: aHeader
   110            Value: a-value
   111            DYAMLomain: "localhost"
   112            Expires: "2023-12-16T20:17:38Z"
   113            RawExpires: Sat, 16 Dec 2023 20:17:38 GMT`
   114  
   115  	expanded, err := AsCollection(YAML, nil)
   116  	if !assert.Nil(t, err) {
   117  		log.Fatal(err)
   118  	}
   119  	assert.Equal(t, reflect.Slice, reflect.TypeOf(expanded).Kind())
   120  }
   121  
   122  func Test_YamlAsMap(t *testing.T) {
   123  	YAML := `default: &default
   124    Name: Jack
   125  person: 
   126    <<: *default
   127    Name: Bob`
   128  
   129  	expanded, err := AsCollection(YAML, nil)
   130  	assert.Nil(t, err)
   131  	assert.NotNil(t, expanded)
   132  }
   133  
   134  func Test_AsString(t *testing.T) {
   135  	aMap := data.NewMap()
   136  	Register(aMap)
   137  
   138  	aMap.Put("k0", true)
   139  	expanded := aMap.ExpandAsText(" $AsString(${k0})")
   140  	assert.EqualValues(t, "true", expanded)
   141  	//64 bit int
   142  	aMap.Put("k1", 2323232323223)
   143  	expanded = aMap.ExpandAsText(" $AsString(${k1})")
   144  	assert.EqualValues(t, "2323232323223", expanded)
   145  }