public void CreateTest() { var ticker = "1234"; var latestQuarter = FiscalQuarterPeriod.Create(2020, 2); // latest Assert.AreEqual(TickerDayParameter.Create(ticker, LatestDayPeriod.GetInstance()), TickerPeriodParameterCreator.Create(ticker, "latest", null)); // day Assert.AreEqual(TickerDayParameter.Create(ticker, DayPeriod.Create(2020, 1, 1)), TickerPeriodParameterCreator.Create(ticker, "2020-01-01", null)); // LYLQ Assert.AreEqual(TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.Create(0, 0)), TickerPeriodParameterCreator.Create(ticker, "LYLQ", null)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.Create(1, 0)), TickerPeriodParameterCreator.Create(ticker, "LY-1LQ", null)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.Create(0, 2)), TickerPeriodParameterCreator.Create(ticker, "LYLQ-2", null)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.Create(1, 2)), TickerPeriodParameterCreator.Create(ticker, "LY-1LQ-2", null)); // Quarter Assert.AreEqual(TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(2020, 1)), TickerPeriodParameterCreator.Create(ticker, "2020Q1", null)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, "2019", "LQ-1", FiscalQuarterPeriod.Create(2019, 1)), TickerPeriodParameterCreator.Create(ticker, "2019LQ-1", latestQuarter)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, "2019", "LQ-2", FiscalQuarterPeriod.Create(2018, 4)), TickerPeriodParameterCreator.Create(ticker, "2019LQ-2", latestQuarter)); Assert.AreEqual(TickerQuarterParameter.Create(ticker, "LY-2", "4", FiscalQuarterPeriod.Create(2018, 4)), TickerPeriodParameterCreator.Create(ticker, "LY-2Q4", latestQuarter)); // others Assert.ThrowsException <ValidationError>(() => TickerPeriodParameterCreator.Create(ticker, "dummy", null)); }
public void GetQuarterTest() { var client = new BuffettCodeApiV2Client(mockApiCore); var parameter = TickerQuarterParameter.Create("6501", FiscalQuarterPeriod.Create(2019, 4)); Assert.IsNotNull(client.GetQuarter(parameter, false, true, false)); }
public void GetPeriodTest() { var ticker = "1234"; var period = FiscalQuarterPeriod.Create(2020, 1); Assert.AreEqual(period, TickerQuarterParameter.Create(ticker, period).GetPeriod()); Assert.AreEqual(period, TickerQuarterParameter.Create(ticker, "LY", "LQ", period).GetPeriod()); }
public static ITickerPeriodParameter Create(string ticker, string periodParam, FiscalQuarterPeriod latestFiscalQuarterPeriod) { if (periodParam.Equals("latest")) { return(TickerDayParameter.Create(ticker, LatestDayPeriod.GetInstance())); } else if (PeriodRegularExpressionConfig.DayRegex.IsMatch(periodParam)) { return(TickerDayParameter.Create(ticker, DayPeriod.Parse(periodParam))); } else if (PeriodRegularExpressionConfig.FiscalQuarterRegex.IsMatch(periodParam)) { var period = FiscalQuarterPeriod.Parse(periodParam); return(TickerQuarterParameter.Create(ticker, period)); } else if (PeriodRegularExpressionConfig.RelativeFiscalQuarterRegex.IsMatch(periodParam)) { var period = RelativeFiscalQuarterPeriod.Parse(periodParam); return(TickerQuarterParameter.Create(ticker, period)); } else if (PeriodRegularExpressionConfig.BCodeUdfFiscalQuarterInputRegex.IsMatch(periodParam)) { var match = PeriodRegularExpressionConfig.BCodeUdfFiscalQuarterInputRegex .Match(periodParam); var fy = match.Groups["fiscalYear"].Value.Trim(); var fq = match.Groups["fiscalQuarter"].Value.Trim(); if (fy.Contains("LY")) { var prevYears = RelativeFiscalQuarterPeriod.ParseRelativeValue("years", match); if (prevYears > latestFiscalQuarterPeriod.Year) { throw new ValidationError($"{prevYears} is bigger than {latestFiscalQuarterPeriod.Year}"); } var fiscalQuarter = fq.Replace("Q", ""); var period = FiscalQuarterPeriod.Create(latestFiscalQuarterPeriod.Year - prevYears, uint.Parse(fiscalQuarter)); return(TickerQuarterParameter.Create(ticker, fy, fiscalQuarter, period)); } else if (fq.Contains("LQ")) { var prevQuarters = RelativeFiscalQuarterPeriod.ParseRelativeValue("quarters", match); var period = FiscalQuarterPeriod.Create(uint.Parse(fy), latestFiscalQuarterPeriod.Quarter).Before(0, prevQuarters); return(TickerQuarterParameter.Create(ticker, fy, fq, period)); } else { throw new ValidationError($"{periodParam} is not supported input format"); } } else { throw new ValidationError($"{periodParam} is not supported input format"); } }
public void GetTest() { var ticker = "2345"; var client = new BuffettCodeApiV2Client(mockApiCore); var day = TickerDayParameter.Create(ticker, DayPeriod.Create(2021, 2, 1)); var fyFq = TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(2019, 4)); var empty = TickerEmptyPeriodParameter.Create(ticker, Snapshot.GetInstance()); Assert.IsNotNull(client.Get(DataTypeConfig.Indicator, empty, false, true, false)); Assert.IsNotNull(client.Get(DataTypeConfig.Quarter, fyFq, false, true, false)); Assert.IsNotNull(client.Get(DataTypeConfig.Company, empty, false, true, false)); Assert.ThrowsException <NotSupportedDataTypeException>(() => client.Get(DataTypeConfig.Daily, day, false, true, false)); }
public void ToApiV2ParametersTest() { var ticker = "1234"; var parameter1 = TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(2020, 1)).ToApiV2Parameters(); Assert.AreEqual(ticker, parameter1["ticker"]); Assert.AreEqual("2020", parameter1["fy"]); Assert.AreEqual("1", parameter1["fq"]); var parameter2 = TickerQuarterParameter.Create(ticker, "LY", "LQ", FiscalQuarterPeriod.Create(2020, 1)).ToApiV2Parameters(); Assert.AreEqual(ticker, parameter1["ticker"]); Assert.AreEqual("LY", parameter2["fy"]); Assert.AreEqual("LQ", parameter2["fq"]); }
public void CreateGetQuarterRequestTest() { var ticker = "6591"; uint fiscalYear = 2019; uint fiscalQuarter = 3; var parameter = TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(fiscalYear, fiscalQuarter)); // use ondemand var request = BuffettCodeApiV3RequestCreator.CreateGetQuarterRequest(parameter, true); Assert.AreEqual(request.EndPoint, BuffettCodeApiV3Config.ENDPOINT_ONDEMAND_QUARTER); Assert.AreEqual(ticker, request.Parameters["ticker"]); Assert.AreEqual(fiscalYear.ToString(), request.Parameters["fy"]); Assert.AreEqual(fiscalQuarter.ToString(), request.Parameters["fq"]); // not use ondemand request = BuffettCodeApiV3RequestCreator.CreateGetQuarterRequest(parameter, false); Assert.AreEqual(request.EndPoint, BuffettCodeApiV3Config.ENDPOINT_QUARTER); Assert.AreEqual(ticker, request.Parameters["ticker"]); Assert.AreEqual(fiscalYear.ToString(), request.Parameters["fy"]); Assert.AreEqual(fiscalQuarter.ToString(), request.Parameters["fq"]); }
public void EqualsTest() { var a = TickerQuarterParameter.Create("1234", FiscalQuarterPeriod.Create(2020, 1)); var b = TickerQuarterParameter.Create("1234", FiscalQuarterPeriod.Parse("2020Q1")); var c = TickerQuarterParameter.Create("2345", FiscalQuarterPeriod.Create(2020, 1)); var d = TickerQuarterParameter.Create("1234", FiscalQuarterPeriod.Create(2020, 2)); var e = TickerQuarterParameter.Create("1234", RelativeFiscalQuarterPeriod.Create(1, 2)); var f = TickerQuarterParameter.Create("1234", RelativeFiscalQuarterPeriod.Create(1, 2)); var g = TickerQuarterParameter.Create("1234", RelativeFiscalQuarterPeriod.Create(1, 3)); var i = TickerQuarterParameter.Create("2345", RelativeFiscalQuarterPeriod.Create(1, 2)); var j = TickerQuarterParameter.Create("2345", "2019", "LQ-2", RelativeFiscalQuarterPeriod.Create(1, 2)); Assert.AreEqual(a, b); Assert.AreNotEqual(a, c); Assert.AreNotEqual(a, d); Assert.AreNotEqual(a, e); Assert.AreEqual(e, f); Assert.AreNotEqual(e, g); Assert.AreNotEqual(e, i); Assert.AreNotEqual(e, g); Assert.AreNotEqual(e, j); }
public void CreateTest() { var ticker = "1234"; // fiscal quarter period var quarter = FiscalQuarterPeriod.Create(2020, 1); Assert.AreEqual("2020Q1", TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(2020, 1)).GetPeriod().ToString()); Assert.AreEqual("2020Q1", TickerQuarterParameter.Create(ticker, "LY-1", "LQ-20", FiscalQuarterPeriod.Create(2020, 1)).GetPeriod().ToString()); Assert.AreEqual("LYLQ", TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.Create(0, 0)).GetPeriod().ToString()); // validation checks Assert.ThrowsException <ValidationError>(() => TickerQuarterParameter.Create("dummy", "LY", "LQ", quarter)); Assert.ThrowsException <ValidationError>(() => TickerQuarterParameter.Create(ticker, "ly", "LQ", quarter)); Assert.ThrowsException <ValidationError>(() => TickerQuarterParameter.Create(ticker, "LY", "lq", quarter)); Assert.ThrowsException <ValidationError>(() => TickerQuarterParameter.Create(ticker, "LY", "6", quarter)); }
public ITickerPeriodParameter Build() { switch (dataType) { case DataTypeConfig.Indicator: return(TickerEmptyPeriodParameter.Create(ticker, Snapshot.GetInstance())); case DataTypeConfig.Quarter: if (string.IsNullOrWhiteSpace(parameter1) && string.IsNullOrWhiteSpace(parameter2)) { return(TickerQuarterParameter.Create(ticker, RelativeFiscalQuarterPeriod.CreateLatest())); } else { return(TickerQuarterParameter.Create(ticker, FiscalQuarterPeriod.Create(parameter1, parameter2))); } case DataTypeConfig.Daily: return(TickerDayParameter.Create(ticker, LatestDayPeriod.GetInstance())); default: throw new NotSupportedDataTypeException($"dataType ={dataType} is not supported."); } }