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(); }
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]); }
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); }