public static void RefreshTable(StockCollection stockCollection, V_GetStockPriceDelegate getStockPrice, ListView listViewStocks)
        {
            var stockValues   = V_StockValuator.GetStockValues(stockCollection, getStockPrice);
            var lineInfos     = V_Formatter.GetLineInfos(stockValues);
            var listViewItems = lineInfos.Select(CreateListViewItem).ToArray();

            listViewStocks.Items.Clear();
            listViewStocks.Items.AddRange(listViewItems);
        }
 public static List <StockValue> GetStockValues(StockCollection stockCollection, V_GetStockPriceDelegate getStockPrice)
 {
     return(stockCollection.EnumerateStocks()
            .Select(stock =>
                    new
     {
         Stock = stock,
         Price = getStockPrice(stock.Ticker)
     })
            .Select(t => new StockValue(t.Stock, t.Price, t.Stock.GetCurrentValue(t.Price), t.Stock.GetGain(t.Price)))
            .ToList());
 }
Exemplo n.º 3
0
        public Form1(StocksStore stocksStore, GainModel gainModel, V_GetStockPriceDelegate getStockPrice)
        {
            _stocksStore = stocksStore;
            InitializeComponent();

            _stocksRepository         = stocksStore;
            _gainModel                = gainModel;
            _getStockPrice            = getStockPrice;
            _stockCollection          = stocksStore.LoadStocks();
            _stockCollection.Changed += (sender, e) => V_StockProcessor.RefreshTable(_stockCollection, _getStockPrice, _listViewStocks);
            _stockCollection.Changed += (sender, e) => SaveStocks();

            V_StockProcessor.RefreshTable(_stockCollection, _getStockPrice, _listViewStocks);
        }
        public void when_I_call_GetStockValues__the_stock_values_are_correct()
        {
            var stocks = new StockCollection();

            stocks.Add("MSFT", 100, 100, "5/10/2020");
            stocks.Add("GOOG", 300, 400, "6/10/2020");

            var stockPrices = new Dictionary <string, double>
            {
                { "MSFT", 225.0 },
                { "GOOG", 433.0 }
            };
            V_GetStockPriceDelegate getStockPrice = stockTicker => stockPrices[stockTicker];

            var stockValues = V_StockValuator.GetStockValues(stocks, getStockPrice);

            stockValues.Should().Equal(
                new StockValue(new Stock("MSFT", 100, 100, "5/10/2020"), 225.0, 22500.0, 12500.0),
                new StockValue(new Stock("GOOG", 300, 400, "6/10/2020"), 433.0, 129900.0, 9900.0)
                );
        }