(t *testing.T, method string)
| 102 | } |
| 103 | |
| 104 | func testServerMethodExecution(t *testing.T, method string) { |
| 105 | server := NewServer() |
| 106 | service := new(Service) |
| 107 | |
| 108 | if err := server.RegisterName("test", service); err != nil { |
| 109 | t.Fatalf("%v", err) |
| 110 | } |
| 111 | |
| 112 | stringArg := "string arg" |
| 113 | intArg := 1122 |
| 114 | argsArg := &Args{"abcde"} |
| 115 | params := []interface{}{stringArg, intArg, argsArg} |
| 116 | |
| 117 | request := map[string]interface{}{ |
| 118 | "id": 12345, |
| 119 | "method": "test_" + method, |
| 120 | "version": "2.0", |
| 121 | "params": params, |
| 122 | } |
| 123 | |
| 124 | clientConn, serverConn := net.Pipe() |
| 125 | defer clientConn.Close() |
| 126 | |
| 127 | go server.ServeCodec(NewJSONCodec(serverConn), OptionMethodInvocation) |
| 128 | |
| 129 | out := json.NewEncoder(clientConn) |
| 130 | in := json.NewDecoder(clientConn) |
| 131 | |
| 132 | if err := out.Encode(request); err != nil { |
| 133 | t.Fatal(err) |
| 134 | } |
| 135 | |
| 136 | response := jsonSuccessResponse{Result: &Result{}} |
| 137 | if err := in.Decode(&response); err != nil { |
| 138 | t.Fatal(err) |
| 139 | } |
| 140 | |
| 141 | if result, ok := response.Result.(*Result); ok { |
| 142 | if result.String != stringArg { |
| 143 | t.Errorf("expected %s, got : %s\n", stringArg, result.String) |
| 144 | } |
| 145 | if result.Int != intArg { |
| 146 | t.Errorf("expected %d, got %d\n", intArg, result.Int) |
| 147 | } |
| 148 | if !reflect.DeepEqual(result.Args, argsArg) { |
| 149 | t.Errorf("expected %v, got %v\n", argsArg, result) |
| 150 | } |
| 151 | } else { |
| 152 | t.Fatalf("invalid response: expected *Result - got: %T", response.Result) |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | func TestServerMethodExecution(t *testing.T) { |
| 157 | testServerMethodExecution(t, "echo") |
no test coverage detected