SeibroBassetUnredScaleParserTests.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Infrastructure.StockData;
  2. namespace Application.Tests;
  3. /// <summary>
  4. /// SEIBro getBassetUnredScale 파서 — 소문자 &lt;result&gt; 래퍼(getDerivCombiIssuInfo 와 함께 유이한 소문자 2종).
  5. /// 실샘플은 UNRED_REMA 가 빈 value(SeibroXml 이 키 제외 → null) — 미상환종목수만 있고 잔액 null 인 케이스 방어 확인.
  6. /// </summary>
  7. [TestClass]
  8. public sealed class SeibroBassetUnredScaleParserTests
  9. {
  10. [TestMethod]
  11. public void Parse_SampleXml_LowercaseWrapper_EmptyRemaAsNull()
  12. {
  13. var rows = SeibroBassetUnredScaleParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getBassetUnredScale.xml")));
  14. Assert.AreEqual(1, rows.Count);
  15. var f = rows[0];
  16. Assert.AreEqual("EURO STOXX 50", f.BassetContent);
  17. Assert.AreEqual(2, f.UnredSecncnt, "미상환 2종목");
  18. Assert.IsNull(f.UnredRema, "빈 value(UNRED_REMA) → null");
  19. }
  20. [TestMethod]
  21. public void Parse_WithRema_ParsesDecimal()
  22. {
  23. const string xml = """
  24. <vector result="1"><data vectorkey="0" type="Document"><result>
  25. <BASSET_CONTENT value="HSCEI"/><UNRED_SECNCNT value="150"/><UNRED_REMA value="1234567890.50"/>
  26. </result></data></vector>
  27. """;
  28. var rows = SeibroBassetUnredScaleParser.Parse(SeibroXml.Parse(xml));
  29. Assert.AreEqual(1, rows.Count);
  30. Assert.AreEqual(150, rows[0].UnredSecncnt);
  31. Assert.AreEqual(1234567890.50m, rows[0].UnredRema, "미상환잔액 소수 파싱");
  32. }
  33. }