public void TwoStockTicksWithSmallChangeAndOneWithDrasticChange_OnlyOneDrasticChangeEmitted() { var testScheduler = new TestScheduler(); var testableObserver = testScheduler.CreateObserver <DrasticChange>(); var stockTicker = Substitute.For <IStockTicker>(); var rxStockMonitor = new StockMonitor(stockTicker); testScheduler.Schedule(TimeSpan.FromTicks(1), () => { stockTicker.StockTick += Raise.Event <EventHandler <StockTick> >(stockTicker, new StockTick { Price = 100, QuoteSymbol = "MSFT" }); }); testScheduler.Schedule(TimeSpan.FromTicks(2), () => { stockTicker.StockTick += Raise.Event <EventHandler <StockTick> >(stockTicker, new StockTick { Price = 101, QuoteSymbol = "MSFT" }); }); testScheduler.Schedule(TimeSpan.FromTicks(3), () => { stockTicker.StockTick += Raise.Event <EventHandler <StockTick> >(stockTicker, new StockTick { Price = 200, QuoteSymbol = "MSFT" }); }); rxStockMonitor.DrasticChanges.Subscribe(testableObserver); testScheduler.Start(); testableObserver.Messages.AssertEqual( OnNext(3, (DrasticChange drasticChange) => drasticChange.Symbol == "MSFT") ); }
public void MonitorEdit(StockMonitor obj, int sourceId, string reason) { obj.CreatedDate = DateTime.Now; obj.SourceId = sourceId; obj.Reason = reason; db.SubmitChanges(); }
public void StockMonitorBehavior() { var a = new Alert(new Ticker("AMD"), System.Guid.NewGuid()); a.AddPricePoint("initial", 50); var m = new StockMonitor(a, a.PricePoints[0]); Assert.Null(m.Value); var triggered = m.CheckTrigger("AMD", 50, DateTimeOffset.UtcNow, out var trigger); Assert.Equal(50, m.Value); Assert.False(triggered); triggered = m.CheckTrigger("AMD", 51, DateTimeOffset.UtcNow, out trigger); Assert.False(triggered); triggered = m.CheckTrigger("AMD", 48, DateTimeOffset.UtcNow, out trigger); Assert.True(triggered); Assert.Equal("AMD", trigger.Ticker); Assert.Equal(48, trigger.NewValue); Assert.Equal("DOWN", trigger.Direction); triggered = m.CheckTrigger("BING", 52, DateTimeOffset.UtcNow, out trigger); Assert.False(triggered); }
public void MonitorEdit(int id, int sourceId, string reason) { StockMonitor obj = db.StockMonitors.Where(v => v.Id == id).First(); obj.CreatedDate = DateTime.Now; obj.SourceId = sourceId; obj.Reason = reason; db.SubmitChanges(); }
public int MonitorUpdate(int stockId, int sourceId, string reason) { int id; try { StockMonitor obj = db.StockMonitors.Where(v => v.StockId == stockId).First(); MonitorEdit(obj, sourceId, reason); StockHolder(stockId); return(obj.Id); } catch (Exception) { return(MonitorInsert(stockId, sourceId, reason)); } }
public int MonitorInsert(int stockId, int sourceId, string reason) { StockMonitor obj = new StockMonitor(); obj.CreatedDate = DateTime.Now; obj.StockId = stockId; obj.SourceId = sourceId; obj.Reason = reason; db.StockMonitors.InsertOnSubmit(obj); Portfolio obj1 = new Portfolio(); obj1.StockId = stockId; db.Portfolios.InsertOnSubmit(obj1); db.SubmitChanges(); return(obj.Id); }
public void TwoStockTicksWithSmallChangeAndOneWithDrasticChange_OnlyOneDrasticChangeEmitted() { var testScheduler = new TestScheduler(); var testableObserver = testScheduler.CreateObserver<DrasticChange>(); var stockTicker = Substitute.For<IStockTicker>(); var rxStockMonitor = new StockMonitor(stockTicker); testScheduler.Schedule(TimeSpan.FromTicks(1), () => { stockTicker.StockTick += Raise.Event<EventHandler<StockTick>>(stockTicker,new StockTick{Price=100,QuoteSymbol="MSFT"}); }); testScheduler.Schedule(TimeSpan.FromTicks(2), () => { stockTicker.StockTick += Raise.Event<EventHandler<StockTick>>(stockTicker, new StockTick{Price=101,QuoteSymbol="MSFT"}); }); testScheduler.Schedule(TimeSpan.FromTicks(3), () => { stockTicker.StockTick += Raise.Event<EventHandler<StockTick>>(stockTicker, new StockTick{Price=200,QuoteSymbol="MSFT"}); }); rxStockMonitor.DrasticChanges.Subscribe(testableObserver); testScheduler.Start(); testableObserver.Messages.AssertEqual( OnNext(3,(DrasticChange drasticChange)=>drasticChange.Symbol=="MSFT") ); }
public void AddStockinfo(StockMonitor item) { int error = 0; do { try { using (var db = DbFactory.OpenDbConnection()) { db.Insert(item); } break; } catch (Exception ex1) { error++; Thread.Sleep(10000); LogServer.WriteLog(ex1.Message, "DBError"); } } while (error < 4); }
static void Main(string[] args) { StockMonitor stockMonitor = new StockMonitor(); Stock stock = new Stock("BMW", 11.00m); //stockMonitor.SetData(stock); BMWObserver bmw = new BMWObserver("BMW", stockMonitor); VWObserver vw = new VWObserver("VW", stockMonitor); //AudiObserver audi = new AudiObserver(stockMonitor); // Stock data examples List <Stock> stocks = new List <Stock> { new Stock("BMW", 12.00m), new Stock("VW", 8.00m), new Stock("BMW", 12.50m), new Stock("Audi", 10.00m), new Stock("VW", 7.50m), new Stock("BMW", 13.50m), new Stock("BMW", 14.50m), new Stock("Audi", 10.50m), new Stock("Audi", 11.00m), new Stock("VW", 7.00m), }; foreach (var s in stocks) { stockMonitor.SetData(s); } }
public AbstractObserver(string name, StockMonitor subject) { this.name = name; stockMonitor = subject; stockMonitor.Register(this); }