Refactor code formatting and improve readability: standardize line breaks and indentation across various endpoint files, enhancing code clarity and maintainability. Update package version formatting in Directory.Packages.props for consistency.

This commit is contained in:
Leonid Pershin
2026-07-25 19:55:01 +03:00
parent 1f6fa6f1ae
commit f57b7503ed
122 changed files with 1856 additions and 892 deletions
@@ -36,7 +36,15 @@ public class SchedulePlannerTests
minInterval,
selection,
variants.Length == 0
? [new PlannerBumperVariant(DefaultVariant, DefaultTemplate, TimeSpan.FromSeconds(8), trigger)]
?
[
new PlannerBumperVariant(
DefaultVariant,
DefaultTemplate,
TimeSpan.FromSeconds(8),
trigger
),
]
: variants
);
@@ -176,15 +184,34 @@ public class SchedulePlannerTests
[Fact]
public void WeightedPick_RespectsRoll()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 3, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var durations = Durations(
(a.EpisodeAssetIds[0], 20),
(b.EpisodeAssetIds[0], 20)
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
3,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var pickA = SchedulePlanner.Plan(BaseInput([a, b], durations, Start.AddSeconds(1)), new FixedRandom(0));
var pickB = SchedulePlanner.Plan(BaseInput([a, b], durations, Start.AddSeconds(1)), new FixedRandom(3));
var pickA = SchedulePlanner.Plan(
BaseInput([a, b], durations, Start.AddSeconds(1)),
new FixedRandom(0)
);
var pickB = SchedulePlanner.Plan(
BaseInput([a, b], durations, Start.AddSeconds(1)),
new FixedRandom(3)
);
Assert.Equal(a.ShowId, pickA.Entries[0].ShowId);
Assert.Equal(b.ShowId, pickB.Entries[0].ShowId);
@@ -193,8 +220,24 @@ public class SchedulePlannerTests
[Fact]
public void ExclusiveOverride_ForcesSingleShow()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 10, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
10,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = new PlannerInput(
@@ -226,8 +269,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_InsertedOnTransitionBetweenDifferentShows_BackToBack()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(50)) with
@@ -298,8 +357,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_MinInterval_SuppressesTooFrequentBumpers()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
// Два перехода в горизонте (~на 20-й и ~40-й минуте), но интервал 30 мин пропускает второй.
@@ -316,8 +391,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_Rotation_CyclesTemplatesAndAdvancesCursor()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
Guid t0 = Guid.NewGuid(),
t1 = Guid.NewGuid();
@@ -329,8 +420,18 @@ public class SchedulePlannerTests
BumperTrigger.Both,
TimeSpan.Zero,
BumperSelection.Rotation,
new PlannerBumperVariant(Guid.NewGuid(), t0, TimeSpan.FromSeconds(8), BumperTrigger.Both),
new PlannerBumperVariant(Guid.NewGuid(), t1, TimeSpan.FromSeconds(4), BumperTrigger.Both)
new PlannerBumperVariant(
Guid.NewGuid(),
t0,
TimeSpan.FromSeconds(8),
BumperTrigger.Both
),
new PlannerBumperVariant(
Guid.NewGuid(),
t1,
TimeSpan.FromSeconds(4),
BumperTrigger.Both
)
),
};
@@ -350,8 +451,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_AlwaysFirst_AlwaysUsesFirstTemplate()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
Guid t0 = Guid.NewGuid(),
t1 = Guid.NewGuid();
@@ -363,8 +480,18 @@ public class SchedulePlannerTests
BumperTrigger.Both,
TimeSpan.Zero,
BumperSelection.AlwaysFirst,
new PlannerBumperVariant(Guid.NewGuid(), t0, TimeSpan.FromSeconds(8), BumperTrigger.Both),
new PlannerBumperVariant(Guid.NewGuid(), t1, TimeSpan.FromSeconds(4), BumperTrigger.Both)
new PlannerBumperVariant(
Guid.NewGuid(),
t0,
TimeSpan.FromSeconds(8),
BumperTrigger.Both
),
new PlannerBumperVariant(
Guid.NewGuid(),
t1,
TimeSpan.FromSeconds(4),
BumperTrigger.Both
)
),
};
@@ -379,8 +506,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_NoTemplates_NoBumpers()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(50)) with
@@ -401,8 +544,24 @@ public class SchedulePlannerTests
[Fact]
public void Bumpers_Disabled_ProduceNoBumperEntries()
{
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(50)) with
@@ -420,13 +579,32 @@ public class SchedulePlannerTests
{
// Два шоу, ротация выбора подблока (без random в пути заставки) → чередование гарантировано,
// каждый переход — смена шоу. ShowChangeChance=0 глушит их, EpisodeChangeChance=1 не при чём.
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(120)) with
{
Bumpers = Bumper(true, BumperTrigger.Both, TimeSpan.Zero) with { ShowChangeChance = 0.0 },
Bumpers = Bumper(true, BumperTrigger.Both, TimeSpan.Zero) with
{
ShowChangeChance = 0.0,
},
};
var result = SchedulePlanner.Plan(input, new FixedRandom(0, 1));
@@ -438,12 +616,23 @@ public class SchedulePlannerTests
public void Bumpers_EpisodeChangeChanceZero_SuppressesBumpersBetweenEpisodes()
{
// Одно шоу → каждый переход между блоками одного шоу. EpisodeChangeChance=0 глушит все заставки.
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20));
var input = BaseInput([a], durations, Start.AddMinutes(120)) with
{
Bumpers = Bumper(true, BumperTrigger.Both, TimeSpan.Zero) with { EpisodeChangeChance = 0.0 },
Bumpers = Bumper(true, BumperTrigger.Both, TimeSpan.Zero) with
{
EpisodeChangeChance = 0.0,
},
};
var result = SchedulePlanner.Plan(input, new FixedRandom(0));
@@ -455,7 +644,15 @@ public class SchedulePlannerTests
public void Bumpers_WeightedRandom_NeverPicksZeroWeightVariant()
{
// Взвешенный выбор: подблок с весом 0 не выбирается никогда, весь трафик уходит на t1 (вес 5).
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20));
Guid t0 = Guid.NewGuid(),
t1 = Guid.NewGuid();
@@ -467,8 +664,20 @@ public class SchedulePlannerTests
BumperTrigger.Both,
TimeSpan.Zero,
BumperSelection.WeightedRandom,
new PlannerBumperVariant(Guid.NewGuid(), t0, TimeSpan.FromSeconds(8), BumperTrigger.Both, 0),
new PlannerBumperVariant(Guid.NewGuid(), t1, TimeSpan.FromSeconds(8), BumperTrigger.Both, 5)
new PlannerBumperVariant(
Guid.NewGuid(),
t0,
TimeSpan.FromSeconds(8),
BumperTrigger.Both,
0
),
new PlannerBumperVariant(
Guid.NewGuid(),
t1,
TimeSpan.FromSeconds(8),
BumperTrigger.Both,
5
)
),
};
@@ -483,8 +692,24 @@ public class SchedulePlannerTests
public void WeeklyOverride_AppliesOnMatchingDayAndTime()
{
// Start = 2026-01-01 (четверг, DayOfWeek=4), полночь. Еженедельный override на четверг 00:0001:00.
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddSeconds(1)) with
@@ -511,8 +736,24 @@ public class SchedulePlannerTests
public void WeeklyOverride_IgnoredOnOtherDay()
{
// Override на другой день недели → базовая ротация (FixedRandom(0) берёт первое шоу — a).
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var b = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var otherDay = ((int)Start.UtcDateTime.DayOfWeek + 1) % 7;
@@ -540,10 +781,26 @@ public class SchedulePlannerTests
public void PreferredHours_BoostsWeight_InsideWindow()
{
// Час старта — 0 (UTC). Окно b покрывает его, множитель 100 → b доминирует, хотя базовые веса равны.
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0,
PreferredHours: [new PlannerHourWindow(0, 24)], PreferredWeightMultiplier: 100);
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0,
PreferredHours: [new PlannerHourWindow(0, 24)],
PreferredWeightMultiplier: 100
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(60));
@@ -559,10 +816,26 @@ public class SchedulePlannerTests
public void PreferredHours_OutsideWindow_KeepsBaseWeight()
{
// Час старта — 0, окно b — [10,12): не покрывает → буста нет, при FixedRandom(50) берётся первое шоу (a).
var a = new PlannerShow(Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0);
var a = new PlannerShow(
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0
);
var b = new PlannerShow(
Guid.NewGuid(), Guid.NewGuid(), 1, BlockMode.Count, 1, [Guid.NewGuid()], 0,
PreferredHours: [new PlannerHourWindow(10, 12)], PreferredWeightMultiplier: 100);
Guid.NewGuid(),
Guid.NewGuid(),
1,
BlockMode.Count,
1,
[Guid.NewGuid()],
0,
PreferredHours: [new PlannerHourWindow(10, 12)],
PreferredWeightMultiplier: 100
);
var durations = Durations((a.EpisodeAssetIds[0], 20), (b.EpisodeAssetIds[0], 20));
var input = BaseInput([a, b], durations, Start.AddMinutes(60));