Skip to content

Commit 14bbf4d

Browse files
SeanKilleenCopilot
andcommitted
Document Using(StringComparison) and Using(CultureInfo) modifiers for string constraints (#1103)
* Initial plan * Document Using(StringComparison) and Using(CultureInfo) modifiers for string constraints Co-authored-by: OsirisTerje <203432+OsirisTerje@users.noreply.github.com> * Fix CultureInfo examples to use more appropriate Turkish culture case comparison Co-authored-by: OsirisTerje <203432+OsirisTerje@users.noreply.github.com> * Improve CultureInfo examples to show both case-sensitive and case-insensitive usage Co-authored-by: OsirisTerje <203432+OsirisTerje@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: OsirisTerje <203432+OsirisTerje@users.noreply.github.com> 9d92cc0
1 parent 0d11436 commit 14bbf4d

File tree

5 files changed

+781
-727
lines changed

5 files changed

+781
-727
lines changed

articles/nunit/writing-tests/constraints/EndsWithConstraint.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,33 @@ <h2 id="syntax">Syntax</h2>
9696
</code></pre>
9797
<h2 id="modifiers">Modifiers</h2>
9898
<pre><code class="lang-csharp">...IgnoreCase
99+
...Using(StringComparison comparisonType)
100+
...Using(CultureInfo culture)
99101
</code></pre>
100102
<h2 id="examples-of-use">Examples of Use</h2>
101103
<pre><code class="lang-csharp">string phrase = &quot;Make your tests fail before passing!&quot;;
102104

103105
Assert.That(phrase, Does.EndWith(&quot;!&quot;));
104106
Assert.That(phrase, Does.EndWith(&quot;PASSING!&quot;).IgnoreCase);
105107
</code></pre>
108+
<h3 id="specifying-a-stringcomparison">Specifying a StringComparison</h3>
109+
<pre><code class="lang-csharp">Assert.That(&quot;Hello World!&quot;, Does.EndWith(&quot;WORLD!&quot;).Using(StringComparison.OrdinalIgnoreCase));
110+
Assert.That(&quot;Hello World!&quot;, Does.EndWith(&quot;World!&quot;).Using(StringComparison.Ordinal));
111+
</code></pre>
112+
<h3 id="specifying-a-cultureinfo">Specifying a CultureInfo</h3>
113+
<p>The <code>Using(CultureInfo)</code> modifier allows for culture-specific string comparisons.
114+
It can be combined with <code>.IgnoreCase</code> for case-insensitive culture-aware comparisons:</p>
115+
<pre><code class="lang-csharp">// Using Turkish culture where 'i' and 'I' have special casing rules
116+
Assert.That(&quot;text TITLE&quot;, Does.EndWith(&quot;title&quot;).IgnoreCase.Using(new CultureInfo(&quot;tr-TR&quot;)));
117+
118+
// Culture-specific comparison without case-insensitivity
119+
Assert.That(&quot;Main Straße&quot;, Does.EndWith(&quot;Straße&quot;).Using(new CultureInfo(&quot;de-DE&quot;)));
120+
</code></pre>
106121
<h2 id="notes">Notes</h2>
107122
<ol>
108123
<li><strong>EndsWith</strong> may appear only in the body of a constraint expression or when the inherited syntax is used.</li>
124+
<li>Only one <code>Using</code> modifier may be specified. Attempting to use multiple <code>Using</code> modifiers
125+
will throw an <code>InvalidOperationException</code>.</li>
109126
</ol>
110127

111128
</article>

articles/nunit/writing-tests/constraints/StartsWithConstraint.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,34 @@ <h2 id="syntax">Syntax</h2>
9696
</code></pre>
9797
<h2 id="modifiers">Modifiers</h2>
9898
<pre><code class="lang-csharp">...IgnoreCase
99+
...Using(StringComparison comparisonType)
100+
...Using(CultureInfo culture)
99101
</code></pre>
100102
<h2 id="examples-of-use">Examples of Use</h2>
101103
<pre><code class="lang-csharp">string phrase = &quot;Make your tests fail before passing!&quot;;
102104

103105
Assert.That(phrase, Does.StartWith(&quot;Make&quot;));
104106
Assert.That(phrase, Does.Not.StartWith(&quot;Break&quot;));
105107
</code></pre>
108+
<h3 id="specifying-a-stringcomparison">Specifying a StringComparison</h3>
109+
<pre><code class="lang-csharp">Assert.That(&quot;Hello World!&quot;, Does.StartWith(&quot;HELLO&quot;).Using(StringComparison.OrdinalIgnoreCase));
110+
Assert.That(&quot;Hello World!&quot;, Does.StartWith(&quot;Hello&quot;).Using(StringComparison.Ordinal));
111+
</code></pre>
112+
<h3 id="specifying-a-cultureinfo">Specifying a CultureInfo</h3>
113+
<p>The <code>Using(CultureInfo)</code> modifier allows for culture-specific string comparisons.
114+
It can be combined with <code>.IgnoreCase</code> for case-insensitive culture-aware comparisons:</p>
115+
<pre><code class="lang-csharp">// Using Turkish culture where 'i' and 'I' have special casing rules
116+
Assert.That(&quot;TITLE text&quot;, Does.StartWith(&quot;title&quot;).IgnoreCase.Using(new CultureInfo(&quot;tr-TR&quot;)));
117+
118+
// Culture-specific comparison without case-insensitivity
119+
Assert.That(&quot;Straße Street&quot;, Does.StartWith(&quot;Straße&quot;).Using(new CultureInfo(&quot;de-DE&quot;)));
120+
</code></pre>
106121
<h2 id="notes">Notes</h2>
107122
<ol>
108123
<li><strong>StartsWith</strong> may appear only in the body of a constraint
109124
expression or when the inherited syntax is used.</li>
125+
<li>Only one <code>Using</code> modifier may be specified. Attempting to use multiple <code>Using</code> modifiers
126+
will throw an <code>InvalidOperationException</code>.</li>
110127
</ol>
111128

112129
</article>

articles/nunit/writing-tests/constraints/SubstringConstraint.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ <h2 id="syntax">Syntax</h2>
9595
</code></pre>
9696
<h2 id="modifiers">Modifiers</h2>
9797
<pre><code class="lang-csharp">...IgnoreCase
98+
...Using(StringComparison comparisonType)
99+
...Using(CultureInfo culture)
98100
</code></pre>
99101
<h2 id="examples-of-use">Examples of Use</h2>
100102
<pre><code class="lang-csharp" name="StringConstraintExamples">[Test]
@@ -105,7 +107,25 @@ <h2 id="examples-of-use">Examples of Use</h2>
105107
Assert.That(&quot;Hello World!&quot;, Does.Contain(&quot;lo Wor&quot;));
106108
Assert.That(&quot;Hello World!&quot;, Does.Match(&quot;H.*!&quot;));
107109
}
110+
</code></pre><h3 id="specifying-a-stringcomparison">Specifying a StringComparison</h3>
111+
<pre><code class="lang-csharp">Assert.That(&quot;Hello World!&quot;, Does.Contain(&quot;WORLD&quot;).Using(StringComparison.OrdinalIgnoreCase));
112+
Assert.That(&quot;Hello World!&quot;, Does.Contain(&quot;World&quot;).Using(StringComparison.Ordinal));
108113
</code></pre>
114+
<h3 id="specifying-a-cultureinfo">Specifying a CultureInfo</h3>
115+
<p>The <code>Using(CultureInfo)</code> modifier allows for culture-specific string comparisons.
116+
It can be combined with <code>.IgnoreCase</code> for case-insensitive culture-aware comparisons:</p>
117+
<pre><code class="lang-csharp">// Using Turkish culture where 'i' and 'I' have special casing rules
118+
Assert.That(&quot;Hello TITLE World&quot;, Does.Contain(&quot;title&quot;).IgnoreCase.Using(new CultureInfo(&quot;tr-TR&quot;)));
119+
120+
// Culture-specific comparison without case-insensitivity
121+
Assert.That(&quot;Straße Street&quot;, Does.Contain(&quot;Straße&quot;).Using(new CultureInfo(&quot;de-DE&quot;)));
122+
</code></pre>
123+
<h2 id="notes">Notes</h2>
124+
<ol>
125+
<li>Only one <code>Using</code> modifier may be specified. Attempting to use multiple <code>Using</code> modifiers
126+
will throw an <code>InvalidOperationException</code>.</li>
127+
</ol>
128+
109129
</article>
110130
</div>
111131

