public void ShouldEqualExpect(short version, Codec codec) { Unpooled.Buffer(1); var request = new Request() { Version = version, Codec = codec, PacketType = 3, MessageType = 4, RequestId = 66, Timeout = 77, ServantName = "aa.aa", FuncName = "go", Context = new Dictionary <string, string>() { { "a", "b" } }, Status = new Dictionary <string, string>() { { "a1", "b2" } }, Parameters = new object[2] { version, codec } }; var method = GetType().GetMethod("ShouldEqualExpect"); request.ParameterTypes = method.GetParameters(); var test = new TestTarsConvert(); var decoder = new TarsDecoder(test.ConvertRoot); var encoder = new TarsEncoder(test.ConvertRoot); test.FindRpcMethodFunc = (servantName, funcName) => { return(method, true, new ParameterInfo[0], codec, version, method.DeclaringType); }; var buffer = encoder.EncodeRequest(request); var result = decoder.DecodeRequest(buffer); Assert.Equal(request.Version, result.Version); Assert.Equal(request.PacketType, result.PacketType); Assert.Equal(request.MessageType, result.MessageType); Assert.Equal(request.RequestId, result.RequestId); Assert.Equal(request.Timeout, result.Timeout); Assert.Equal(request.ServantName, result.ServantName); Assert.Equal(request.FuncName, result.FuncName); Assert.Equal(request.Context["a"], result.Context["a"]); Assert.Single(request.Context); Assert.Equal(request.Status["a1"], result.Status["a1"]); Assert.Single(request.Status); Assert.Equal(request.Parameters[0], result.Parameters[0]); Assert.Equal(request.Parameters[1], result.Parameters[1]); Assert.Equal(request.Parameters.Length, result.Parameters.Length); }
public async Task ResponseWhenReturnTaskShouldEqualExpect(short version, Codec codec) { Unpooled.Buffer(1); var resp = new Response() { Version = version, Codec = codec, PacketType = 3, MessageType = 4, RequestId = 66, Timeout = 77, ServantName = "aa.aa", FuncName = "go", Context = new Dictionary <string, string>() { { "a", "b" } }, Status = new Dictionary <string, string>() { { "a1", "b2" } }, ReturnParameters = new object[2] { version, codec }, ReturnValue = Task.CompletedTask, ResultStatusCode = RpcStatusCode.ServerSuccess, ResultDesc = "test" }; var method = GetType().GetMethod("ResponseWhenReturnTaskShouldEqualExpect"); resp.ReturnParameterTypes = method.GetParameters(); resp.ReturnValueType = method.ReturnParameter; var test = new TestTarsConvert(); var decoder = new TarsDecoder(test.ConvertRoot); var encoder = new TarsEncoder(test.ConvertRoot); test.FindRpcMethodByIdFunc = i => ("aa.aa", "go"); test.FindRpcMethodFunc = (servantName, funcName) => { return(method, true, method.GetParameters(), codec, version, method.DeclaringType); }; var buffer = encoder.EncodeResponse(resp); var result = decoder.DecodeResponse(buffer); Assert.Equal(resp.Version, result.Version); Assert.Equal(resp.PacketType, result.PacketType); Assert.Equal(resp.MessageType, result.MessageType); Assert.Equal(resp.RequestId, result.RequestId); if (version != 1) { Assert.Equal(resp.ServantName, result.ServantName); Assert.Equal(resp.FuncName, result.FuncName); } Assert.Equal(resp.Context["a"], result.Context["a"]); Assert.Single(resp.Context); Assert.Equal(resp.Status["a1"], result.Status["a1"]); Assert.Single(resp.Status); Assert.Equal(resp.ReturnParameters[0], result.ReturnParameters[0]); Assert.Equal(resp.ReturnParameters[1], result.ReturnParameters[1]); Assert.Equal(resp.ReturnValue, result.ReturnValue); Assert.Equal(resp.ResultStatusCode, result.ResultStatusCode); await(Task) result.ReturnValue; }