Conversation
| } | ||
|
|
||
| [TestCase(2, 1,"0.00", TestName = "zero intPart + fracPart should be less than precesion")] | ||
| [TestCase(3, 2, "+0.00", TestName = "zero intPart + fracPart + \"+\" should be less than precesion")] |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
| { | ||
| [Test] | ||
| public void Test() | ||
| [TestCase(1, 0,"0", TestName = "int zero")] |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
| [TestCase(3, 2, "a.sd", TestName = "non digit symbols")] | ||
| [TestCase(2, 1, ".0", TestName = "must have digits before point")] | ||
| [TestCase(1, 0, "0.", TestName = "must have digits after point (if exist)")] | ||
| public void IsNotValid(int precision, int scale, string validatingString, bool onlyPositive = true) |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
cs/HomeExercises/ObjectComparison.cs
Outdated
|
|
||
| // 1. Вероятность StackOverflow из-за бесконечной рекурсии | ||
| // 2. При каждом изменении свойств или добавлении новых функцию придётся переписывать | ||
| // 3. Данный код не выполняет никакой полезной функции кроме сравнения полей двух объектов |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
| // 2. При каждом изменении свойств или добавлении новых функцию придётся переписывать | ||
| // 3. Данный код не выполняет никакой полезной функции кроме сравнения полей двух объектов | ||
| // 4. Нарушение SRP, ответственность за сравнение объетов должна быть инкапсулирована в класс | ||
| Assert.True(AreEqual(actualTsar, expectedTsar)); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
There was a problem hiding this comment.
еще мелочь, скорее как рекомендация, а не замечание, потому что задача очень маленькая
когда у тебя в солюшене тысячи классов, навигироваться ты будешь не по Solution Explorer, а по именам и неймспейсам (стандартное сочетание ctrl+shift+n и ctrl+n), и best practice тут такой: необходимо каждый класс выносить в отдельный файл, благо решарпер/райдер позволяют это делать в пару кликов (а так же лучше если имя класса будет совпадать с именем файла)
еще тесты обычно выносят в отдельный проект:
в тестах обычно присутствуют рефы на библиотеки которые нужны только для тестов, таким образом, отделяя тесты от логики, очищается intellisense и бинари боевого кода от тестов и всего что с ними прилетает, помимо этого уменьшая размер артефактов
| Assert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("-1.23")); | ||
| Assert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("a.sd")); | ||
| Action act = () => new NumberValidator(precision, scale, onlyPositive); | ||
| act.Should().Throw<ArgumentException>(); |
There was a problem hiding this comment.
это можно проще написать через Assert.Throws<>( () => ...)
| public void Test() | ||
| #region TestCases | ||
|
|
||
| public static object[][] numberTestCases = |
There was a problem hiding this comment.
такой подход неинформативен, из названия не понятно какой кейс проверяется пока не залезешь в код и не посмотришь что поменялось

во-первых: в TestCaseData можно указать имя, тем самым четко обозначив кейс
во-вторых: тут у тебя генерация кейсов на лету, это не очень наглядно с точки зрения спецификации, чтобы понять откуда кейс взялся придется дебажиться или изучать код
может быть для мелких задач вроде таких такой контекст и легко восстанавливать почитав код, но на более сложных такое уже потребует постоянных усилий
No description provided.