index.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3342,7 +3342,7 @@
33423342
"articles/nunit/writing-tests/constraints/EndsWithConstraint.html": {
33433343
"href": "articles/nunit/writing-tests/constraints/EndsWithConstraint.html",
33443344
"title": "EndsWith Constraint | NUnit Docs",
3345-
"summary": "EndsWith Constraint EndsWithConstraint tests for an ending string. Constructor EndsWithConstraint(string expected) Syntax Does.EndWith(string expected) EndsWith(string expected) Modifiers ...IgnoreCase Examples of Use string phrase = \"Make your tests fail before passing!\"; Assert.That(phrase, Does.EndWith(\"!\")); Assert.That(phrase, Does.EndWith(\"PASSING!\").IgnoreCase); Notes EndsWith may appear only in the body of a constraint expression or when the inherited syntax is used."
3345+
"summary": "EndsWith Constraint EndsWithConstraint tests for an ending string. Constructor EndsWithConstraint(string expected) Syntax Does.EndWith(string expected) EndsWith(string expected) Modifiers ...IgnoreCase ...Using(StringComparison comparisonType) ...Using(CultureInfo culture) Examples of Use string phrase = \"Make your tests fail before passing!\"; Assert.That(phrase, Does.EndWith(\"!\")); Assert.That(phrase, Does.EndWith(\"PASSING!\").IgnoreCase); Specifying a StringComparison Assert.That(\"Hello World!\", Does.EndWith(\"WORLD!\").Using(StringComparison.OrdinalIgnoreCase)); Assert.That(\"Hello World!\", Does.EndWith(\"World!\").Using(StringComparison.Ordinal)); Specifying a CultureInfo The Using(CultureInfo) modifier allows for culture-specific string comparisons. It can be combined with .IgnoreCase for case-insensitive culture-aware comparisons: // Using Turkish culture where 'i' and 'I' have special casing rules Assert.That(\"text TITLE\", Does.EndWith(\"title\").IgnoreCase.Using(new CultureInfo(\"tr-TR\"))); // Culture-specific comparison without case-insensitivity Assert.That(\"Main Straße\", Does.EndWith(\"Straße\").Using(new CultureInfo(\"de-DE\"))); Notes EndsWith may appear only in the body of a constraint expression or when the inherited syntax is used. Only one Using modifier may be specified. Attempting to use multiple Using modifiers will throw an InvalidOperationException."
33463346
},
33473347
"articles/nunit/writing-tests/constraints/EqualConstraint.html": {
33483348
"href": "articles/nunit/writing-tests/constraints/EqualConstraint.html",
@@ -3467,7 +3467,7 @@
34673467
"articles/nunit/writing-tests/constraints/StartsWithConstraint.html": {
34683468
"href": "articles/nunit/writing-tests/constraints/StartsWithConstraint.html",
34693469
"title": "StartsWith Constraint | NUnit Docs",
3470-
"summary": "StartsWith Constraint StartsWithConstraint tests for an initial string. Constructor StartsWithConstraint(string expected) Syntax Does.StartWith(string expected) StartsWith(string expected) Modifiers ...IgnoreCase Examples of Use string phrase = \"Make your tests fail before passing!\"; Assert.That(phrase, Does.StartWith(\"Make\")); Assert.That(phrase, Does.Not.StartWith(\"Break\")); Notes StartsWith may appear only in the body of a constraint expression or when the inherited syntax is used."
3470+
"summary": "StartsWith Constraint StartsWithConstraint tests for an initial string. Constructor StartsWithConstraint(string expected) Syntax Does.StartWith(string expected) StartsWith(string expected) Modifiers ...IgnoreCase ...Using(StringComparison comparisonType) ...Using(CultureInfo culture) Examples of Use string phrase = \"Make your tests fail before passing!\"; Assert.That(phrase, Does.StartWith(\"Make\")); Assert.That(phrase, Does.Not.StartWith(\"Break\")); Specifying a StringComparison Assert.That(\"Hello World!\", Does.StartWith(\"HELLO\").Using(StringComparison.OrdinalIgnoreCase)); Assert.That(\"Hello World!\", Does.StartWith(\"Hello\").Using(StringComparison.Ordinal)); Specifying a CultureInfo The Using(CultureInfo) modifier allows for culture-specific string comparisons. It can be combined with .IgnoreCase for case-insensitive culture-aware comparisons: // Using Turkish culture where 'i' and 'I' have special casing rules Assert.That(\"TITLE text\", Does.StartWith(\"title\").IgnoreCase.Using(new CultureInfo(\"tr-TR\"))); // Culture-specific comparison without case-insensitivity Assert.That(\"Straße Street\", Does.StartWith(\"Straße\").Using(new CultureInfo(\"de-DE\"))); Notes StartsWith may appear only in the body of a constraint expression or when the inherited syntax is used. Only one Using modifier may be specified. Attempting to use multiple Using modifiers will throw an InvalidOperationException."
34713471
},
34723472
"articles/nunit/writing-tests/constraints/SubPathConstraint.html": {
34733473
"href": "articles/nunit/writing-tests/constraints/SubPathConstraint.html",
@@ -3477,7 +3477,7 @@
34773477
"articles/nunit/writing-tests/constraints/SubstringConstraint.html": {
34783478
"href": "articles/nunit/writing-tests/constraints/SubstringConstraint.html",
34793479
"title": "Substring Constraint | NUnit Docs",
3480-
"summary": "Substring Constraint SubstringConstraint tests for a substring. Constructor SubstringConstraint(string expected) Syntax Does.Contain(string expected) Modifiers ...IgnoreCase Examples of Use [Test] public void StringConstraint_Examples() { Assert.That(\"Hello World!\", Does.StartWith(\"Hello\")); Assert.That(\"Hello World!\", Does.EndWith(\"World!\")); Assert.That(\"Hello World!\", Does.Contain(\"lo Wor\")); Assert.That(\"Hello World!\", Does.Match(\"H.*!\")); }"
3480+
"summary": "Substring Constraint SubstringConstraint tests for a substring. Constructor SubstringConstraint(string expected) Syntax Does.Contain(string expected) Modifiers ...IgnoreCase ...Using(StringComparison comparisonType) ...Using(CultureInfo culture) Examples of Use [Test] public void StringConstraint_Examples() { Assert.That(\"Hello World!\", Does.StartWith(\"Hello\")); Assert.That(\"Hello World!\", Does.EndWith(\"World!\")); Assert.That(\"Hello World!\", Does.Contain(\"lo Wor\")); Assert.That(\"Hello World!\", Does.Match(\"H.*!\")); } Specifying a StringComparison Assert.That(\"Hello World!\", Does.Contain(\"WORLD\").Using(StringComparison.OrdinalIgnoreCase)); Assert.That(\"Hello World!\", Does.Contain(\"World\").Using(StringComparison.Ordinal)); Specifying a CultureInfo The Using(CultureInfo) modifier allows for culture-specific string comparisons. It can be combined with .IgnoreCase for case-insensitive culture-aware comparisons: // Using Turkish culture where 'i' and 'I' have special casing rules Assert.That(\"Hello TITLE World\", Does.Contain(\"title\").IgnoreCase.Using(new CultureInfo(\"tr-TR\"))); // Culture-specific comparison without case-insensitivity Assert.That(\"Straße Street\", Does.Contain(\"Straße\").Using(new CultureInfo(\"de-DE\"))); Notes Only one Using modifier may be specified. Attempting to use multiple Using modifiers will throw an InvalidOperationException."
34813481
},
34823482
"articles/nunit/writing-tests/constraints/ThrowsConstraint.html": {
34833483
"href": "articles/nunit/writing-tests/constraints/ThrowsConstraint.html",

0 commit comments

Comments
 (0)