OpenGeekBrains / SciMaterials

Хранилище учебных материалов
MIT License
0 stars 14 forks source link

Создать модульный тест, проверяющий отсутствие дублирования кодов ошибок #120

Open Infarh opened 2 years ago

Infarh commented 2 years ago

Примерная логика теста

var types = typeof(ApiErrors).Assembly.GetTypes().Where(t => t.FullName.Contains(nameof(ApiErrors)));

var codes = new Dictionary<int, FieldInfo>();
foreach (Type type in types)
    foreach (var field in type.GetFields(BindingFlags.Static | BindingFlags.Public).Where(f => f.FieldType == typeof(Error)))
    {
        var field_value = (Error)field.GetValue(null)!;
        var code        = field_value.Code;

        if (codes.ContainsKey(code))
            throw new InvalidOperationException($"Ошибка - дублирование статусного кода {field.DeclaringType.Name}.{field.Name} с кодом {codes[code].DeclaringType.Name}.{codes[code].Name}");

        codes.Add(code, field);
    }