homework#40
Conversation
| new Person("Vasili III of Russia", 28, 170, 60, null)); | ||
|
|
||
| // Какие недостатки у такого подхода? | ||
| // Какие недостатки у такого подхода? |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Будет рекурсия до бесконечности нужно добавить проверку что родитель не ссылается на царя
Сейчас у нас проверка, что мы сравниваем и с чем, что это два разных объекта if (actual == expected);
нужно добавить что то по типу if (actual != actual.Parent) ; что ссылки разные
хотя тут будет проблема с A на B и B на A тогда проверка не сработает
Можно сохранять что мы проверили и если снова попадется то стопать
| ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("a.sd")); | ||
| public void IsValidNumber_Tests(int precision, int scale, bool onlyPositive, string input, bool expectedResult) | ||
| { | ||
| NumberValidator validator = new NumberValidator(precision, scale, onlyPositive); |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
|
||
| actualTsar.Should().BeEquivalentTo(expectedTsar, options => options | ||
| .Excluding(tsar => tsar.Id) | ||
| .Excluding(tsar => tsar.Parent!.Id)); |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| TestName = "scale не может быть равен precision")] | ||
| [TestCase(1, -1, "precision must be a non-negative number less or equal than precision", | ||
| TestName = "scale не может быть отрицательным")] | ||
| public void ConstructorWhenParametersInvalid(int precision, int scale, string expectedMessage) |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| Assert.DoesNotThrow(() => new NumberValidator(1, 0, true)); | ||
| Assert.Throws<ArgumentException>(() => new NumberValidator(-1, 2, false)); | ||
| Assert.DoesNotThrow(() => new NumberValidator(1, 0, true)); | ||
| Assert.That( |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| ClassicAssert.AreEqual(expectedTsar.Parent.Parent, actualTsar.Parent.Parent); | ||
|
|
||
| actualTsar.Should().BeEquivalentTo(expectedTsar, options => options | ||
| .Excluding(tsar => tsar.Id) |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| [TestCase(3, 2, true, "-0.00", false, TestName = "Ошибка: отрицательное число при onlyPositive=true")] | ||
| [TestCase(3, 2, true, "+0.00", false, TestName = "Ошибка: превышена точность из-за знака")] | ||
| [TestCase(6, 2, true, "0.000", false, TestName = "Ошибка: дробная часть превышает scale")] | ||
| [TestCase(3, 2, true, "-1.23", false, TestName = "Ошибка: отрицательное число при onlyPositive=true")] |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| } | ||
|
|
||
| [TestCase(1, 0, TestName = "scale может быть равен 0")] | ||
| [TestCase(7, 5, TestName = "общий тест")] |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| TestName = "precision не может быть отрицательным")] | ||
| [TestCase(0, 2, "precision must be a positive number", | ||
| TestName = "precision не может быть равен 0")] | ||
| [TestCase(1, 2, "precision must be a non-negative number less or equal than precision", |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Тут не понял, вроде везде на русском ток поля там на английском, а тут
[TestCase(0, 2, "precision must be a positive number"
с каким сообщением должна прийти ошибка
| ClassicAssert.AreEqual(expectedTsar.Parent.Height, actualTsar.Parent.Height); | ||
| ClassicAssert.AreEqual(expectedTsar.Parent.Parent, actualTsar.Parent.Parent); | ||
|
|
||
| actualTsar.Should().BeEquivalentTo(expectedTsar, options => options |
There was a problem hiding this comment.
Есть ли какие-то проблемы у нового подхода? Может какие-то случаи когда тест будет работать неправильно?
| actualTsar | ||
| .Should() | ||
| .BeEquivalentTo(expectedTsar, options => options | ||
| .Excluding(info => info.Path.EndsWith(".Id") || info.Path == "Id") |
There was a problem hiding this comment.
А можно ли как-то учитывать только поле Id?
И можно ли написать этот тест так, чтобы при переименовании Id на например Identificator тест все-равно работал правильно?
There was a problem hiding this comment.
Через .Including можно выбрать поля которые мы хоти сравнивать и сравнивать только их
На второй вопрос не знаю как сделать, чтобы при переименовании тест все равно понимал, что исключать, но к id обращаться через аксессор get, и тогда сразу должна выпасть ошибка и мы поймем что он не нашел поле id, но вообще если именование правильное зачем его менять в будущем?
No description provided.