| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- using Infrastructure.StockData;
- namespace Application.Tests;
- /// <summary>SEIBro getSecnFrsecSetlInfo 파서 — NATION_CD·SECN_TPCD·INTL_BIZ_CACD·SETL_ASK_QTY·SETL_AMT 매핑 + INTL_BIZ_CACD 결측 스킵.</summary>
- [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 = """
- <vector result="2">
- <data vectorkey="0" type="Document"><result><NATION_CD value="US"/><SETL_AMT value="100"/></result></data>
- <data vectorkey="1" type="Document"><result><NATION_CD value="US"/><INTL_BIZ_CACD value="1110"/><SETL_AMT value="200"/></result></data>
- </vector>
- """;
- var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(xml));
- Assert.AreEqual(1, rows.Count, "INTL_BIZ_CACD 없는 행 스킵");
- Assert.AreEqual(200m, rows[0].SetlAmt);
- }
- }
|