SeibroSecnFrsecSetlParserTests.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getSecnFrsecSetlInfo 파서 — NATION_CD·SECN_TPCD·INTL_BIZ_CACD·SETL_ASK_QTY·SETL_AMT 매핑 + INTL_BIZ_CACD 결측 스킵.</summary>
  4. [TestClass]
  5. public sealed class SeibroSecnFrsecSetlParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_SampleXml_MapsBuySellSettlement()
  9. {
  10. var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getSecnFrsecSetlInfo.xml")));
  11. Assert.AreEqual(2, rows.Count, "매수·매도 2행");
  12. var buy = rows.Single(c => c.IntlBizCacd == "1110");
  13. Assert.AreEqual("US", buy.NationCd);
  14. Assert.AreEqual("71", buy.SecnTpcd);
  15. Assert.AreEqual(1571m, buy.SetlAskQty, "매수 결제신청수량");
  16. Assert.AreEqual(2804130m, buy.SetlAmt, "매수 결제금액 USD");
  17. var sell = rows.Single(c => c.IntlBizCacd == "1120");
  18. Assert.AreEqual(1216m, sell.SetlAskQty);
  19. Assert.AreEqual(2169827m, sell.SetlAmt);
  20. }
  21. [TestMethod]
  22. public void Parse_MissingIntlBizCacd_SkipsRow()
  23. {
  24. const string xml = """
  25. <vector result="2">
  26. <data vectorkey="0" type="Document"><result><NATION_CD value="US"/><SETL_AMT value="100"/></result></data>
  27. <data vectorkey="1" type="Document"><result><NATION_CD value="US"/><INTL_BIZ_CACD value="1110"/><SETL_AMT value="200"/></result></data>
  28. </vector>
  29. """;
  30. var rows = SeibroSecnFrsecSetlParser.Parse(SeibroXml.Parse(xml));
  31. Assert.AreEqual(1, rows.Count, "INTL_BIZ_CACD 없는 행 스킵");
  32. Assert.AreEqual(200m, rows[0].SetlAmt);
  33. }
  34. }