Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
3 changes: 2 additions & 1 deletion MathCore.TestsExtensions.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11205.157 d18.0
VisualStudioVersion = 18.0.11205.157
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MathCore.TestsExtensions", "MathCore.TestsExtensions\MathCore.TestsExtensions.csproj", "{0F039156-E6CB-4EFB-A863-13A1AC2DD4AE}"
EndProject
Expand All @@ -10,6 +10,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Service", ".Service", "{29B29638-89EC-4383-B587-AE8C981DED4F}"
ProjectSection(SolutionItems) = preProject
.github\copilot-instructions.md = .github\copilot-instructions.md
README.md = README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{D6A23A02-D860-4101-AB7B-0C7FB57331CB}"
Expand Down
2 changes: 1 addition & 1 deletion MathCore.TestsExtensions/MathCore.TestsExtensions.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<PropertyGroup>
<Version>1.0.0</Version>
<Version>1.0.0.1</Version>
<PackageReleaseNotes>Актуализация пакета и зависимостей, поддержка netstandard2.0</PackageReleaseNotes>
</PropertyGroup>

Expand Down
56 changes: 28 additions & 28 deletions MathCore.TestsExtensions/readme.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# MathCore.TestsExtensions
# MathCore.TestsExtensions

���������� ��� MSTest, ����������� ������� fluent-��������� � ����������� �������� ����� ����� ����������:
Расширения для MSTest, добавляющие удобный fluent-интерфейс к стандартным ассертам через точки расширения:
- `Assert.That`
- `CollectionAssert.That`
- `StringAssert.That`

����� �������� ������ ������������� � ���������� �������� �� ������� API: �������� ��������, ���������, ������������, ����� � ���������� � ���������� ����������� �� �������.
Пакет помогает писать выразительные и компактные проверки со связным API: проверка значений, коллекций, перечислений, строк и исключений с наглядными сообщениями об ошибках.

## ���������
## Установка

- ���������: .NET Standard 2.0
- �����������: MSTest.TestFramework >= 4.0.2
- Платформа: .NET Standard 2.0
- Зависимость: MSTest.TestFramework >= 4.0.2

NuGet-�����: MathCore.TestsExtensions
NuGet-пакет: MathCore.TestsExtensions

## ������� �����
## Быстрый старт

```csharp
using Microsoft.VisualStudio.TestTools.UnitTesting;
Expand All @@ -36,24 +36,24 @@ public class SampleTests
}
```

## ����� ���������� � fluent-���������
## Точки расширения и fluent-интерфейс

����� ��������� ���������� `That` � ����������� ��������:
- `Assert.That` � �������� �������� (`Value`), �������/�������� (`Method`), ������������ (`Enumerable`) � ��������� (`Collection`)
- `CollectionAssert.That` � �������� ��������� (`Collection`)
- `StringAssert.That` � �������� ����� ����� `Value(string)`
Пакет добавляет расширение `That` к стандартным ассертам:
- `Assert.That` — проверки значений (`Value`), функций/действий (`Method`), перечислений (`Enumerable`) и коллекций (`Collection`)
- `CollectionAssert.That` — проверки коллекций (`Collection`)
- `StringAssert.That` — проверки строк через `Value(string)`

������� ������� �������������: ������ � ������ ������, �������� ������ � �������� �������� ������-��������. ��� �������� ����������� ������� ����� �������� `And => Assert.That`, �������� ���������� ������� � ����� ��������.
Базовый паттерн использования: начать с нужной «точки», получить «чекер» и вызывать цепочкой методы-проверки. Для удобства большинство чекеров имеют свойство `And => Assert.That`, позволяя продолжать цепочку с новой проверки.

### �������: Assert.That
### Примеры: Assert.That

�������� �������� � ��������� � ���������:
Проверка значения и сравнение с точностью:
```csharp
Assert.That.Value(1.1).LessOrEqualsThan(1.0, 0.1);
Assert.That.Value(10).GreaterThan(5);
```

�������� ����������:
Проверка исключений:
```csharp
Assert.That.Method(() => throw new InvalidOperationException())
.Throw<InvalidOperationException>();
Expand All @@ -62,7 +62,7 @@ Assert.That.Method(() => 1 / 0)
.Throw<DivideByZeroException>();
```

������������ (`IEnumerable<T>`):
Перечисления (`IEnumerable<T>`):
```csharp
IEnumerable<string> actual = new[] { "file3.txt", "file4.txt", "file5.txt", "file6.txt" };
IEnumerable<string> expected = new[] { "file3.txt", "file4.txt", "file5.txt", "file6.txt" };
Expand All @@ -71,9 +71,9 @@ Assert.That.Enumerable(actual).IsEqualTo(expected);
Assert.That.Enumerable(actual).Contains(s => s.EndsWith(".txt"));
```

### �������: CollectionAssert.That
### Примеры: CollectionAssert.That

�������� ��� `ICollection<T>` � ��������:
Проверки для `ICollection<T>` и массивов:
```csharp
var items = new[] { 1, 3, 5, 7 };

Expand All @@ -86,17 +86,17 @@ var expected = new[] { 1, 3, 5, 7 };
CollectionAssert.That.Collection(items).IsEqualTo(expected);
```

�������� ��������� � ��������� ��� double:
Покрытие сценариев с точностью для double:
```csharp
double[] actual = { 1.0, 2.0, 3.000000001 };
double[] expected = { 1.0, 2.0, 3.0 };

Assert.That.Collection(actual).IsEqualTo(expected, 1e-8);
```

### �������: StringAssert.That
### Примеры: StringAssert.That

��������� �������� ����� `ValueChecker<string>`:
Строковые проверки через `ValueChecker<string>`:
```csharp
StringAssert.That.Value("Hello, World!")
.StartWith("Hello")
Expand All @@ -105,9 +105,9 @@ StringAssert.That.Value("Hello, World!")
.Matches(@"^Hello,\sWorld!$");
```

## �������������: ������ � ���������� ������������/���������
## Дополнительно: работа с элементами перечислений/коллекций

����������� �������� � ������� �������:
Позиционные проверки и сводные метрики:
```csharp
var xs = Enumerable.Range(0, 10).ToArray();

Expand All @@ -121,10 +121,10 @@ Assert.That.Enumerable(xs)
.Average(x => x).IsEqual(4.5);
```

## ��������� �� �������
## Сообщения об ошибках

������ ��������� �������� ���������: ��� ����������� ����������� ������� ��������� � ������ �� ������������ (������� ������������� ������ ��� �������� �����), � ����� �������������� `Expected` `Actual` `Exception.Data`.
Чекеры формируют понятные сообщения: при неравенстве указываются индексы элементов и сводки по расхождениям (включая относительную ошибку для числовых типов), а также прикладываются `Expected` и `Actual` в `Exception.Data`.

## ��������
## Лицензия

MIT