示例#1
0
        public void GenerateFinanceWithPeriods_Given2CorrectRows_MapsCorrectly()
        {
            // Arrange
            var financeLoader = this.CreateFinanceLoader();
            FinanceRawData rawData = new FinanceRawData()
            {
                Periods = new List<string>() { "2000", "2010" },
                Rows = new List<FinanceRawData.Row>() {
                    new FinanceRawData.Row() {
                        Label="NetProfit",
                        Vals=new List<string>(){ "1","2"}
                },
                new FinanceRawData.Row() {
                        Label="AdministrationCosts",
                        Vals=new List<string>(){ "10","20"}
                }}
            };

            // Act
            List<Tuple<Income, Period>> result = financeLoader.GenerateFinanceWithPeriods(
                rawData);

            // Assert
            List<Tuple<Income, Period>> expected = new List<Tuple<Income, Period>>() {
                new Tuple<Income, Period>(new Income(){ NetProfit=1,AdministrationCosts=10},new Period(2000)),
                new Tuple<Income, Period>(new Income(){ NetProfit=10,AdministrationCosts=20},new Period(2010))
            };
            CompareLogic compareLogic = new CompareLogic();
            var comparision = compareLogic.Compare(expected, result);
            this.mockRepository.VerifyAll();
        }
示例#2
0
        public IEnumerable <Statement> Get(string stockLinkSuffix)
        {
            FinanceRawData incomeRawData               = incomeRawDataSource.Get(stockLinkSuffix);
            FinanceRawData balanceRawData              = balanceRawDataSource.Get(stockLinkSuffix);
            FinanceRawData cashflowRawData             = cashflowRawDataSource.Get(stockLinkSuffix);
            List <Tuple <Income, Period> >   incomes   = incomeLoader.GenerateFinanceWithPeriods(incomeRawData);
            List <Tuple <Balance, Period> >  balances  = balanceLoader.GenerateFinanceWithPeriods(balanceRawData);
            List <Tuple <Cashflow, Period> > cashflows = cashflowLoader.GenerateFinanceWithPeriods(cashflowRawData);
            List <Statement> statements = new List <Statement>();
            int periodsCount            = Math.Min(incomes.Count, Math.Min(balances.Count, cashflows.Count));

            for (int i = 0; i < periodsCount; i++)
            {
                Period cohesivePeriod = GetCohesivePeriod(incomes[i].Item2, balances[i].Item2, cashflows[i].Item2);
                if (cohesivePeriod != null)
                {
                    Statement statement = new Statement()
                    {
                        Period   = cohesivePeriod,
                        Balance  = balances[i].Item1,
                        Cashflow = cashflows[i].Item1,
                        Income   = incomes[i].Item1
                    };
                    statements.Add(statement);
                }
            }
            return(statements);
        }
        public void Scrape_GetCashflow_ScrapsCorrect()
        {
            // Arrange
            string htmlPath    = Path.Combine(testDataPath, "BHW_cashflow.html");
            string html        = File.ReadAllText(htmlPath);
            var    dataScraper = financeExtractorFactory.CreateFromName("Cashflow");

            // Act
            FinanceRawData scrapedData = dataScraper.Extract(html);

            // Assert
            Assert.Equal("2004", scrapedData.Periods[0]);
            Assert.Equal("OperatingCashflow", scrapedData.Rows[0].Label);
            Assert.Equal("217139", scrapedData.Rows[0].Vals[0]);
        }
        public void Scrape_GetBalance_ScrapsCorrect()
        {
            // Arrange
            string htmlPath    = Path.Combine(testDataPath, "BHW_balance.html");
            string html        = File.ReadAllText(htmlPath);
            var    dataScraper = financeExtractorFactory.CreateFromName("Balance");

            // Act
            FinanceRawData scrapedData = dataScraper.Extract(html);

            // Assert
            Assert.Equal("2004", scrapedData.Periods[0]);
            Assert.Equal("CashWithCentralBank", scrapedData.Rows[0].Label);
            Assert.Equal("841114", scrapedData.Rows[0].Vals[0]);
        }
        public void Scrape_GetIncome_ScrapsCorrect()
        {
            // Arrange
            string htmlPath    = Path.Combine(testDataPath, "BHW_income.html");
            string html        = File.ReadAllText(htmlPath);
            var    dataScraper = financeExtractorFactory.CreateFromName("Income");

            // Act
            FinanceRawData scrapedData = dataScraper.Extract(html);

            // Assert
            Assert.Equal("2004", scrapedData.Periods[0]);
            Assert.Equal("IntrestIncome", scrapedData.Rows[0].Label);
            Assert.Equal("1727312", scrapedData.Rows[0].Vals[0]);
        }
示例#6
0
        public List <Tuple <TFinance, Period> > GenerateFinanceWithPeriods(FinanceRawData rawData)
        {
            List <Tuple <TFinance, Period> > financesWithPeriods = new List <Tuple <TFinance, Period> >();

            for (int i = 0; i < rawData.Periods.Count; i++)
            {
                TFinance domainObj             = new TFinance();
                Period   period                = periodDeserializer.Deserialize(rawData.Periods[i]);
                Tuple <TFinance, Period> tuple = new Tuple <TFinance, Period>(domainObj, period);
                financesWithPeriods.Add(tuple);
            }
            foreach (var row in rawData.Rows)
            {
                FillFinanceWithData(financesWithPeriods, row);
            }
            return(financesWithPeriods);
        }