SeibroSlbDealingParserTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. [TestClass]
  4. public sealed class SeibroSlbDealingParserTests
  5. {
  6. [TestMethod]
  7. public void Parse_FromSampleXml_MapsAmountsAndRatios()
  8. {
  9. // SEIBro getSlbDealingByIsin 실응답 fixture — 1행. 응답엔 ISIN/STD_DT 없이 대차 수치만.
  10. var rows = SeibroSlbDealingParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getSlbDealingByIsin.xml")));
  11. Assert.AreEqual(1, rows.Count);
  12. var row = rows[0];
  13. Assert.AreEqual(232553706L, row.TotIssuStkqty, "총발행주식수");
  14. Assert.AreEqual(474002L, row.TrQty, "일일거래량");
  15. Assert.AreEqual(300210L, row.MatcQty, "대차체결");
  16. Assert.AreEqual(39829L, row.RedQty, "대차상환");
  17. Assert.AreEqual(21976319L, row.SlbTrRemQty, "대차잔고주수");
  18. Assert.AreEqual(4179731923300L, row.FrinerLendRemAmt, "외국인 대여잔고금액");
  19. Assert.AreEqual(0.01m, row.FrinerLendRemRatio, "외국인 대여비율 (.01 선행점)");
  20. Assert.AreEqual(1700699489400L, row.NativeLendRemAmt);
  21. Assert.AreEqual(0m, row.NativeLendRemRatio, "0 은 0 (선행점 없음)");
  22. Assert.AreEqual(4881975749000L, row.FrinerBrwRemAmt);
  23. Assert.AreEqual(0.01m, row.FrinerBrwRemRatio);
  24. Assert.AreEqual(998455663700L, row.NativeBrwRemAmt);
  25. Assert.AreEqual(0m, row.NativeBrwRemRatio);
  26. }
  27. [TestMethod]
  28. public void Parse_EmptyVector_ReturnsNoRows()
  29. {
  30. // 기대 행위: 대차 없는 종목(빈 vector result="0") → 0행 (정상 빈결과)
  31. const string xml = """<vector result="0"></vector>""";
  32. var rows = SeibroSlbDealingParser.Parse(SeibroXml.Parse(xml));
  33. Assert.AreEqual(0, rows.Count);
  34. }
  35. }