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")
                );
        }
Exemple #2
0
 public void MonitorEdit(StockMonitor obj, int sourceId, string reason)
 {
     obj.CreatedDate = DateTime.Now;
     obj.SourceId    = sourceId;
     obj.Reason      = reason;
     db.SubmitChanges();
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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)); }
        }
Exemple #6
0
        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);
            }
        }
Exemple #10
0
 public AbstractObserver(string name, StockMonitor subject)
 {
     this.name    = name;
     stockMonitor = subject;
     stockMonitor.Register(this);
 }