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
@@ -23,9 +23,12 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Is.Not.Empty);
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.LeftParenthesis));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[1].Value, Is.EqualTo("1"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.LeftParenthesis));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[1].Value, Is.EqualTo("1"));
});
}
[Test]
@@ -44,14 +47,17 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Has.Count.EqualTo(5)); // "COLUMN_1" + "COLUMN_2" * 2
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("COLUMN_1"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("COLUMN_2"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Multiply));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[4].Value, Is.EqualTo("2"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("COLUMN_1"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("COLUMN_2"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Multiply));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[4].Value, Is.EqualTo("2"));
});
}
[Test]
@@ -70,14 +76,17 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Has.Count.EqualTo(5));
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("COST"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Minus));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[4].Value, Is.EqualTo("PROFIT"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("COST"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Minus));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[4].Value, Is.EqualTo("PROFIT"));
});
}
[Test]
@@ -96,11 +105,14 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Is.Not.Empty);
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[0].Value, Is.EqualTo("SUM"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[1].Value, Is.EqualTo("TOTAL_AMOUNT"));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.FunctionEnd));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[0].Value, Is.EqualTo("SUM"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[1].Value, Is.EqualTo("TOTAL_AMOUNT"));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.FunctionEnd));
});
}
[Test]
@@ -119,14 +131,17 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Has.Count.EqualTo(5));
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("3_REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("4_COST"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Minus));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[4].Value, Is.EqualTo("5_PROFIT"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[0].Value, Is.EqualTo("3_REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("4_COST"));
Assert.That(tokens[3].Type, Is.EqualTo(TokenType.Minus));
Assert.That(tokens[4].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[4].Value, Is.EqualTo("5_PROFIT"));
});
}
[Test]
@@ -145,11 +160,14 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Has.Count.EqualTo(3));
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[0].Value, Is.EqualTo("123.45"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[2].Value, Is.EqualTo("67.89"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[0].Value, Is.EqualTo("123.45"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.Number));
Assert.That(tokens[2].Value, Is.EqualTo("67.89"));
});
}
[Test]
@@ -168,11 +186,14 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Has.Count.EqualTo(3));
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[0].Value, Is.EqualTo("REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[2].Value, Is.EqualTo("COST"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[0].Value, Is.EqualTo("REVENUE"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.Plus));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.String));
Assert.That(tokens[2].Value, Is.EqualTo("COST"));
});
}
[Test]
@@ -217,11 +238,14 @@ public class StatementReaderTests
// Assert
Assert.That(tokens, Is.Not.Empty);
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[0].Value, Is.EqualTo("SUM"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[1].Value, Is.EqualTo("AVG"));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("REVENUE"));
Assert.Multiple(() =>
{
Assert.That(tokens[0].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[0].Value, Is.EqualTo("SUM"));
Assert.That(tokens[1].Type, Is.EqualTo(TokenType.FunctionStart));
Assert.That(tokens[1].Value, Is.EqualTo("AVG"));
Assert.That(tokens[2].Type, Is.EqualTo(TokenType.ColumnIdentifier));
Assert.That(tokens[2].Value, Is.EqualTo("REVENUE"));
});
}
}