public async Task InternalInterface_WithInternalMembersFromOtherAssemblies() { var streams = FullDuplexStream.CreateStreams(); var server = new ServerOfInternalInterface(); var serverRpc = JsonRpc.Attach(streams.Item2, server); var clientRpc = JsonRpc.Attach(streams.Item1); // Try the first internal interface, which is external to this test assembly var proxy1 = clientRpc.Attach <IServerInternalWithInternalTypesFromOtherAssemblies>(); Assert.NotNull(await proxy1.SomeMethodAsync().WithCancellation(this.TimeoutToken)); }
public async Task InternalInterface() { var streams = FullDuplexStream.CreateStreams(); var server = new ServerOfInternalInterface(); var serverRpc = JsonRpc.Attach(streams.Item2, server); var clientRpc = JsonRpc.Attach(streams.Item1); // Try the first internal interface, which is external to this test assembly var proxy1 = clientRpc.Attach <StreamJsonRpc.Tests.ExternalAssembly.ISomeInternalProxyInterface>(); Assert.Equal(-1, await proxy1.SubtractAsync(1, 2).WithCancellation(this.TimeoutToken)); // Now create a proxy for another interface that is internal within this assembly, but derives from the external assembly's internal interface. // This verifies that we can handle multiple sets of assemblies which we need internal visibility into, as well as that it can track base type interfaces. var proxy2 = clientRpc.Attach <IServerInternal>(); Assert.Equal(3, await proxy2.AddAsync(1, 2).WithCancellation(this.TimeoutToken)); }