public void SubscribeWithArgsTest()
        {
            // Arrange
            string objectId        = "objId1";
            var    expectedRequest = new SubscribeRequest()
            {
                objectId = objectId,
                eventId  = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnDataChanged))
            };
            SubscribeRequest actualRequest = null;

            _clientMock.Setup(o => o.Request(It.IsAny <SubscribeRequest>())).Returns <SubscribeRequest>(req =>
            {
                actualRequest = req;

                return(new SubscribeResponse()
                {
                    objectId = objectId,
                    eventId = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnDataChanged))
                });
            });
            var objProxy = RuntimeProxy.Create <IRegisteredObject>(objectId, _clientMock.Object);

            // Act
            objProxy.NotifyOnDataChanged += (s, e) => { };

            // Assert
            _clientMock.VerifyAll();
            Assert.AreEqual(expectedRequest.objectId, actualRequest.objectId);
            Assert.AreEqual(expectedRequest.eventId, actualRequest.eventId);
        }
        public void EventNotificationWithArgsTest()
        {
            // Arrange
            string objectId = "objId1";

            _clientMock.Setup(o => o.Request(It.IsAny <IRequest>())).Returns <IRequest>((req) =>
            {
                var resp = new GetBindingDescriptionsResponse();
                resp.bindings.Add(objectId, ObjectDescriptor.GetObjectDescription <IRegisteredObject>());
                return(resp);
            });
            var sender = new Sender(_clientMock.Object);

            sender.Register <IRegisteredObject>();
            sender.SynchronizeBindings();
            _clientMock.Setup(o => o.Request(It.IsAny <SubscribeRequest>())).Returns <SubscribeRequest>(req =>
            {
                return(new SubscribeResponse()
                {
                    objectId = objectId,
                    eventId = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnDataChanged))
                });
            });
            var  objProxy     = sender.GetBindingsByType <IRegisteredObject>()[objectId];
            bool argsReceived = false;

            objProxy.NotifyOnDataChanged += (s, e) => { argsReceived = e as DataChangedEventArgs != null; };
            var notification = new EventNotification()
            {
                objectId  = objectId,
                eventId   = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnDataChanged)),
                eventArgs = new DataChangedEventArgs("dataChanged", 2)
            };

            // Act
            _clientMock.Raise(o => o.NotificationReceived += null, null, new Messages.NotificationEventArgs(notification));

            // Assert
            _clientMock.Verify();
            Assert.IsTrue(argsReceived);
        }
        public void UnsubscribeNoArgsWithWrongResponseTypeTest()
        {
            // Arrange
            string objectId = "objId1";

            _clientMock.Setup(o => o.Request(It.IsAny <IRequest>())).Returns <IRequest>(req =>
            {
                return(new SubscribeResponse()
                {
                    objectId = objectId,
                    eventId = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnNonDataChanged))
                });
            });
            var objProxy = RuntimeProxy.Create <IRegisteredObject>(objectId, _clientMock.Object);

            // Act
            objProxy.NotifyOnNonDataChanged -= (s, e) => { };

            // Assert
            _clientMock.VerifyAll();
        }
示例#4
0
        public void SubscribeWithArgsTest()
        {
            // Arrange
            var objectId = "objId1";
            EventNotification notification = null;

            _callbackMock.Setup(o => o.Callback(It.IsAny <INotification>())).Callback <INotification>((resp) =>
            {
                notification = resp as EventNotification;
            });
            var server  = new Recipient();
            var request = new SubscribeRequest()
            {
                objectId = objectId,
                eventId  = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnDataChanged))
            };
            var expectedEventArgs = new DataChangedEventArgs("eventName", 2.0);

            // Act
            server.Register(objectId, _regObjectMock.Object);
            var response = server.Request(request, _callbackMock.Object) as SubscribeResponse;

            _regObjectMock.Raise(o => o.NotifyOnDataChanged += null, expectedEventArgs);

            // Assert
            _callbackMock.Verify();
            _regObjectMock.Verify();

            Assert.AreEqual(NotificationType.eventInvoked, notification.notificationType);
            Assert.AreEqual(request.objectId, notification.objectId);
            Assert.AreEqual(request.eventId, notification.eventId);
            Assert.IsNotNull(notification.eventArgs as DataChangedEventArgs);
            Assert.AreEqual("eventName", (notification.eventArgs as DataChangedEventArgs).Name);
            Assert.AreEqual(2.0, (notification.eventArgs as DataChangedEventArgs).Data);

            Assert.AreEqual(ResponseType.subscribe, response.responseType);
            Assert.AreEqual(request.objectId, response.objectId);
            Assert.AreEqual(request.eventId, response.eventId);
        }
示例#5
0
        public void UnsubscribeTest()
        {
            // Arrange
            var    objectId     = "objId1";
            string nullIfPassed = String.Empty;

            _callbackMock.Setup(o => o.Callback(It.IsAny <INotification>())).Callback <INotification>((resp) =>
            {
                nullIfPassed = null;
            });
            var server = new Recipient();
            var subscribeRequestObj = new SubscribeRequest()
            {
                objectId = objectId,
                eventId  = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnNonDataChanged))
            };
            var unsubscribeRequest = new UnsubscribeRequest()
            {
                objectId = objectId,
                eventId  = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnNonDataChanged))
            };

            // Act
            server.Register(objectId, _regObjectMock.Object);
            server.Request(subscribeRequestObj, _callbackMock.Object);
            var response = server.Request(unsubscribeRequest, _callbackMock.Object) as UnsubscribeResponse;

            _regObjectMock.Raise(o => o.NotifyOnNonDataChanged += null, EventArgs.Empty);

            // Assert
            _callbackMock.Verify();
            _regObjectMock.Verify();

            Assert.AreEqual(ResponseType.unsubscribe, response.responseType);
            Assert.AreEqual(unsubscribeRequest.objectId, response.objectId);
            Assert.AreEqual(unsubscribeRequest.eventId, response.eventId);
        }
示例#6
0
        public void SubscribeTest()
        {
            // Arrange
            var objectId = "objId1";
            EventNotification actualNotif = null;

            _callbackMock.Setup(o => o.Callback(It.IsAny <INotification>())).Callback <INotification>((notif) =>
            {
                actualNotif = notif as EventNotification;
            });
            var server  = new Recipient();
            var request = new SubscribeRequest()
            {
                objectId = objectId,
                eventId  = ObjectDescriptor.GetEventId <IRegisteredObject>(nameof(IRegisteredObject.NotifyOnNonDataChanged))
            };

            // Act
            server.Register(objectId, _regObjectMock.Object);
            var response = server.Request(request, _callbackMock.Object) as SubscribeResponse;

            _regObjectMock.Raise(o => o.NotifyOnNonDataChanged += null, EventArgs.Empty);

            // Assert
            _callbackMock.Verify();
            _regObjectMock.Verify();

            Assert.AreEqual(NotificationType.eventInvoked, actualNotif.notificationType);
            Assert.AreEqual(request.objectId, actualNotif.objectId);
            Assert.AreEqual(request.eventId, actualNotif.eventId);
            Assert.IsNotNull(actualNotif.eventArgs as EventArgs);

            Assert.AreEqual(ResponseType.subscribe, response.responseType);
            Assert.AreEqual(request.objectId, response.objectId);
            Assert.AreEqual(request.eventId, response.eventId);
        }