public void GetProxyWithNullInterfaceType()
        {
            SampleInvocable sampleInvocable = new SampleInvocable();
            RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
            IInvocable proxy = RemoteObjectProxyProvider.GetProxy<IInvocable>(address, null);

            Assert.NotNull(proxy);
            InvokeSampleInvokable(proxy);
        }
        public void GetProxyWithDescendantRequiredInterface()
        {
            SampleInvocable sampleInvocable = new SampleInvocable();
            RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
            IRemotelyReferable proxy = RemoteObjectProxyProvider.GetProxy<IRemotelyReferable>(
                    address, typeof(IInvocable));

            Assert.NotNull(proxy);
        }
        public void GetProxyTwice()
        {
            SampleInvocable sampleInvocable = new SampleInvocable();
            RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
            IInvocable proxy1 = RemoteObjectProxyProvider.GetProxy<IInvocable>(
                address, typeof(IInvocable));
            IInvocable proxy2 = RemoteObjectProxyProvider.GetProxy<IInvocable>(
                address, typeof(IInvocable));

            Assert.NotNull(proxy1);
            Assert.NotNull(proxy2);
            Assert.Equal(proxy1, proxy2);
            InvokeSampleInvokable(proxy1);
            InvokeSampleInvokable(proxy2);
        }
 public void GetProxyWithNonInterfaceType()
 {
     SampleInvocable sampleInvocable = new SampleInvocable();
     RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
     Assert.Throws<InvalidOperationException>(() =>
         RemoteObjectProxyProvider.GetProxy<IInvocable>(
             address, typeof(SampleInvocable))
     );
 }
 public void GetProxyWithAntecendantRequiredInterface()
 {
     SampleInvocable sampleInvocable = new SampleInvocable();
     RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
     Assert.Throws<ArgumentException>(() =>
         RemoteObjectProxyProvider.GetProxy<IInvocable>(
         address, typeof(IRemotelyReferable)));
 }
 public void GetProxyWithIncompatibleInterface()
 {
     SampleInvocable sampleInvocable = new SampleInvocable();
     RemoteObjectAddress address = ObjectServer.PublishObject(sampleInvocable);
     // pass a different interface parameter then is the interface of the proxy
     // (eg. IRemotelyCloneable instead of IInvocable)
     Assert.Throws<ArgumentException>(() =>
         RemoteObjectProxyProvider.GetProxy<IInvocable>(
             address, typeof(IRemotelyCloneable))
     );
 }