Commit a1123dbf authored by Boris Glimcher's avatar Boris Glimcher Committed by Tomasz Zawadzki
Browse files

go/rpc: add first unit test for golang



more to come

Change-Id: I1bb090fd5597c692f31d620dbda210febf0bee5e
Signed-off-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20160


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarMaciej Miś <maciej.mis@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
parent c7feb85d
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
/*   SPDX-License-Identifier: BSD-3-Clause
 *   Copyright (c) 2023 Dell Inc, or its subsidiaries.
 *   All rights reserved.
 */

package client

import (
	"reflect"
	"testing"
)

func Test_createRequest(t *testing.T) {
	tests := map[string]struct {
		params  any
		wantErr bool
	}{
		"nil params": {
			params:  nil,
			wantErr: false,
		},
		"reflect.Pointer": {
			params:  &struct{}{},
			wantErr: false,
		},
		"reflect.Array": {
			params:  [3]string{"a", "b", "c"},
			wantErr: false,
		},
		"reflect.Map": {
			params:  map[string]int{"a": 1, "b": 2, "c": 3},
			wantErr: false,
		},
		"reflect.Slice": {
			params:  []string{"a", "b", "c"},
			wantErr: false,
		},
		"reflect.Struct": {
			params:  struct{}{},
			wantErr: false,
		},
		"invalid param": {
			params:  "invalidParam",
			wantErr: true,
		},
	}

	for testName, tt := range tests {
		t.Run(testName, func(t *testing.T) {
			const method = "some method"
			const requestId = 17
			gotRequest, err := createRequest(method, requestId, tt.params)
			wantRequest := &Request{
				Version: jsonRPCVersion,
				Method:  method,
				Params:  tt.params,
				ID:      requestId,
			}
			if tt.wantErr {
				wantRequest = nil
			}
			if (err != nil) != tt.wantErr {
				t.Errorf("Expect error: %v, received: %v", nil, err)
			}
			if !reflect.DeepEqual(gotRequest, wantRequest) {
				t.Errorf("Expect %v request, received %v", wantRequest, gotRequest)
			}
		})
	}
}