public void Test() { // Collection with 1 item to make this test simple Items = new ContinuousCollection<NotifiableItem> { new NotifiableItem { TestValue1 = 3, TestValue2 = 10 }, }; // Start with TestValue1 MaxValueCV = Items.ContinuousMax(item => item.TestValue1, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); // Switch to TestValue2 MaxValueCV = Items.ContinuousMax(item => item.TestValue2, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); GC.Collect(); WeakPropertyChangedEventManager.RemoveCollectedEntries(); GC.Collect(); // Now set TestValue1 Items[0].TestValue1 = 20; Console.WriteLine("(BUG)"); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); // BUG: Max is set to 20 when it should be 10 Console.WriteLine("Max = " + Max); Assert.AreEqual(10, Max); Console.Write("Hit enter to continue..."); Console.ReadLine(); }
public void Test() { // Collection with 1 item to make this test simple Items = new ContinuousCollection <NotifiableItem> { new NotifiableItem { TestValue1 = 3, TestValue2 = 10 }, }; // Start with TestValue1 MaxValueCV = Items.ContinuousMax(item => item.TestValue1, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); // Switch to TestValue2 MaxValueCV = Items.ContinuousMax(item => item.TestValue2, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); GC.Collect(); WeakPropertyChangedEventManager.RemoveCollectedEntries(); GC.Collect(); // Now set TestValue1 Items[0].TestValue1 = 20; Console.WriteLine("(BUG)"); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); // BUG: Max is set to 20 when it should be 10 Console.WriteLine("Max = " + Max); Assert.AreEqual(10, Max); Console.Write("Hit enter to continue..."); Console.ReadLine(); }
public MonitorWindowModel() : base() { _tickerData = new ContinuousCollection <StockSaleTick>(); _vwapTicks = new ContinuousCollection <StockSaleTick>(); _allQuotes = new ContinuousCollection <StockQuoteTick>(); _bidTicks = from quote in _allQuotes where quote.Side == QuoteSide.Bid select quote; _askTicks = from quote in _allQuotes where quote.Side == QuoteSide.Ask select quote; _allTicks = from tick in _tickerData where tick.Symbol == "AAPL" select tick; _graphWindowTicks = from tick in _tickerData where tick.TimeStamp >= DateTime.Now.AddMinutes(-5) && tick.Symbol == "AAPL" select tick; // return last 5 minutes worth of ticks for AAPL */ _liveVwap = _allTicks.ContinuousVwap <StockSaleTick>( tick => tick.Price, tick => tick.Quantity); _liveHigh = _allTicks.ContinuousMax <StockSaleTick>( tick => tick.Price); _liveMin = _allTicks.ContinuousMin <StockSaleTick>( tick => tick.Price); _liveMin.PropertyChanged += new PropertyChangedEventHandler(_liveMin_PropertyChanged); _liveHigh.PropertyChanged += new PropertyChangedEventHandler(_liveHigh_PropertyChanged); _liveVwap.PropertyChanged += new PropertyChangedEventHandler(_liveVwap_PropertyChanged); _simulationTimer = new Timer(); _simulationTimer.Elapsed += new ElapsedEventHandler(_simulationTimer_Elapsed); _simulationTimer.Interval = 1000; _simulationTimer.Start(); // create a new tick every second }