public bool ValidTenorAsInWrongOrder(string tenor) { tenor = "3m1d"; var pr = new PortfolioRisk() { Tenor = tenor }; var vpr = new ValidPortfolioRisk(pr); return(vpr.IsValid); }
public void ValidTenor() { var tenor = "2y11m1w2d"; var pr = new PortfolioRisk() { Tenor = tenor }; var vt = new ValidPortfolioRisk(pr); StringAssert.AreEqualIgnoringCase(tenor, vt.Value.Tenor); }
public bool InValidTenorAsInWrongOrder(string tenor) { tenor = "1d3m"; var pr = new PortfolioRisk() { Tenor = tenor }; var vpr = new ValidPortfolioRisk(pr); return(vpr.IsValid); //var ex = Assert.Throws<ArgumentException>(() => new ValidPortfolioRisk(pr)); //StringAssert.AreEqualIgnoringCase("The tenor code is not valid", ex.Message); }
public void InValidTenor() { var tenor = "2x11f1w2d"; var pr = new PortfolioRisk() { Tenor = tenor }; var vpr = new ValidPortfolioRisk(pr); Assert.IsFalse(vpr.IsValid); //var ex = Assert.Throws<ArgumentException>(() => new ValidPortfolioRisk(pr)); //StringAssert.AreEqualIgnoringCase("The tenor code is not valid", ex.Message); }
public static Portfolios Process(DataTable table, string source, DateTime valueDate) { var stopWatch = new Stopwatch(); stopWatch.Start(); var portfolios = new Portfolios { Source = source }; var tenorCol = table.Columns["tenor"]; var portfolioidCol = table.Columns["portfolioid"]; var valueCol = table.Columns["value"]; var sql = "tenor is not null AND portfolioid <> 0"; //remove any null rows. Its assumed all other data is valid that has been saved to file. var rows = table.Select(sql); //todo: AsParallel() this read. foreach (DataRow tableRow in rows) { var tenor = tableRow[tenorCol].ToString(); var portfolioid = Utils.SafeCastToIntParse(tableRow[portfolioidCol].ToString()); var value = Utils.SafeCastToDoubleParse(tableRow[valueCol].ToString()); var pr = new PortfolioRisk() { Tenor = tenor, PortfolioId = portfolioid, Value = value, ValueDate = valueDate, Source = source, LastUpdated = ConfigDataHandler.SystemName, UpdateDate = DateTime.UtcNow }; portfolios.Add(pr); } stopWatch.Stop(); portfolios.LoadTime = stopWatch.Elapsed; return(portfolios); }
public ValidPortfolioRisk(PortfolioRisk portfolioRisk) { IsValid = true; ErrorMessage = string.Empty; //if (string.IsNullOrEmpty(portfolioRisk.Tenor)) //{ // ErrorMessage = "The tenor code is not valid"; // IsValid = false; //} var result = portfolioRisk.Tenor.ToCharArray().Where(x => !ValidCodes.Any(y => y.Equals(x)) && !Char.IsNumber(x)); if (result.Any()) { ErrorMessage = "The tenor code is not valid"; IsValid = false; } //validate order var codes = portfolioRisk.Tenor.Where(x => Char.IsLetter(x)); var ordered = ValidCodes.Where(x => codes.Any(y => y.Equals(x))); var sequenceEqual = ordered.SequenceEqual(codes.ToList()); if (!sequenceEqual) { ErrorMessage = "The tenor code sequency is not correct"; IsValid = false; } Value = portfolioRisk; }