92 lines
3.3 KiB
C#
92 lines
3.3 KiB
C#
using MBN_STOCK_WEBVIEW.Core.Playout.Scenes;
|
|
using MBN_STOCK_WEBVIEW.LegacyApplication;
|
|
|
|
namespace MBN_STOCK_WEBVIEW.LegacyApplication.Tests;
|
|
|
|
public sealed class LegacyStockCutCatalogTests
|
|
{
|
|
[Fact]
|
|
public void Rows_MatchRuntimeAssetPhysicalLayout()
|
|
{
|
|
Assert.Equal(33, LegacyStockCutCatalog.Rows.Count);
|
|
Assert.Equal(31, LegacyStockCutCatalog.Rows.Count(row => !row.IsSeparator));
|
|
Assert.Equal([3, 8], LegacyStockCutCatalog.Rows
|
|
.Where(row => row.IsSeparator)
|
|
.Select(row => row.PhysicalIndex));
|
|
Assert.Equal("1열판기본_시간외단일가", LegacyStockCutCatalog.Rows[2].RawLabel);
|
|
Assert.Equal(31, LegacyStockCutCatalog.Rows[^1].DisplayOrdinal);
|
|
Assert.Equal(
|
|
"45DFB1804828F0E4A45F73D681AF0709CE5662872FAA49CFC9F7A0B940409E20",
|
|
LegacyStockCutCatalog.RuntimeAssetSha256);
|
|
}
|
|
|
|
[Fact]
|
|
public void EveryActiveCut_ResolvesToRegisteredAlias()
|
|
{
|
|
foreach (var row in LegacyStockCutCatalog.Rows.Where(row => !row.IsSeparator))
|
|
{
|
|
var alias = LegacyStockCutCatalog.ResolveCutAlias(row.RawLabel, isNxt: false);
|
|
Assert.NotEmpty(LegacySceneCatalog.FindByCutAlias(alias));
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("1열판기본_현재가", "N5001")]
|
|
public void NxtCurrent_UsesN5001(string label, string expected)
|
|
{
|
|
Assert.Equal(expected, LegacyStockCutCatalog.ResolveCutAlias(label, isNxt: true));
|
|
}
|
|
|
|
[Fact]
|
|
public void PlaylistRow_PreservesLegacySevenFieldsAndDefersAliasResolution()
|
|
{
|
|
var stock = new LegacyStockIdentity(
|
|
LegacyDomesticStockMarket.Kospi,
|
|
"삼성전자",
|
|
"005930");
|
|
var row = LegacyStockCutCatalog.CreatePlaylistRow(
|
|
"row-1",
|
|
stock.DisplayName,
|
|
stock,
|
|
LegacyStockCutCatalog.Rows[1]);
|
|
|
|
Assert.True(row.IsEnabled);
|
|
Assert.Equal("코스피", row.MarketText);
|
|
Assert.Equal("삼성전자", row.StockName);
|
|
Assert.Equal("1열판기본", row.GraphicType);
|
|
Assert.Equal("현재가", row.Subtype);
|
|
Assert.Equal("1/1", row.PageText);
|
|
Assert.Equal("005930", row.StockCode);
|
|
|
|
var playout = row.ToPlayoutEntry();
|
|
Assert.Equal("5001", playout.CutCode);
|
|
Assert.Equal("005930", playout.Selection?.DataCode);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(5, "액면가", S5011DetailBranch.FaceValue)]
|
|
[InlineData(6, "PBR", S5011DetailBranch.Valuation)]
|
|
[InlineData(7, "거래량", S5011DetailBranch.Volume)]
|
|
public void S5011_rows_preserve_visible_subtype_and_use_canonical_runtime_branch(
|
|
int physicalIndex,
|
|
string visibleSubtype,
|
|
S5011DetailBranch runtimeBranch)
|
|
{
|
|
var stock = new LegacyStockIdentity(
|
|
LegacyDomesticStockMarket.Kospi,
|
|
"삼성전자",
|
|
"005930");
|
|
|
|
var row = LegacyStockCutCatalog.CreatePlaylistRow(
|
|
"row-1",
|
|
stock.DisplayName,
|
|
stock,
|
|
LegacyStockCutCatalog.Rows[physicalIndex]);
|
|
|
|
Assert.Equal(visibleSubtype, row.Subtype);
|
|
Assert.Equal(runtimeBranch.ToString(), row.PlayoutSelection?.Subtype);
|
|
Assert.Equal("5011", row.ToPlayoutEntry().CutCode);
|
|
Assert.Equal(runtimeBranch.ToString(), row.ToPlayoutEntry().Selection?.Subtype);
|
|
}
|
|
}
|