Fix mana affix column leakage

This commit is contained in:
2026-03-14 02:53:33 +01:00
parent 73ce64e879
commit a391a1421a
4 changed files with 162 additions and 0 deletions

View File

@@ -137,6 +137,70 @@ public sealed class StandardCriticalTableParserIntegrationTests
Assert.DoesNotContain('\uF06C', row100C.DescriptionText);
}
[Fact]
public async Task Mana_affix_boundaries_keep_71_75_a_and_b_separate()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row71A = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "71-75", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "A", StringComparison.Ordinal));
var row71B = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "71-75", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "B", StringComparison.Ordinal));
Assert.DoesNotContain("+10H -", row71A.RawAffixText, StringComparison.Ordinal);
Assert.Contains("+10H -", row71B.RawAffixText, StringComparison.Ordinal);
}
[Fact]
public async Task Mana_affix_boundaries_keep_71_75_d_and_e_separate()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row71D = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "71-75", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "D", StringComparison.Ordinal));
var row71E = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "71-75", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "E", StringComparison.Ordinal));
Assert.DoesNotContain("+16H - 6", row71D.RawAffixText, StringComparison.Ordinal);
Assert.Contains("+16H - 6", row71E.RawAffixText, StringComparison.Ordinal);
}
[Fact]
public async Task Mana_affix_boundaries_keep_91_95_b_and_c_separate()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row91B = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "91-95", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "B", StringComparison.Ordinal));
var row91C = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "91-95", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "C", StringComparison.Ordinal));
Assert.DoesNotContain("+19H - 9", row91B.RawAffixText, StringComparison.Ordinal);
Assert.Contains("+19H - 9", row91C.RawAffixText, StringComparison.Ordinal);
}
[Fact]
public async Task Mana_affix_boundaries_keep_86_90_b_and_c_separate()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row86B = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "86-90", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "B", StringComparison.Ordinal));
var row86C = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "86-90", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "C", StringComparison.Ordinal));
Assert.DoesNotContain("+16H - 8", row86B.RawAffixText, StringComparison.Ordinal);
Assert.Contains("+16H - 8", row86C.RawAffixText, StringComparison.Ordinal);
}
private static async Task<StandardCriticalTableParseResult> LoadParseResultAsync(CriticalImportManifestEntry entry)
{
var xmlPath = Path.Combine(GetArtifactCacheRoot(), $"{entry.Slug}.xml");