SeibroBondStatParserTests.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getBondStatInfo 파서 — 실샘플(1행) 필드 매핑 + 신용등급 4사(빈칸=null 포함) + Y/N·날짜·소수 파싱.</summary>
  4. [TestClass]
  5. public sealed class SeibroBondStatParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_SampleXml_MapsAllFields_AndCreditGrades()
  9. {
  10. var rows = SeibroBondStatParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getBondStatInfo.xml")));
  11. Assert.AreEqual(1, rows.Count);
  12. var f = rows[0];
  13. Assert.AreEqual(29998, f.IssucoCustno);
  14. Assert.AreEqual("SK해운 61", f.KorSecnNm);
  15. Assert.AreEqual("1108", f.SecnKacd);
  16. Assert.AreEqual(new DateOnly(2018, 8, 3), f.IssuDt);
  17. Assert.AreEqual(new DateOnly(2020, 2, 3), f.XpirDt);
  18. Assert.AreEqual("KRW", f.IssuCurCd);
  19. Assert.AreEqual(126000000000m, f.FirstIssuAmt);
  20. Assert.AreEqual(4.485m, f.CouponRate);
  21. Assert.AreEqual("0000", f.OptionTpcd);
  22. Assert.IsFalse(f.ForcErlyRedYn, "FORC_ERLY_RED_YN=N");
  23. Assert.AreEqual("2", f.GrtyTpcd, "무보증");
  24. Assert.AreEqual("1", f.RankTpcd, "선순위");
  25. Assert.IsFalse(f.EltscYn, "ELTSC_YN=N 예탁");
  26. Assert.AreEqual(new DateOnly(2020, 2, 4), f.DlistDt);
  27. // 신용등급 4사: KIS/KR 존재, NICE/SCI 는 빈칸 → null
  28. Assert.AreEqual("133", f.KisValatGrdCd);
  29. Assert.AreEqual("133", f.KrValatGrdCd);
  30. Assert.IsNull(f.NiceValatGrdCd, "빈 value 는 null");
  31. Assert.IsNull(f.SciValatGrdCd, "빈 value 는 null");
  32. }
  33. }