github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/merchant/services/ConvertAmountParams_test.go (about)

     1  package services
     2  
     3  import (
     4  	"runtime"
     5  	"testing"
     6  
     7  	"github.com/Ingenico-ePayments/connect-sdk-go/communicator"
     8  )
     9  
    10  func TestToRequestParameters(t *testing.T) {
    11  	lParams := &ConvertAmountParams{}
    12  	paramList := communicator.RequestParams{}
    13  
    14  	paramRequestCmp(t, lParams, paramList)
    15  
    16  	{
    17  		lParams.Source = new(string)
    18  		*lParams.Source = "EUR"
    19  
    20  		param, _ := communicator.NewRequestParam("source", "EUR")
    21  		paramList = append(paramList, *param)
    22  	}
    23  	paramRequestCmp(t, lParams, paramList)
    24  
    25  	{
    26  		lParams.Target = new(string)
    27  		*lParams.Target = "USD"
    28  
    29  		param, _ := communicator.NewRequestParam("target", "USD")
    30  		paramList = append(paramList, *param)
    31  	}
    32  	paramRequestCmp(t, lParams, paramList)
    33  
    34  	{
    35  		lParams.Amount = new(int64)
    36  		*lParams.Amount = 1000
    37  
    38  		param, _ := communicator.NewRequestParam("amount", "1000")
    39  		paramList = append(paramList, *param)
    40  	}
    41  	paramRequestCmp(t, lParams, paramList)
    42  
    43  	{
    44  		lParams.Source = nil
    45  
    46  		paramList = paramList[1:]
    47  	}
    48  	paramRequestCmp(t, lParams, paramList)
    49  }
    50  
    51  func paramRequestCmp(t *testing.T, a communicator.ParamRequest, b communicator.RequestParams) {
    52  	params := a.ToRequestParameters()
    53  
    54  	if requestParamsCmp(params, b) == false {
    55  		buf := make([]byte, 1<<16)
    56  		runtime.Stack(buf, true)
    57  		t.Fatal("paramRequestCmp failed on equality", params, b, string(buf))
    58  	}
    59  }
    60  
    61  func requestParamsCmp(a, b communicator.RequestParams) bool {
    62  	if a == nil && b == nil {
    63  		return true
    64  	}
    65  
    66  	if a == nil || b == nil {
    67  		return false
    68  	}
    69  
    70  	if len(a) != len(b) {
    71  		return false
    72  	}
    73  
    74  	for i := range a {
    75  		if a[i] != b[i] {
    76  			return false
    77  		}
    78  	}
    79  
    80  	return true
    81  }