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 }