Files
Deal/src/telegram-service/Deal.Telegram.Tests/Telegram/DialogHueTests.cs
T
Rustam Khalimov 5bfa92a4ac Сгруппировать тестовые проекты по областям
Deal.Tests.Unit, Deal.Telegram.Tests, Deal.Ai.Tests, Deal.Ml.Tests
разложены по областям (Modules/<X>, Api, Infrastructure, Contracts,
Grpc, ...), общие хелперы -> Support; namespace = папка, using
между областями добавлены итеративно по ошибкам сборки.
2026-09-11 13:28:26 +03:00

59 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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());
}
}