using Infrastructure.StockData; namespace Application.Tests; /// SEIBro getDerivCombiIsinInfo 파서 — 대문자 <RESULT> 래퍼(파생결합 5종). 원금보전·만기·발행잔량·기초자산수 필드 + Y/N·날짜·소수 파싱. [TestClass] public sealed class SeibroDerivCombiIsinParserTests { [TestMethod] public void Parse_SampleXml_UppercaseWrapper_MapsMasterFields() { var rows = SeibroDerivCombiIsinParser.Parse(SeibroXml.Parse(SeibroFixtures.Read("getDerivCombiIsinInfo.xml"))); Assert.AreEqual(1, rows.Count); var f = rows[0]; Assert.AreEqual("삼성증권19449(사모/ELS)", f.KorSecnNm); Assert.AreEqual(1636, f.IssucoCustno); Assert.AreEqual("ELS", f.SecnKanm); Assert.AreEqual("KRW", f.IssuCurCd); Assert.AreEqual("21", f.RecuWhcd, "사모"); Assert.AreEqual(132000000m, f.FirstIssuQty); Assert.AreEqual(0m, f.IssuRemq, "발행잔량 0"); Assert.AreEqual(98.5m, f.PayinAmtRatio); Assert.AreEqual(130020000m, f.PayinAmt); Assert.AreEqual(new DateOnly(2018, 7, 2), f.IssuDt); Assert.AreEqual(new DateOnly(2018, 6, 29), f.ContDt); Assert.AreEqual(new DateOnly(2021, 7, 2), f.XpirDt); Assert.IsTrue(f.MidredPossYn, "중도상환가능 Y"); Assert.AreEqual(new DateOnly(2019, 7, 3), f.RedDt); Assert.AreEqual("3", f.DerisecExerTpcd, "조기상환"); Assert.AreEqual("3", f.PrcpPrsvTpcd, "원금비보장"); Assert.AreEqual(0m, f.PrcpPrsvRate); Assert.AreEqual("2", f.ColatSetupTpcd, "미설정"); Assert.AreEqual(3, f.BassetCnt, "기초자산 3종"); Assert.IsFalse(f.MmPayYn, "월지급 N"); } }