/
smwwiki
/
OneScript_fork
Обзор
Документация
Войти
/
smwwiki
/
OneScript_fork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/Tests/OneScript.Core.Tests/ObsoleteMethodAttributeTest.cs
86 строк
3 KB
EvilBeaver
Выделена отдельная папка для инфраструктуры исключений
24 июл 2023, 22:46
24 июл 2023, 22:46
d1c2e94
Код
Авторство
О чём код?
/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; using System.Collections.Generic; using FluentAssertions; using Moq; using OneScript.Exceptions; using ScriptEngine; using Xunit; namespace OneScript.Core.Tests { public class ObsoleteMethodAttributeTest { private List<string> _messages; public ObsoleteMethodAttributeTest() { var mock = new Mock<ISystemLogWriter>(); mock.Setup(x => x.Write(It.IsAny<string>())) .Callback<string>(str => _messages.Add(str)); _messages = new List<string>(); LogWriter = mock.Object; SystemLogger.SetWriter(LogWriter); } private ISystemLogWriter LogWriter { get; set; } [Fact] public void TestLoggingOfObsoleteCall() { dynamic instance = new TestContextClass(); instance.УстаревшийМетод(); instance.ObsoleteMethod(); instance.УстаревшийМетод(); _messages.Should().HaveCount(1, "must be only one warning"); _messages.Should().Contain(item => item.IndexOf("УстаревшийМетод", StringComparison.InvariantCultureIgnoreCase) >= 0 || item.IndexOf("ObsoleteMethod", StringComparison.InvariantCultureIgnoreCase) >= 0); } [Fact] public void CallGoodMethodsHasNoWarnings() { dynamic instance = new TestContextClass(); instance.ХорошийМетод(); instance.GoodMethod(); _messages.Should().BeEmpty(); } [Fact] public void TestICallDeprecatedAliasAndHaveWarning() { dynamic instance = new TestContextClass(); instance.ObsoleteAlias(); _messages.Should().HaveCount(1) .And.Contain(x => x.IndexOf("ObsoleteAlias", StringComparison.InvariantCultureIgnoreCase) >= 0); } [Fact] public void TestICallDeprecatedAliasAndHaveException() { var exceptionThrown = false; try { dynamic instance = new TestContextClass(); instance.VeryObsoleteAlias(); } catch (RuntimeException) { exceptionThrown = true; } exceptionThrown.Should().BeTrue("Безнадёжно устаревший метод должен вызвать исключение"); } } }