SeibroAssetXrcParserTests.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>SEIBro getAssetXrcInfo 파서 — 대문자 &lt;RESULT&gt; 래퍼. 행사기준일련번호(XrcStdSeq)별 기준비율·행사가격 다수 행 매핑.</summary>
  4. [TestClass]
  5. public sealed class SeibroAssetXrcParserTests
  6. {
  7. [TestMethod]
  8. public void Parse_SampleXml_MapsExerciseRows()
  9. {
  10. var rows = SeibroAssetXrcParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getAssetXrcInfo.xml")));
  11. Assert.AreEqual(8, rows.Count, "행사기준 8단계");
  12. var first = rows.Single(c => c.XrcStdSeq == 1);
  13. Assert.AreEqual(1, first.AssetSeq);
  14. Assert.AreEqual(100m, first.XrcStdRatio);
  15. Assert.AreEqual(278.83m, first.XrcPrice);
  16. var last = rows.Single(c => c.XrcStdSeq == 8);
  17. Assert.AreEqual(65m, last.XrcStdRatio, "마지막 배리어 65%");
  18. Assert.AreEqual(181.2395m, last.XrcPrice);
  19. }
  20. [TestMethod]
  21. public void Parse_MissingKeys_SkipsRow()
  22. {
  23. const string xml = """
  24. <vector result="1"><data vectorkey="0" type="Document"><RESULT>
  25. <ASSET_SEQ value="1"/><XRC_STD_RATIO value="100"/>
  26. </RESULT></data></vector>
  27. """;
  28. var rows = SeibroAssetXrcParser.Parse(SeibroXml.Parse(xml));
  29. Assert.AreEqual(0, rows.Count, "XRC_STD_SEQ 없으면 스킵");
  30. }
  31. }