Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Зиновьева Милана @xsitin #24

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
bin/
obj/
.vs/
.DS_Store
24 changes: 13 additions & 11 deletions Testing/Basic/Homework/1. ObjectComparison/ObjectComparison.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using NUnit.Framework;
using NUnit.Framework.Legacy;
using FluentAssertions;

namespace HomeExercise.Tasks.ObjectComparison;
public class ObjectComparison
Expand All @@ -13,17 +14,14 @@ public void CheckCurrentTsar()

var expectedTsar = new Person("Ivan IV The Terrible", 54, 170, 70,
new Person("Vasili III of Russia", 28, 170, 60, null));

// Перепишите код на использование Fluent Assertions.
ClassicAssert.AreEqual(actualTsar.Name, expectedTsar.Name);
ClassicAssert.AreEqual(actualTsar.Age, expectedTsar.Age);
ClassicAssert.AreEqual(actualTsar.Height, expectedTsar.Height);
ClassicAssert.AreEqual(actualTsar.Weight, expectedTsar.Weight);

ClassicAssert.AreEqual(expectedTsar.Parent!.Name, actualTsar.Parent!.Name);
ClassicAssert.AreEqual(expectedTsar.Parent.Age, actualTsar.Parent.Age);
ClassicAssert.AreEqual(expectedTsar.Parent.Height, actualTsar.Parent.Height);
ClassicAssert.AreEqual(expectedTsar.Parent.Parent, actualTsar.Parent.Parent);
actualTsar.Should().BeEquivalentTo(expectedTsar, options => options
.IncludingNestedObjects()
.Excluding(p => p.Id)
.Excluding(p => p.Parent.Id));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А что если наследников станет сильно больше? Посмотри перегрузки метода Exclude

//+Проверяет все поля класса на эквивалентность
//+При добавлении нового поля в класс проверка будет автоматически включена
//+Уменьшено количество кода
//+Удобный вывод при непрохождении теста(показаны несовпадающие поля)
}

[Test]
Expand All @@ -36,6 +34,10 @@ public void CheckCurrentTsar_WithCustomEquality()

// Какие недостатки у такого подхода?
ClassicAssert.True(AreEqual(actualTsar, expectedTsar));

//-При появлении новых полей придется переписывать тест
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Есть ещё

//-Функция возвращает bool, что не информативно
//-Для того чтобы узнать различия между царями придется дебажить и проверять каждое условие
}

private bool AreEqual(Person? actual, Person? expected)
Expand Down
54 changes: 36 additions & 18 deletions Testing/Basic/Homework/2. NumberValidator/NumberValidatorTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

using NUnit.Framework;
using NUnit.Framework;
using NUnit.Framework.Legacy;
using FluentAssertions;
using FluentAssertions.Execution;

namespace HomeExercise.Tasks.NumberValidator;

Expand All @@ -10,22 +11,39 @@ public class NumberValidatorTests
[Test]
public void Test()
{
Assert.Throws<ArgumentException>(() => new NumberValidator(-1, 2, true));
Assert.DoesNotThrow(() => new NumberValidator(1, 0, true));
Assert.Throws<ArgumentException>(() => new NumberValidator(-1, 2, false));
Assert.DoesNotThrow(() => new NumberValidator(1, 0, true));
using (new AssertionScope()) //Позволяет выполнить все проверки даже если какая-то упала
//Информация об ошибках выдастся по заверщению всех тестов
{
Action act = () => new NumberValidator(5, 2, true);
act.Should().NotThrow(because: "Целая и дробная часть больше нуля, цифры целой части больше чем в дробной");

ClassicAssert.IsTrue(new NumberValidator(17, 2, true).IsValidNumber("0.0"));
ClassicAssert.IsTrue(new NumberValidator(17, 2, true).IsValidNumber("0"));
ClassicAssert.IsTrue(new NumberValidator(17, 2, true).IsValidNumber("0.0"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("00.00"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("-0.00"));
ClassicAssert.IsTrue(new NumberValidator(17, 2, true).IsValidNumber("0.0"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("+0.00"));
ClassicAssert.IsTrue(new NumberValidator(4, 2, true).IsValidNumber("+1.23"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("+1.23"));
ClassicAssert.IsFalse(new NumberValidator(17, 2, true).IsValidNumber("0.000"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("-1.23"));
ClassicAssert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("a.sd"));
act = () => new NumberValidator(-1, 2, true);
act.Should().Throw<ArgumentException>(because: "Целая часть меньше нуля");

act = () => new NumberValidator(1, -1, true);
act.Should().Throw<ArgumentException>(because: "Дробная часть меньше нуля");

act = () => new NumberValidator(1, 1, false);
act.Should().Throw<ArgumentException>(because: "Дробная часть равна целой части");
//Тесты для проверки корректности инициализации

NumberValidator numberForCheck = new NumberValidator(4, 2, true);
numberForCheck.IsValidNumber("").Should().BeFalse();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавь больше кейсов на невалидные случаи. Так же добавь кейсы для не арабских цифр, например цифр телугу

numberForCheck.IsValidNumber("a.sd").Should().BeFalse();
//Тесты для проверки данных не подходящих под регулярку

numberForCheck.IsValidNumber("0.0").Should().BeTrue();
numberForCheck.IsValidNumber("0").Should().BeTrue();
numberForCheck.IsValidNumber("+1.23").Should().BeTrue();
numberForCheck = new NumberValidator(4, 2, false);
numberForCheck.IsValidNumber("-1.23").Should().BeTrue();
//Тесты для проверки "нормальных" и пороговых значений

numberForCheck = new NumberValidator(3, 2, true);
numberForCheck.IsValidNumber("00.00").Should().BeFalse();
numberForCheck.IsValidNumber("-0.0").Should().BeFalse();
numberForCheck.IsValidNumber("+0.00").Should().BeFalse();
//Тесты для проверки неподходящих по условию значений
}
}
}