using Infrastructure.StockData; namespace Application.Tests; [TestClass] public sealed class SeibroSlbDealingParserTests { [TestMethod] public void Parse_FromSampleXml_MapsAmountsAndRatios() { // SEIBro getSlbDealingByIsin 실응답 fixture — 1행. 응답엔 ISIN/STD_DT 없이 대차 수치만. var rows = SeibroSlbDealingParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getSlbDealingByIsin.xml"))); Assert.AreEqual(1, rows.Count); var row = rows[0]; Assert.AreEqual(232553706L, row.TotIssuStkqty, "총발행주식수"); Assert.AreEqual(474002L, row.TrQty, "일일거래량"); Assert.AreEqual(300210L, row.MatcQty, "대차체결"); Assert.AreEqual(39829L, row.RedQty, "대차상환"); Assert.AreEqual(21976319L, row.SlbTrRemQty, "대차잔고주수"); Assert.AreEqual(4179731923300L, row.FrinerLendRemAmt, "외국인 대여잔고금액"); Assert.AreEqual(0.01m, row.FrinerLendRemRatio, "외국인 대여비율 (.01 선행점)"); Assert.AreEqual(1700699489400L, row.NativeLendRemAmt); Assert.AreEqual(0m, row.NativeLendRemRatio, "0 은 0 (선행점 없음)"); Assert.AreEqual(4881975749000L, row.FrinerBrwRemAmt); Assert.AreEqual(0.01m, row.FrinerBrwRemRatio); Assert.AreEqual(998455663700L, row.NativeBrwRemAmt); Assert.AreEqual(0m, row.NativeBrwRemRatio); } [TestMethod] public void Parse_EmptyVector_ReturnsNoRows() { // 기대 행위: 대차 없는 종목(빈 vector result="0") → 0행 (정상 빈결과) const string xml = """"""; var rows = SeibroSlbDealingParser.Parse(SeibroXml.Parse(xml)); Assert.AreEqual(0, rows.Count); } }