From d5b9f0c96562fa63fcace77efdc0bcdb4e9375a1 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 01:51:23 +0000 Subject: [PATCH 01/19] Add and use programmatic example --- .../constraints/AllItemsConstraint.md | 16 +++------- .../Constraints/AllItemsConstraintExamples.cs | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs diff --git a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md index a92741380..17f672399 100644 --- a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md @@ -10,18 +10,10 @@ AllItemsConstraint(Constraint itemConstraint) ## Syntax -```csharp -Is.All... -Has.All... -``` +You can use `Is.All` or `Has.All` to refer to all items in an `IEnumerable`. ## Examples of Use -```csharp -int[] iarray = new int[] { 1, 2, 3 }; -string[] sarray = new string[] { "a", "b", "c" }; -Assert.That(iarray, Is.All.Not.Null); -Assert.That(sarray, Is.All.InstanceOf()); -Assert.That(iarray, Is.All.GreaterThan(0)); -Assert.That(iarray, Has.All.GreaterThan(0)); -``` +[!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsIsExample)] + +[!code-csharp[HasBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsHasExample)] \ No newline at end of file diff --git a/docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs new file mode 100644 index 000000000..ab89ffd68 --- /dev/null +++ b/docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs @@ -0,0 +1,32 @@ +using NUnit.Framework; + +namespace Snippets.NUnit.Attributes +{ + public class AllItemsConstraintExamples + { + #region AllItemsIsExample + [Test] + public void CanUseIsToTalkAboutAllItems() + { + int[] arrayOfIntegers = new int[] { 1, 2, 3 }; + string[] arrayOfStrings = new string[] { "a", "b", "c" }; + + Assert.That(arrayOfIntegers, Is.All.Not.Null); + Assert.That(arrayOfIntegers, Is.All.GreaterThan(0)); + + Assert.That(arrayOfStrings, Is.All.InstanceOf()); + } + #endregion + + #region AllItemsHasExample + [Test] + public void CanUseHasToTalkAboutAllItems() + { + int[] arrayOfIntegers = new int[] { 1, 2, 3 }; + + Assert.That(arrayOfIntegers, Has.All.GreaterThan(0)); + } + #endregion + } + +} From 468e40b5c01a0c217f25061c98f81c41166b30f8 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 01:53:30 +0000 Subject: [PATCH 02/19] some better formatting on the table --- .../writing-tests/constraints/Constraints.md | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index ed6b4cc67..61ebf11e3 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -11,62 +11,62 @@ This page lists all the constraints available in NUnit. ## Alphabetical List of Constraints -Constraint Name | --------------------------------------| -[AllItemsConstraint](AllItemsConstraint.md) | -[AndConstraint](AndConstraint.md) | -[AssignableFromConstraint](AssignableFromConstraint.md) | -[AssignableToConstraint](AssignableToConstraint.md) | -[AttributeConstraint](AttributeConstraint.md) | -[AttributeExistsConstraint](AttributeExistsConstraint.md) | -[AnyOfConstraint](AnyOfConstraint.md) | -[BinarySerializableConstraint](BinarySerializableConstraint.md) | -[CollectionContainsConstraint](CollectionContainsConstraint.md) | -[CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | -[CollectionOrderedConstraint](CollectionOrderedConstraint.md) | -[CollectionSubsetConstraint](CollectionSubsetConstraint.md) | -[CollectionSupersetConstraint](CollectionSupersetConstraint.md) | -[DelayedConstraint](DelayedConstraint.md) | -[DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | -[DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | -[DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| -[EmptyCollectionConstraint](EmptyCollectionConstraint.md) | -[EmptyConstraint](EmptyConstraint.md) | -[EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | -[EmptyStringConstraint](EmptyStringConstraint.md) | -[EndsWithConstraint](EndsWithConstraint.md) | -[EqualConstraint](EqualConstraint.md) | -[ExactCountConstraint](ExactCountConstraint.md) | -[ExactTypeConstraint](ExactTypeConstraint.md) | -[FalseConstraint](FalseConstraint.md) | -[FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | -[GreaterThanConstraint](GreaterThanConstraint.md) | -[GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | -[InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | -[LessThanConstraint](LessThanConstraint.md) | -[LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | -[NaNConstraint](NaNConstraint.md) | -[NoItemConstraint](NoItemConstraint.md) | -[NotConstraint](NotConstraint.md) | -[NullConstraint](NullConstraint.md) | -[OrConstraint](OrConstraint.md) | -[PropertyConstraint](PropertyConstraint.md) | -[PropertyExistsConstraint](PropertyExistsConstraint.md) | -[RangeConstraint](RangeConstraint.md) | -[RegexConstraint](RegexConstraint.md) | -[ReusableConstraint](ReusableConstraint.md) | -[SameAsConstraint](SameAsConstraint.md) | -[SamePathConstraint](SamePathConstraint.md) | -[SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | -[SomeItemsConstraint](SomeItemsConstraint.md) | -[StartsWithConstraint](StartsWithConstraint.md) | -[SubPathConstraint](SubPathConstraint.md) | -[SubstringConstraint](SubstringConstraint.md) | -[ThrowsConstraint](ThrowsConstraint.md) | -[ThrowsNothingConstraint](ThrowsNothingConstraint.md) | -[TrueConstraint](TrueConstraint.md) | -[UniqueItemsConstraint](UniqueItemsConstraint.md) | -[XmlSerializableConstraint](XmlSerializableConstraint.md) | +| Constraint Name | +| ------------------------------------- | +| [AllItemsConstraint](AllItemsConstraint.md) | +| [AndConstraint](AndConstraint.md) | +| [AssignableFromConstraint](AssignableFromConstraint.md) | +| [AssignableToConstraint](AssignableToConstraint.md) | +| [AttributeConstraint](AttributeConstraint.md) | +| [AttributeExistsConstraint](AttributeExistsConstraint.md) | +| [AnyOfConstraint](AnyOfConstraint.md) | +| [BinarySerializableConstraint](BinarySerializableConstraint.md) | +| [CollectionContainsConstraint](CollectionContainsConstraint.md) | +| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | +| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | +| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | +| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | +| [DelayedConstraint](DelayedConstraint.md) | +| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | +| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | +| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| +| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | +| [EmptyConstraint](EmptyConstraint.md) | +| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | +| [EmptyStringConstraint](EmptyStringConstraint.md) | +| [EndsWithConstraint](EndsWithConstraint.md) | +| [EqualConstraint](EqualConstraint.md) | +| [ExactCountConstraint](ExactCountConstraint.md) | +| [ExactTypeConstraint](ExactTypeConstraint.md) | +| [FalseConstraint](FalseConstraint.md) | +| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | +| [GreaterThanConstraint](GreaterThanConstraint.md) | +| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | +| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | +| [LessThanConstraint](LessThanConstraint.md) | +| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | +| [NaNConstraint](NaNConstraint.md) | +| [NoItemConstraint](NoItemConstraint.md) | +| [NotConstraint](NotConstraint.md) | +| [NullConstraint](NullConstraint.md) | +| [OrConstraint](OrConstraint.md) | +| [PropertyConstraint](PropertyConstraint.md) | +| [PropertyExistsConstraint](PropertyExistsConstraint.md) | +| [RangeConstraint](RangeConstraint.md) | +| [RegexConstraint](RegexConstraint.md) | +| [ReusableConstraint](ReusableConstraint.md) | +| [SameAsConstraint](SameAsConstraint.md) | +| [SamePathConstraint](SamePathConstraint.md) | +| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | +| [SomeItemsConstraint](SomeItemsConstraint.md) | +| [StartsWithConstraint](StartsWithConstraint.md) | +| [SubPathConstraint](SubPathConstraint.md) | +| [SubstringConstraint](SubstringConstraint.md) | +| [ThrowsConstraint](ThrowsConstraint.md) | +| [ThrowsNothingConstraint](ThrowsNothingConstraint.md) | +| [TrueConstraint](TrueConstraint.md) | +| [UniqueItemsConstraint](UniqueItemsConstraint.md) | +| [XmlSerializableConstraint](XmlSerializableConstraint.md) | ## Constraints by Category From a53cad39fa8fe5033f5e80f81d122fc2263ca5c0 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 01:55:51 +0000 Subject: [PATCH 03/19] more table formatting on constraints --- .../writing-tests/constraints/Constraints.md | 114 +++++++++--------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index 61ebf11e3..e17411208 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -71,81 +71,81 @@ This page lists all the constraints available in NUnit. ## Constraints by Category ### Collection Constraints - -Constraint Name | --------------------------------------| -[AllItemsConstraint](AllItemsConstraint.md) | -[AnyOfConstraint](AnyOfConstraint.md) | -[CollectionContainsConstraint](CollectionContainsConstraint.md) | -[CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | -[CollectionOrderedConstraint](CollectionOrderedConstraint.md) | -[CollectionSubsetConstraint](CollectionSubsetConstraint.md) | -[CollectionSupersetConstraint](CollectionSupersetConstraint.md) | -[DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | -[DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | -[DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| -[EmptyCollectionConstraint](EmptyCollectionConstraint.md) | -[ExactCountConstraint](ExactCountConstraint.md) | -[NoItemConstraint](NoItemConstraint.md) | -[SomeItemsConstraint](SomeItemsConstraint.md) | -[UniqueItemsConstraint](UniqueItemsConstraint.md) | + +| Constraint Name | +| -------------------------------------| +| [AllItemsConstraint](AllItemsConstraint.md) | +| [AnyOfConstraint](AnyOfConstraint.md) | +| [CollectionContainsConstraint](CollectionContainsConstraint.md) | +| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | +| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | +| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | +| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | +| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | +| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | +| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| +| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | +| [ExactCountConstraint](ExactCountConstraint.md) | +| [NoItemConstraint](NoItemConstraint.md) | +| [SomeItemsConstraint](SomeItemsConstraint.md) | +| [UniqueItemsConstraint](UniqueItemsConstraint.md) | ### Comparison Constraints -Constraint Name | --------------------------------------| -[GreaterThanConstraint](GreaterThanConstraint.md) | -[GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | -[LessThanConstraint](LessThanConstraint.md) | -[LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | -[RangeConstraint](RangeConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [GreaterThanConstraint](GreaterThanConstraint.md) | +| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | +| [LessThanConstraint](LessThanConstraint.md) | +| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | +| [RangeConstraint](RangeConstraint.md) | ### Compound Constraints -Constraint Name | --------------------------------------| -[AndConstraint](AndConstraint.md) | -[NotConstraint](NotConstraint.md) | -[OrConstraint](OrConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [AndConstraint](AndConstraint.md) | +| [NotConstraint](NotConstraint.md) | +| [OrConstraint](OrConstraint.md) | ### Condition Constraints -Constraint Name | --------------------------------------| -[EmptyConstraint](EmptyConstraint.md) | -[FalseConstraint](FalseConstraint.md) | -[NaNConstraint](NaNConstraint.md) | -[NullConstraint](NullConstraint.md) | -[TrueConstraint](TrueConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [EmptyConstraint](EmptyConstraint.md) | +| [FalseConstraint](FalseConstraint.md) | +| [NaNConstraint](NaNConstraint.md) | +| [NullConstraint](NullConstraint.md) | +| [TrueConstraint](TrueConstraint.md) | ### File and Directory Constraints -Constraint Name | --------------------------------------| -[EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | -[FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | -[SamePathConstraint](SamePathConstraint.md) | -[SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | -[SubPathConstraint](SubPathConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | +| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | +| [SamePathConstraint](SamePathConstraint.md) | +| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | +| [SubPathConstraint](SubPathConstraint.md) | ### String Constraints -Constraint Name | --------------------------------------| -[EmptyStringConstraint](EmptyStringConstraint.md) | -[EndsWithConstraint](EndsWithConstraint.md) | -[RegexConstraint](RegexConstraint.md) | -[StartsWithConstraint](StartsWithConstraint.md) | -[SubstringConstraint](SubstringConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [EmptyStringConstraint](EmptyStringConstraint.md) | +| [EndsWithConstraint](EndsWithConstraint.md) | +| [RegexConstraint](RegexConstraint.md) | +| [StartsWithConstraint](StartsWithConstraint.md) | +| [SubstringConstraint](SubstringConstraint.md) | ### Type Constraints -Constraint Name | --------------------------------------| -[AssignableFromConstraint](AssignableFromConstraint.md) | -[AssignableToConstraint](AssignableToConstraint.md) | -[ExactTypeConstraint](ExactTypeConstraint.md) | -[InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | +| Constraint Name | +| -------------------------------------| +| [AssignableFromConstraint](AssignableFromConstraint.md) | +| [AssignableToConstraint](AssignableToConstraint.md) | +| [ExactTypeConstraint](ExactTypeConstraint.md) | +| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | ## See also From c9ec73cd924c3c277a1c11e0d88d2c7e891a99d7 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 01:59:26 +0000 Subject: [PATCH 04/19] Add example column --- .../writing-tests/constraints/Constraints.md | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index e17411208..fffd5f0b4 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -11,62 +11,62 @@ This page lists all the constraints available in NUnit. ## Alphabetical List of Constraints -| Constraint Name | -| ------------------------------------- | -| [AllItemsConstraint](AllItemsConstraint.md) | -| [AndConstraint](AndConstraint.md) | -| [AssignableFromConstraint](AssignableFromConstraint.md) | -| [AssignableToConstraint](AssignableToConstraint.md) | -| [AttributeConstraint](AttributeConstraint.md) | -| [AttributeExistsConstraint](AttributeExistsConstraint.md) | -| [AnyOfConstraint](AnyOfConstraint.md) | -| [BinarySerializableConstraint](BinarySerializableConstraint.md) | -| [CollectionContainsConstraint](CollectionContainsConstraint.md) | -| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | -| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | -| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | -| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | -| [DelayedConstraint](DelayedConstraint.md) | -| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | -| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | -| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| -| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | -| [EmptyConstraint](EmptyConstraint.md) | -| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | -| [EmptyStringConstraint](EmptyStringConstraint.md) | -| [EndsWithConstraint](EndsWithConstraint.md) | -| [EqualConstraint](EqualConstraint.md) | -| [ExactCountConstraint](ExactCountConstraint.md) | -| [ExactTypeConstraint](ExactTypeConstraint.md) | -| [FalseConstraint](FalseConstraint.md) | -| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | -| [GreaterThanConstraint](GreaterThanConstraint.md) | -| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | -| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | -| [LessThanConstraint](LessThanConstraint.md) | -| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | -| [NaNConstraint](NaNConstraint.md) | -| [NoItemConstraint](NoItemConstraint.md) | -| [NotConstraint](NotConstraint.md) | -| [NullConstraint](NullConstraint.md) | -| [OrConstraint](OrConstraint.md) | -| [PropertyConstraint](PropertyConstraint.md) | -| [PropertyExistsConstraint](PropertyExistsConstraint.md) | -| [RangeConstraint](RangeConstraint.md) | -| [RegexConstraint](RegexConstraint.md) | -| [ReusableConstraint](ReusableConstraint.md) | -| [SameAsConstraint](SameAsConstraint.md) | -| [SamePathConstraint](SamePathConstraint.md) | -| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | -| [SomeItemsConstraint](SomeItemsConstraint.md) | -| [StartsWithConstraint](StartsWithConstraint.md) | -| [SubPathConstraint](SubPathConstraint.md) | -| [SubstringConstraint](SubstringConstraint.md) | -| [ThrowsConstraint](ThrowsConstraint.md) | -| [ThrowsNothingConstraint](ThrowsNothingConstraint.md) | -| [TrueConstraint](TrueConstraint.md) | -| [UniqueItemsConstraint](UniqueItemsConstraint.md) | -| [XmlSerializableConstraint](XmlSerializableConstraint.md) | +| Constraint Name | Quick Example | +| ------------------------------------- | ------------- | +| [AllItemsConstraint](AllItemsConstraint.md) | | +| [AndConstraint](AndConstraint.md) | | +| [AssignableFromConstraint](AssignableFromConstraint.md) | | +| [AssignableToConstraint](AssignableToConstraint.md) | | +| [AttributeConstraint](AttributeConstraint.md) | | +| [AttributeExistsConstraint](AttributeExistsConstraint.md) | | +| [AnyOfConstraint](AnyOfConstraint.md) | | +| [BinarySerializableConstraint](BinarySerializableConstraint.md) | | +| [CollectionContainsConstraint](CollectionContainsConstraint.md) | | +| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | | +| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | | +| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | | +| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | | +| [DelayedConstraint](DelayedConstraint.md) | | +| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | | +| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | | +| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| | +| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | | +| [EmptyConstraint](EmptyConstraint.md) | | +| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | | +| [EmptyStringConstraint](EmptyStringConstraint.md) | | +| [EndsWithConstraint](EndsWithConstraint.md) | | +| [EqualConstraint](EqualConstraint.md) | | +| [ExactCountConstraint](ExactCountConstraint.md) | | +| [ExactTypeConstraint](ExactTypeConstraint.md) | | +| [FalseConstraint](FalseConstraint.md) | | +| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | | +| [GreaterThanConstraint](GreaterThanConstraint.md) | | +| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | | +| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | | +| [LessThanConstraint](LessThanConstraint.md) | | +| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | | +| [NaNConstraint](NaNConstraint.md) | | +| [NoItemConstraint](NoItemConstraint.md) | | +| [NotConstraint](NotConstraint.md) | | +| [NullConstraint](NullConstraint.md) | | +| [OrConstraint](OrConstraint.md) | | +| [PropertyConstraint](PropertyConstraint.md) | | +| [PropertyExistsConstraint](PropertyExistsConstraint.md) | | +| [RangeConstraint](RangeConstraint.md) | | +| [RegexConstraint](RegexConstraint.md) | | +| [ReusableConstraint](ReusableConstraint.md) | | +| [SameAsConstraint](SameAsConstraint.md) | | +| [SamePathConstraint](SamePathConstraint.md) | | +| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | | +| [SomeItemsConstraint](SomeItemsConstraint.md) | | +| [StartsWithConstraint](StartsWithConstraint.md) | | +| [SubPathConstraint](SubPathConstraint.md) | | +| [SubstringConstraint](SubstringConstraint.md) | | +| [ThrowsConstraint](ThrowsConstraint.md) | | +| [ThrowsNothingConstraint](ThrowsNothingConstraint.md) | | +| [TrueConstraint](TrueConstraint.md) | | +| [UniqueItemsConstraint](UniqueItemsConstraint.md) | | +| [XmlSerializableConstraint](XmlSerializableConstraint.md) | | ## Constraints by Category From c9fe43896bec556142a027dbba2caef0f02b66e7 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:02:52 +0000 Subject: [PATCH 05/19] rest of the columns --- .../writing-tests/constraints/Constraints.md | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index fffd5f0b4..c78fc6959 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -72,80 +72,80 @@ This page lists all the constraints available in NUnit. ### Collection Constraints -| Constraint Name | -| -------------------------------------| -| [AllItemsConstraint](AllItemsConstraint.md) | -| [AnyOfConstraint](AnyOfConstraint.md) | -| [CollectionContainsConstraint](CollectionContainsConstraint.md) | -| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | -| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | -| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | -| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | -| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | -| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | -| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| -| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | -| [ExactCountConstraint](ExactCountConstraint.md) | -| [NoItemConstraint](NoItemConstraint.md) | -| [SomeItemsConstraint](SomeItemsConstraint.md) | -| [UniqueItemsConstraint](UniqueItemsConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [AllItemsConstraint](AllItemsConstraint.md) | | +| [AnyOfConstraint](AnyOfConstraint.md) | | +| [CollectionContainsConstraint](CollectionContainsConstraint.md) | | +| [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | | +| [CollectionOrderedConstraint](CollectionOrderedConstraint.md) | | +| [CollectionSubsetConstraint](CollectionSubsetConstraint.md) | | +| [CollectionSupersetConstraint](CollectionSupersetConstraint.md) | | +| [DictionaryContainsKeyConstraint](DictionaryContainsKeyConstraint.md) | | +| [DictionaryContainsKeyValuePairConstraint](DictionaryContainsKeyValuePairConstraint.md) | | +| [DictionaryContainsValueConstraint](DictionaryContainsValueConstraint.md)| | +| [EmptyCollectionConstraint](EmptyCollectionConstraint.md) | | +| [ExactCountConstraint](ExactCountConstraint.md) | | +| [NoItemConstraint](NoItemConstraint.md) | | +| [SomeItemsConstraint](SomeItemsConstraint.md) | | +| [UniqueItemsConstraint](UniqueItemsConstraint.md) | | ### Comparison Constraints -| Constraint Name | -| -------------------------------------| -| [GreaterThanConstraint](GreaterThanConstraint.md) | -| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | -| [LessThanConstraint](LessThanConstraint.md) | -| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | -| [RangeConstraint](RangeConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [GreaterThanConstraint](GreaterThanConstraint.md) | | +| [GreaterThanOrEqualConstraint](GreaterThanOrEqualConstraint.md) | | +| [LessThanConstraint](LessThanConstraint.md) | | +| [LessThanOrEqualConstraint](LessThanOrEqualConstraint.md) | | +| [RangeConstraint](RangeConstraint.md) | | ### Compound Constraints -| Constraint Name | -| -------------------------------------| -| [AndConstraint](AndConstraint.md) | -| [NotConstraint](NotConstraint.md) | -| [OrConstraint](OrConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [AndConstraint](AndConstraint.md) | | +| [NotConstraint](NotConstraint.md) | | +| [OrConstraint](OrConstraint.md) | | ### Condition Constraints -| Constraint Name | -| -------------------------------------| -| [EmptyConstraint](EmptyConstraint.md) | -| [FalseConstraint](FalseConstraint.md) | -| [NaNConstraint](NaNConstraint.md) | -| [NullConstraint](NullConstraint.md) | -| [TrueConstraint](TrueConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [EmptyConstraint](EmptyConstraint.md) | | +| [FalseConstraint](FalseConstraint.md) | | +| [NaNConstraint](NaNConstraint.md) | | +| [NullConstraint](NullConstraint.md) | | +| [TrueConstraint](TrueConstraint.md) | | ### File and Directory Constraints -| Constraint Name | -| -------------------------------------| -| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | -| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | -| [SamePathConstraint](SamePathConstraint.md) | -| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | -| [SubPathConstraint](SubPathConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [EmptyDirectoryConstraint](EmptyDirectoryConstraint.md) | | +| [FileOrDirectoryExistsConstraint](FileOrDirectoryExistsConstraint.md) | | +| [SamePathConstraint](SamePathConstraint.md) | | +| [SamePathOrUnderConstraint](SamePathOrUnderConstraint.md) | | +| [SubPathConstraint](SubPathConstraint.md) | | ### String Constraints -| Constraint Name | -| -------------------------------------| -| [EmptyStringConstraint](EmptyStringConstraint.md) | -| [EndsWithConstraint](EndsWithConstraint.md) | -| [RegexConstraint](RegexConstraint.md) | -| [StartsWithConstraint](StartsWithConstraint.md) | -| [SubstringConstraint](SubstringConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [EmptyStringConstraint](EmptyStringConstraint.md) | | +| [EndsWithConstraint](EndsWithConstraint.md) | | +| [RegexConstraint](RegexConstraint.md) | | +| [StartsWithConstraint](StartsWithConstraint.md) | | +| [SubstringConstraint](SubstringConstraint.md) | | ### Type Constraints -| Constraint Name | -| -------------------------------------| -| [AssignableFromConstraint](AssignableFromConstraint.md) | -| [AssignableToConstraint](AssignableToConstraint.md) | -| [ExactTypeConstraint](ExactTypeConstraint.md) | -| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | +| Constraint Name | Quick Example | +| -------------------------------------| ------------- | +| [AssignableFromConstraint](AssignableFromConstraint.md) | | +| [AssignableToConstraint](AssignableToConstraint.md) | | +| [ExactTypeConstraint](ExactTypeConstraint.md) | | +| [InstanceOfTypeConstraint](InstanceOfTypeConstraint.md) | | ## See also From ba5ed36011163664998e2aaee0a0fc950cdbc590 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:23:51 +0000 Subject: [PATCH 06/19] Example in markdown --- docs/articles/nunit/writing-tests/constraints/Constraints.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index c78fc6959..3156207db 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -4,6 +4,8 @@ uid: constraints # Constraints + + This page lists all the constraints available in NUnit. * [Alphabetical List of Constraints](#alphabetical-list-of-constraints) @@ -13,7 +15,7 @@ This page lists all the constraints available in NUnit. | Constraint Name | Quick Example | | ------------------------------------- | ------------- | -| [AllItemsConstraint](AllItemsConstraint.md) | | +| [AllItemsConstraint](AllItemsConstraint.md) | `myEnumerable.Has.All.GreaterThan(32)`
`myEnumerable.Is.All.InstanceOf()` | | [AndConstraint](AndConstraint.md) | | | [AssignableFromConstraint](AssignableFromConstraint.md) | | | [AssignableToConstraint](AssignableToConstraint.md) | | From 9fdbc7aa9e25a4bb94ea86392d49e00a788d9838 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:25:23 +0000 Subject: [PATCH 07/19] lint: newline --- .../nunit/writing-tests/constraints/AllItemsConstraint.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md index 17f672399..ae119e873 100644 --- a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md @@ -16,4 +16,4 @@ You can use `Is.All` or `Has.All` to refer to all items in an `IEnumerable`. [!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsIsExample)] -[!code-csharp[HasBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsHasExample)] \ No newline at end of file +[!code-csharp[HasBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsHasExample)] From 23dc3b948a99bd5425187be493c0b79b92a67478 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:29:20 +0000 Subject: [PATCH 08/19] more --- docs/articles/nunit/writing-tests/constraints/Constraints.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index 3156207db..95ce7af55 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -15,8 +15,8 @@ This page lists all the constraints available in NUnit. | Constraint Name | Quick Example | | ------------------------------------- | ------------- | -| [AllItemsConstraint](AllItemsConstraint.md) | `myEnumerable.Has.All.GreaterThan(32)`
`myEnumerable.Is.All.InstanceOf()` | -| [AndConstraint](AndConstraint.md) | | +| [AllItemsConstraint](AllItemsConstraint.md) | `Assert.That(myEnumerable, Has.All.GreaterThan(32))`
`Assert.That(myEnumerable, Is.All.InstanceOf()` | +| [AndConstraint](AndConstraint.md) | `Assert.That(2.3, Is.GreaterThan(2.0).And.LessThan(3.0))` | | [AssignableFromConstraint](AssignableFromConstraint.md) | | | [AssignableToConstraint](AssignableToConstraint.md) | | | [AttributeConstraint](AttributeConstraint.md) | | From 6beb384c1d3af3b9c2975e5ce22b953430ecdb9f Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:32:27 +0000 Subject: [PATCH 09/19] Add two one-liner examples --- docs/articles/nunit/writing-tests/constraints/Constraints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index 95ce7af55..eb1eeab9b 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -17,7 +17,7 @@ This page lists all the constraints available in NUnit. | ------------------------------------- | ------------- | | [AllItemsConstraint](AllItemsConstraint.md) | `Assert.That(myEnumerable, Has.All.GreaterThan(32))`
`Assert.That(myEnumerable, Is.All.InstanceOf()` | | [AndConstraint](AndConstraint.md) | `Assert.That(2.3, Is.GreaterThan(2.0).And.LessThan(3.0))` | -| [AssignableFromConstraint](AssignableFromConstraint.md) | | +| [AssignableFromConstraint](AssignableFromConstraint.md) | `Assert.That("Hello", Is.AssignableFrom(typeof(string)));`
`Assert.That(5, Is.Not.AssignableFrom());` | | [AssignableToConstraint](AssignableToConstraint.md) | | | [AttributeConstraint](AttributeConstraint.md) | | | [AttributeExistsConstraint](AttributeExistsConstraint.md) | | From 6b94e1d091f0d03dd49948867a807c612c05c15a Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:33:22 +0000 Subject: [PATCH 10/19] Move into common file to move faster --- .../nunit/writing-tests/constraints/AllItemsConstraint.md | 4 ++-- .../{AllItemsConstraintExamples.cs => ConstraintExamples.cs} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename docs/snippets/Snippets.NUnit/Constraints/{AllItemsConstraintExamples.cs => ConstraintExamples.cs} (94%) diff --git a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md index ae119e873..6de27e98a 100644 --- a/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AllItemsConstraint.md @@ -14,6 +14,6 @@ You can use `Is.All` or `Has.All` to refer to all items in an `IEnumerable`. ## Examples of Use -[!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsIsExample)] +[!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AllItemsIsExample)] -[!code-csharp[HasBasedFormat](~/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs#AllItemsHasExample)] +[!code-csharp[HasBasedFormat](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AllItemsHasExample)] diff --git a/docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs similarity index 94% rename from docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs rename to docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index ab89ffd68..882b710e4 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/AllItemsConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -2,7 +2,7 @@ namespace Snippets.NUnit.Attributes { - public class AllItemsConstraintExamples + public class ConstraintExamples { #region AllItemsIsExample [Test] From d282698f5e9326ad7c68fd71a78246a2d898fc2d Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:37:29 +0000 Subject: [PATCH 11/19] New example --- .../constraints/AssignableFromConstraint.md | 5 +---- .../Snippets.NUnit/Constraints/ConstraintExamples.cs | 11 +++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md b/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md index 413971921..69da07ad8 100644 --- a/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md @@ -17,7 +17,4 @@ Is.AssignableFrom() ## Examples of Use -```csharp -Assert.That("Hello", Is.AssignableFrom(typeof(string))); -Assert.That(5, Is.Not.AssignableFrom(typeof(string))); -``` +[!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AssignableFromExample)] diff --git a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index 882b710e4..ac577a6a1 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -27,6 +27,17 @@ public void CanUseHasToTalkAboutAllItems() Assert.That(arrayOfIntegers, Has.All.GreaterThan(0)); } #endregion + #region AssignableFromExample + [Test] + public void AssignableFromExample() + { + var theString = "Hello"; + Assert.That(theString, Is.AssignableFrom(typeof(string))); + + var theInt = 5; + Assert.That(theInt, Is.Not.AssignableFrom()); + } + #endregion } } From f07479ebd60a55881c44be2bd2b978b8ef3db432 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 02:37:34 +0000 Subject: [PATCH 12/19] Fix alphabetical list --- docs/articles/nunit/writing-tests/constraints/Constraints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index eb1eeab9b..037891dfa 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -17,11 +17,11 @@ This page lists all the constraints available in NUnit. | ------------------------------------- | ------------- | | [AllItemsConstraint](AllItemsConstraint.md) | `Assert.That(myEnumerable, Has.All.GreaterThan(32))`
`Assert.That(myEnumerable, Is.All.InstanceOf()` | | [AndConstraint](AndConstraint.md) | `Assert.That(2.3, Is.GreaterThan(2.0).And.LessThan(3.0))` | +| [AnyOfConstraint](AnyOfConstraint.md) | | | [AssignableFromConstraint](AssignableFromConstraint.md) | `Assert.That("Hello", Is.AssignableFrom(typeof(string)));`
`Assert.That(5, Is.Not.AssignableFrom());` | | [AssignableToConstraint](AssignableToConstraint.md) | | | [AttributeConstraint](AttributeConstraint.md) | | | [AttributeExistsConstraint](AttributeExistsConstraint.md) | | -| [AnyOfConstraint](AnyOfConstraint.md) | | | [BinarySerializableConstraint](BinarySerializableConstraint.md) | | | [CollectionContainsConstraint](CollectionContainsConstraint.md) | | | [CollectionEquivalentConstraint](CollectionEquivalentConstraint.md) | | From 49d40595e51d85af93f4a9694589e101481f8b03 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 03:03:06 +0000 Subject: [PATCH 13/19] more --- .../nunit/writing-tests/constraints/AndConstraint.md | 4 +--- .../writing-tests/constraints/AssignableFromConstraint.md | 2 +- .../Snippets.NUnit/Constraints/ConstraintExamples.cs | 8 ++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/AndConstraint.md b/docs/articles/nunit/writing-tests/constraints/AndConstraint.md index 62ae91b0b..bdeaaaa4c 100644 --- a/docs/articles/nunit/writing-tests/constraints/AndConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AndConstraint.md @@ -16,9 +16,7 @@ AndConstraint(Constraint left, Constraint right) ## Examples of Use -```csharp -Assert.That(2.3, Is.GreaterThan(2.0).And.LessThan(3.0)); -``` +[!code-csharp[AndExample](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AndExample)] ## Evaluation Order and Precedence diff --git a/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md b/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md index 69da07ad8..ada899c7f 100644 --- a/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AssignableFromConstraint.md @@ -17,4 +17,4 @@ Is.AssignableFrom() ## Examples of Use -[!code-csharp[IsBasedFormat](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AssignableFromExample)] +[!code-csharp[AssignableFromExample](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AssignableFromExample)] diff --git a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index ac577a6a1..a965d59b4 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -38,6 +38,14 @@ public void AssignableFromExample() Assert.That(theInt, Is.Not.AssignableFrom()); } #endregion + #region AndExample + [Test] + public void UsingAndToCombineConstraints() + { + var testValue = 2.3; + Assert.That(testValue, Is.GreaterThan(2.0).And.LessThan(3.0)); + } + #endregion } } From c3638fe502cf2d15594dc470618327c3261bf408 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 03:06:04 +0000 Subject: [PATCH 14/19] Add C# devkit to devcontainer --- .devcontainer/devcontainer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 62a742fb1..93cbaa6f9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,7 +17,8 @@ "shuworks.vscode-table-formatter", "ms-dotnettools.csharp", "github.vscode-github-actions", - "ms-azuretools.vscode-docker" + "ms-azuretools.vscode-docker", + "ms-dotnettools.csdevkit" ] } } From eb03bee5eddca27d2c3411b8934aae3c04d91cdf Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 03:16:16 +0000 Subject: [PATCH 15/19] example --- .../Constraints/ConstraintExamples.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index a965d59b4..af94d5056 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -46,6 +46,22 @@ public void UsingAndToCombineConstraints() Assert.That(testValue, Is.GreaterThan(2.0).And.LessThan(3.0)); } #endregion + #region AnyOfExample + [Test] + public void AnyOfCanDetectIfAnItemMatchesAnArrayOfParams() + { + var testValue = 42; + Assert.That(testValue, Is.AnyOf(0, -1, 42, 100)); + } + #endregion + #region AnyOfWithCustomComparison + [Test] + public void AnyOfCanUseCustomComparisons() + { + var testValue = "NUnit"; + Assert.That(testValue, Is.AnyOf("hello", "world", "nunit").Using(StringComparer.InvariantCultureIgnoreCase)); + } + #endregion } } From 7c64da381085ccb3f509d95b9126b0b38f50c400 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Sun, 15 Oct 2023 23:19:02 -0400 Subject: [PATCH 16/19] Cast to IComparer Because NUnit supports both --- docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index af94d5056..e1588ade4 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -1,3 +1,4 @@ +using System.Collections; using NUnit.Framework; namespace Snippets.NUnit.Attributes @@ -59,7 +60,7 @@ public void AnyOfCanDetectIfAnItemMatchesAnArrayOfParams() public void AnyOfCanUseCustomComparisons() { var testValue = "NUnit"; - Assert.That(testValue, Is.AnyOf("hello", "world", "nunit").Using(StringComparer.InvariantCultureIgnoreCase)); + Assert.That(testValue, Is.AnyOf("hello", "world", "nunit").Using((IComparer)StringComparer.InvariantCultureIgnoreCase)); } #endregion } From 7738f501be54286e570d0126bef744c46e7c2666 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Sun, 15 Oct 2023 23:20:08 -0400 Subject: [PATCH 17/19] Fix constraint with note --- docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs index e1588ade4..7824664ee 100644 --- a/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs +++ b/docs/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs @@ -60,6 +60,9 @@ public void AnyOfCanDetectIfAnItemMatchesAnArrayOfParams() public void AnyOfCanUseCustomComparisons() { var testValue = "NUnit"; + + // NOTE: Here we cast our comparison to IComparer, because StringComparer implements + // multiple interfaces that NUnit custom comparisons supports. Assert.That(testValue, Is.AnyOf("hello", "world", "nunit").Using((IComparer)StringComparer.InvariantCultureIgnoreCase)); } #endregion From a067bee900dabdaf7c29de22696b588a1181bc16 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 03:21:39 +0000 Subject: [PATCH 18/19] Use example --- .../nunit/writing-tests/constraints/AnyOfConstraint.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/articles/nunit/writing-tests/constraints/AnyOfConstraint.md b/docs/articles/nunit/writing-tests/constraints/AnyOfConstraint.md index 9dad641d0..75e5e9e48 100644 --- a/docs/articles/nunit/writing-tests/constraints/AnyOfConstraint.md +++ b/docs/articles/nunit/writing-tests/constraints/AnyOfConstraint.md @@ -30,9 +30,6 @@ Is.AnyOf(object[] expected) ## Examples of Use -```csharp -Assert.That(42, Is.AnyOf(0, -1, 42, 100)); +[!code-csharp[AnyOfExample](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AnyOfExample)] -// You can use a custom comparer as well -Assert.That(myOwnObject, Is.AnyOf(myArray).Using(myComparer)); -``` +[!code-csharp[AnyOfWithCustomComparison](~/snippets/Snippets.NUnit/Constraints/ConstraintExamples.cs#AnyOfWithCustomComparison)] From ade4f4f6793e99f6acb91fbd6ac7c344f4b5c923 Mon Sep 17 00:00:00 2001 From: Sean Killeen Date: Mon, 16 Oct 2023 03:22:31 +0000 Subject: [PATCH 19/19] more --- docs/articles/nunit/writing-tests/constraints/Constraints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/nunit/writing-tests/constraints/Constraints.md b/docs/articles/nunit/writing-tests/constraints/Constraints.md index 037891dfa..aa2600e80 100644 --- a/docs/articles/nunit/writing-tests/constraints/Constraints.md +++ b/docs/articles/nunit/writing-tests/constraints/Constraints.md @@ -17,7 +17,7 @@ This page lists all the constraints available in NUnit. | ------------------------------------- | ------------- | | [AllItemsConstraint](AllItemsConstraint.md) | `Assert.That(myEnumerable, Has.All.GreaterThan(32))`
`Assert.That(myEnumerable, Is.All.InstanceOf()` | | [AndConstraint](AndConstraint.md) | `Assert.That(2.3, Is.GreaterThan(2.0).And.LessThan(3.0))` | -| [AnyOfConstraint](AnyOfConstraint.md) | | +| [AnyOfConstraint](AnyOfConstraint.md) | `Assert.That(42, Is.AnyOf(0, -1, 42, 100));` | | [AssignableFromConstraint](AssignableFromConstraint.md) | `Assert.That("Hello", Is.AssignableFrom(typeof(string)));`
`Assert.That(5, Is.Not.AssignableFrom());` | | [AssignableToConstraint](AssignableToConstraint.md) | | | [AttributeConstraint](AttributeConstraint.md) | |