Deal.Tests.Unit, Deal.Telegram.Tests, Deal.Ai.Tests, Deal.Ml.Tests разложены по областям (Modules/<X>, Api, Infrastructure, Contracts, Grpc, ...), общие хелперы -> Support; namespace = папка, using между областями добавлены итеративно по ошибкам сборки.
59 lines
2.3 KiB
C#
59 lines
2.3 KiB
C#
using Deal.Telegram.Dialogs;
|
||
using Xunit;
|
||
using Deal.Telegram.Tests.Support;
|
||
|
||
namespace Deal.Telegram.Tests.Telegram;
|
||
|
||
/// <summary>
|
||
/// Unit-тесты цвета диалога (план Task 10: DialogHue — 1:1 dialog_hue прототипа L876–880 и палитры
|
||
/// constants.py DIALOG_HUES). Ожидаемые значения посчитаны python-прототипом (те же алгоритм/палитра) —
|
||
/// паритет цветов источников между реализациями.
|
||
/// </summary>
|
||
public sealed class DialogHueTests
|
||
{
|
||
/// <summary>
|
||
/// Цвет по паре (id, имя) совпадает с python-прототипом.
|
||
/// </summary>
|
||
[Theory]
|
||
[InlineData("-1001234567890", "IT Канал", "#a78bfa")]
|
||
[InlineData("-123456", "Уютный чат", "#34d399")]
|
||
[InlineData("+79990001122", "Иван Петров", "#fb7185")]
|
||
[InlineData("-100999", "", "#34d399")]
|
||
public void Compute_MatchesPythonPrototype(
|
||
string dialogId,
|
||
string name,
|
||
string expectedHue)
|
||
{
|
||
Assert.Equal(expectedHue, DialogHue.Compute(dialogId, name));
|
||
}
|
||
|
||
/// <summary>
|
||
/// Цвет детерминирован: повторный вызов возвращает то же значение.
|
||
/// </summary>
|
||
[Fact]
|
||
public void Compute_IsDeterministic()
|
||
{
|
||
string first = DialogHue.Compute("-1001234567890", "IT Канал");
|
||
|
||
Assert.Equal(first, DialogHue.Compute("-1001234567890", "IT Канал"));
|
||
}
|
||
|
||
/// <summary>
|
||
/// Разные источники распределяются по палитре (цвета коллизируют не все вместе).
|
||
/// </summary>
|
||
[Fact]
|
||
public void Compute_DifferentSources_DistributeAcrossPalette()
|
||
{
|
||
var hues = new[]
|
||
{
|
||
DialogHue.Compute("-100111", "Канал А"),
|
||
DialogHue.Compute("-100222", "Канал Б"),
|
||
DialogHue.Compute("+79990001122", "Иван Петров"),
|
||
DialogHue.Compute("-5", "Работа"),
|
||
};
|
||
|
||
// Ожидание посчитано python-прототипом: 4 источника дают 3 разных цвета палитры.
|
||
Assert.Equal(3, hues.Distinct().Count());
|
||
}
|
||
}
|