コード例 #1
0
 public void CreatingNewTrackerWithNullShareFails()
 {
     Assert.Throws<ArgumentNullException>(() =>
         {
             using (ShareTracker tracker = new ShareTracker(null))
             {
             }
         });
 }
コード例 #2
0
 public void CreatingNewTrackerWithValidShareInitializesEmptyClientList()
 {
     using (ShareTracker tracker = new ShareTracker(new Share
                                                     {
                                                         ShortCode = "SOL"
                                                     }))
     {
         Assert.Equal(0, tracker.Clients.Count);
     }
 }
コード例 #3
0
        public void TrackerExposesInstantiatedShareAsAProperty()
        {
            Share sasol = new Share()
            {
                ShortCode = "SOL"
            };

            using (ShareTracker tracker = new ShareTracker(sasol))
            {
                Assert.True(tracker.Share == sasol);
            }
        }
コード例 #4
0
        public void NewTrackerStartsPollForNewPrices()
        {
            Share sasol = new Share()
            {
                ShortCode = "SOL",
                LastTradePrice = -1
            };

            using (ShareTracker tracker = new ShareTracker(sasol, 1))
            {
                System.Threading.Thread.Sleep(25);

                Assert.NotEqual(-1, tracker.Share.LastTradePrice);
            }
        }
コード例 #5
0
ファイル: LivePricingHub.cs プロジェクト: WilliamBZA/WatchR
        public PriceDTO ListenForPriceChanges(string shortCode)
        {
            ShareTracker tracker = null;

            // Check if already listening to updates for that code
            if (!SharesTracked.ContainsKey(shortCode))
            {
                lock (_shareLock)
                {
                    if (!SharesTracked.ContainsKey(shortCode))
                    {
                        var share = new Repository().GetPriceForShare(shortCode);
                        tracker = new ShareTracker(share);

                        SharesTracked.Add(shortCode, tracker);

                        // Subscribe to trades
                        tracker.TradeOccurred += tracker_TradeOccurred;
                    }
                }
            }

            tracker = SharesTracked[shortCode];

            if (!tracker.Clients.Contains(Context.ConnectionId))
            {
                // Add client ID to that code's set of listeners
                tracker.Clients.Add(Context.ConnectionId);
            }

            // Add client to that broadcast group
            Groups.Add(Context.ConnectionId, shortCode);

            // Get current price and return
            return new PriceDTO
                {
                    LastTradePrice = tracker.Share.LastTradePrice,
                    ShortCode = tracker.Share.ShortCode,
                    TradeVolume = tracker.Share.TradeVolume
                };
        }
コード例 #6
0
        public void TrackerExposesPriceUpdatedEventWhichNotifiesOfUpdatedPrices()
        {
            Share sasol = new Share
            {
                ShortCode = "SOL",
                LastTradePrice = -1
            };

            using (ShareTracker tracker = new ShareTracker(sasol, 1))
            {
                var eventOccured = false;

                tracker.TradeOccurred += (s, e) =>
                    {
                        eventOccured = true;
                    };

                System.Threading.Thread.Sleep(25);

                Assert.True(eventOccured);
            }
        }