public void ShouldListenToObservablesWhereOnlySubscriberWhoSubscribe_WhenPublisherDispatchObservable() { // Simulate 2 Subscriber To Subscribe one subject, Other one doesnt... // US Subscriber Doesnt subscribe... // subscribe true means to subscribe. // subscribe false means to unsubscribe. _app.SubscribeUnsubscribeByCMD(TargetSubject.CNYSubj.ToUpper(), _currencyUnitOfWork.JPNSubscriber, true); // JPN Subscriber Subscribe to CNY Subject. _app.SubscribeUnsubscribeByCMD(TargetSubject.CNYSubj.ToUpper(), _currencyUnitOfWork.CNSubscriber, true); // CN subscriber subscribe to CNY Subject. #region Verify Listeners bool cnListen = false; bool usListen = false; bool jpnListen = false; // Assert that Publisher Dispatch Event... // Subscribe to ListenEventHandlers... _currencyUnitOfWork.CNSubscriber.listenEventHandler += delegate(object sender, CurrencyModel currencyModel) { cnListen = true; }; _currencyUnitOfWork.USSubscriber.listenEventHandler += delegate(object sender, CurrencyModel currencyModel) { usListen = true; }; _currencyUnitOfWork.JPNSubscriber.listenEventHandler += delegate(object sender, CurrencyModel currencyModel) { jpnListen = true; }; #endregion string broadcast = Currencies.CNY; // Executing Broadcast _app.ChangeCurrentPriceByUserInput(ref broadcast, _currencyUnitOfWork.CNYPublisher, "123"); // Broadcast CNY and changed value to 123, Assert.True(cnListen); // Assert that CN Subscriber get the broadcast Assert.True(jpnListen); // Assert that JPN Subscriber get the broadcast Assert.False(usListen); // Assert that US Subscriber doesnt get the broadcast. }