internal static RegisteredObject Create <T>(string objectId, T obj) { // Create description var objDesc = ObjectDescriptor.GetObjectDescription <T>(); // Create events var events = new Dictionary <string, RegisteredEvent>(); foreach (var eventInfo in ObjectDescriptor.GetEvents <T>()) { // Create registered event var registeredEvent = RegisteredEvent.Create(objectId, obj, eventInfo); // Store registered event events.Add(eventInfo.Key, registeredEvent); } // Create properties var properties = new Dictionary <string, RegisteredProperty>(); foreach (var propertyInfo in ObjectDescriptor.GetProperties <T>()) { // Create registered property var registeredProperty = RegisteredProperty.Create(objectId, obj, propertyInfo); // Store registered property properties.Add(propertyInfo.Key, registeredProperty); } // Create methods var methods = new Dictionary <string, RegisteredMethod>(); foreach (var methodInfo in ObjectDescriptor.GetMethods <T>()) { // Create registered method var registeredMethod = RegisteredMethod.Create(objectId, obj, methodInfo); // Store registered method methods.Add(methodInfo.Key, registeredMethod); } return(new RegisteredObject(objectId, objDesc, obj, events, properties, methods)); }
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); }