using Infrastructure.StockData; namespace Application.Tests; /// SEIBro getSecnFrsecSetlInfo 파서 — NATION_CD·SECN_TPCD·INTL_BIZ_CACD·SETL_ASK_QTY·SETL_AMT 매핑 + INTL_BIZ_CACD 결측 스킵. [TestClass] public sealed class SeibroSecnFrsecSetlParserTests { [TestMethod] public void Parse_SampleXml_MapsBuySellSettlement() { var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getSecnFrsecSetlInfo.xml"))); Assert.AreEqual(2, rows.Count, "매수·매도 2행"); var buy = rows.Single(c => c.IntlBizCacd == "1110"); Assert.AreEqual("US", buy.NationCd); Assert.AreEqual("71", buy.SecnTpcd); Assert.AreEqual(1571m, buy.SetlAskQty, "매수 결제신청수량"); Assert.AreEqual(2804130m, buy.SetlAmt, "매수 결제금액 USD"); var sell = rows.Single(c => c.IntlBizCacd == "1120"); Assert.AreEqual(1216m, sell.SetlAskQty); Assert.AreEqual(2169827m, sell.SetlAmt); } [TestMethod] public void Parse_MissingIntlBizCacd_SkipsRow() { const string xml = """ """; var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(xml)); Assert.AreEqual(1, rows.Count, "INTL_BIZ_CACD 없는 행 스킵"); Assert.AreEqual(200m, rows[0].SetlAmt); } }