public void Requests_Null_Method_Call() { var messenger = Substitute.For <IBinaryMessenger>(); var channel = new MethodChannel(TEST_CHANNEL_NAME, StandardMethodCodec.Instance, messenger); Assert.ThrowsAsync <ArgumentNullException>(() => channel.InvokeMethodAsync(null)); }
public async void Requests_Correct_MethodCall_And_Returns_Success_Envelope() { var messenger = Substitute.For <IBinaryMessenger>(); var codec = StandardMethodCodec.Instance; var channel = new MethodChannel(TEST_CHANNEL_NAME, codec, messenger); var call = new MethodCall(TEST_METHOD_NAME, new int[] { 1, 2, 5 }); byte[] encodedCall = codec.EncodeMethodCall(call); messenger.SendAsync(TEST_CHANNEL_NAME, Arg.Any <byte[]>()) .Returns(codec.EncodeSuccessEnvelope("TEST_RESULT")); var result = await channel.InvokeMethodAsync(call.Method, call.Arguments) as string; await messenger.Received().SendAsync(Arg.Is <string>(x => x == TEST_CHANNEL_NAME), Arg.Is <byte[]>(x => x.SequenceEqual(encodedCall))); Assert.Equal("TEST_RESULT", result); }
public async void Requests_Correct_MethodCall_And_Returns_Error_Envelope() { var messenger = Substitute.For <IBinaryMessenger>(); var codec = StandardMethodCodec.Instance; var channel = new MethodChannel(TEST_CHANNEL_NAME, codec, messenger); var call = new MethodCall(TEST_METHOD_NAME, new int[] { 1, 2, 5 }); messenger.SendAsync(TEST_CHANNEL_NAME, Arg.Any <byte[]>()) .Returns(codec.EncodeErrorEnvelope("E0001", "TEST_ERROR", "TEST_ERROR_DETAILS")); var ex = await Assert.ThrowsAsync <FlutterException>(() => { return(channel.InvokeMethodAsync(call.Method, call.Arguments)); }); Assert.Equal("E0001", ex.Code); Assert.Equal("TEST_ERROR", ex.Message); Assert.Equal("TEST_ERROR_DETAILS", ex.Details as string); }