chore(sonar): wrap independent assertions in Assert.Multiple (NUnit2045)

Driven by `dotnet format analyzers --diagnostics NUnit2045`. The fixer
groups consecutive independent `Assert.That(...)` calls into
`Assert.Multiple(() => { ... })`, so a failing assertion no longer
short-circuits the block — every failure inside the group is reported,
which gives much better diagnostics on multi-property tests.

Audit confirmed no Assert.Throws / Assert.Fail / Assert.Catch / Assert.Pass
/ Assert.DoesNotThrow got pulled inside a Multiple block (those need to
short-circuit). All 1180 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Thom Lamb
2026-05-27 11:59:47 -05:00
co-authored by Claude Opus 4.7
parent 505ada5017
commit 67512d23e1
47 changed files with 2132 additions and 1113 deletions
@@ -280,8 +280,11 @@ public class StatementExpressionParserTests
// Act & Assert
var ex = Assert.Throws<ArgumentNullException>(() => _parser.Parse(sql));
Assert.That(ex.ParamName, Is.EqualTo("sqlStatement"));
Assert.That(ex.Message, Does.Contain("SQL statement cannot be null or empty"));
Assert.Multiple(() =>
{
Assert.That(ex.ParamName, Is.EqualTo("sqlStatement"));
Assert.That(ex.Message, Does.Contain("SQL statement cannot be null or empty"));
});
}
[Test]
@@ -351,9 +354,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
});
Assert.That(result, Is.InstanceOf<NumberLiteralExpression>());
}
@@ -366,9 +372,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
});
}
[Test]
@@ -380,9 +389,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
});
Assert.That(result, Is.InstanceOf<SumFunction>());
}
@@ -395,9 +407,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
});
}
[Test]
@@ -409,9 +424,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
});
}
[Test]
@@ -423,9 +441,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
});
}
[Test]
@@ -437,9 +458,12 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
});
}
[Test]
@@ -451,10 +475,13 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result, out var errorMessage);
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
Assert.That(errorMessage, Is.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.True);
Assert.That(result, Is.Not.Null);
Assert.That(errorMessage, Is.Null);
});
}
[Test]
@@ -466,10 +493,13 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result, out var errorMessage);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
});
Assert.That(errorMessage, Does.Contain("SQL statement cannot be null or empty"));
}
@@ -482,10 +512,13 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result, out var errorMessage);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
});
Assert.That(errorMessage, Does.Contain("Invalid syntax"));
}
@@ -498,10 +531,13 @@ public class StatementExpressionParserTests
// Act
var success = _parser.TryParse(sql, out var result, out var errorMessage);
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
Assert.Multiple(() =>
{
// Assert
Assert.That(success, Is.False);
Assert.That(result, Is.Null);
Assert.That(errorMessage, Is.Not.Null);
});
Assert.That(errorMessage, Does.Contain("not recognized"));
}