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:
co-authored by
Claude Opus 4.7
parent
505ada5017
commit
67512d23e1
@@ -12,8 +12,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("42");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.That(((NumberLiteral)result).Value, Is.EqualTo(42m));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.That(((NumberLiteral)result).Value, Is.EqualTo(42m));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -21,8 +24,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("3.14");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.That(((NumberLiteral)result).Value, Is.EqualTo(3.14m));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.That(((NumberLiteral)result).Value, Is.EqualTo(3.14m));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -30,8 +36,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("\"hello world\"");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("hello world"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("hello world"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -39,8 +48,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("'test string'");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("test string"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("test string"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -48,8 +60,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("true");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Literal>());
|
||||
Assert.That(((Literal)result).Value, Is.EqualTo(true));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<Literal>());
|
||||
Assert.That(((Literal)result).Value, Is.EqualTo(true));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -57,8 +72,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("false");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Literal>());
|
||||
Assert.That(((Literal)result).Value, Is.EqualTo(false));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<Literal>());
|
||||
Assert.That(((Literal)result).Value, Is.EqualTo(false));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -72,8 +90,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Property>());
|
||||
var prop = (Property)result;
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("PropertyName"));
|
||||
Assert.That(prop.Expression, Is.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("PropertyName"));
|
||||
Assert.That(prop.Expression, Is.Null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -83,8 +104,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Property>());
|
||||
var prop = (Property)result;
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("Age"));
|
||||
Assert.That(prop.Expression, Is.InstanceOf<Parameter>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("Age"));
|
||||
Assert.That(prop.Expression, Is.InstanceOf<Parameter>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -94,8 +118,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Property>());
|
||||
var prop = (Property)result;
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("Department"));
|
||||
Assert.That(prop.Expression, Is.InstanceOf<Parameter>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(prop.PropertyName, Is.EqualTo("Department"));
|
||||
Assert.That(prop.Expression, Is.InstanceOf<Parameter>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -103,8 +130,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var result = Markdown.Parse("\\text{some text}");
|
||||
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("some text"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.InstanceOf<StringLiteral>());
|
||||
Assert.That(((StringLiteral)result).Value, Is.EqualTo("some text"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -118,8 +148,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Equal>());
|
||||
var equal = (Equal)result;
|
||||
Assert.That(equal.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(equal.Right, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(equal.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(equal.Right, Is.InstanceOf<NumberLiteral>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -129,8 +162,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<NotEqual>());
|
||||
var notEqual = (NotEqual)result;
|
||||
Assert.That(notEqual.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(notEqual.Right, Is.InstanceOf<StringLiteral>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(notEqual.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(notEqual.Right, Is.InstanceOf<StringLiteral>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -140,8 +176,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<NotEqual>());
|
||||
var notEqual = (NotEqual)result;
|
||||
Assert.That(notEqual.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(notEqual.Right, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(notEqual.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(notEqual.Right, Is.InstanceOf<NumberLiteral>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -151,8 +190,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<GreaterThan>());
|
||||
var greaterThan = (GreaterThan)result;
|
||||
Assert.That(greaterThan.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(greaterThan.Right, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(greaterThan.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(greaterThan.Right, Is.InstanceOf<NumberLiteral>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -162,8 +204,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<GreaterThan>());
|
||||
var greaterThan = (GreaterThan)result;
|
||||
Assert.That(greaterThan.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(greaterThan.Right, Is.InstanceOf<NumberLiteral>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(greaterThan.Left, Is.InstanceOf<Property>());
|
||||
Assert.That(greaterThan.Right, Is.InstanceOf<NumberLiteral>());
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -177,8 +222,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<And>());
|
||||
var and = (And)result;
|
||||
Assert.That(and.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(and.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -188,8 +236,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Or>());
|
||||
var or = (Or)result;
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -199,8 +250,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<And>());
|
||||
var and = (And)result;
|
||||
Assert.That(and.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(and.Right, Is.InstanceOf<GreaterThan>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(and.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(and.Right, Is.InstanceOf<GreaterThan>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -210,8 +264,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Or>());
|
||||
var or = (Or)result;
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -241,8 +298,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Or>());
|
||||
var or = (Or)result;
|
||||
Assert.That(or.Left, Is.InstanceOf<And>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(or.Left, Is.InstanceOf<And>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -252,8 +312,11 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<And>());
|
||||
var and = (And)result;
|
||||
Assert.That(and.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(and.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -263,12 +326,18 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<And>());
|
||||
var and = (And)result;
|
||||
Assert.That(and.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Or>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(and.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(and.Right, Is.InstanceOf<Or>());
|
||||
});
|
||||
|
||||
var or = (Or)and.Right;
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(or.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(or.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -332,8 +401,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var success = Markdown.TryParse("x.Age = 25", out var expression);
|
||||
|
||||
Assert.That(success, Is.True);
|
||||
Assert.That(expression, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(success, Is.True);
|
||||
Assert.That(expression, Is.Not.Null);
|
||||
});
|
||||
Assert.That(expression, Is.InstanceOf<Equal>());
|
||||
}
|
||||
|
||||
@@ -342,8 +414,11 @@ public class MarkdownParserTests
|
||||
{
|
||||
var success = Markdown.TryParse("@#$%", out var expression);
|
||||
|
||||
Assert.That(success, Is.False);
|
||||
Assert.That(expression, Is.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(success, Is.False);
|
||||
Assert.That(expression, Is.Null);
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -364,10 +439,13 @@ public class MarkdownParserTests
|
||||
var greaterThan = (GreaterThan)and.Left;
|
||||
Assert.That(greaterThan.Left, Is.InstanceOf<Property>());
|
||||
var userAge = (Property)greaterThan.Left;
|
||||
Assert.That(userAge.PropertyName, Is.EqualTo("Age"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(userAge.PropertyName, Is.EqualTo("Age"));
|
||||
|
||||
// Right side: user.Status = "active"
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
// Right side: user.Status = "active"
|
||||
Assert.That(and.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
var equal = (Equal)and.Right;
|
||||
Assert.That(equal.Left, Is.InstanceOf<Property>());
|
||||
var userStatus = (Property)equal.Left;
|
||||
@@ -387,18 +465,27 @@ public class MarkdownParserTests
|
||||
|
||||
Assert.That(result, Is.InstanceOf<Or>());
|
||||
var or = (Or)result;
|
||||
Assert.That(or.Left, Is.InstanceOf<And>());
|
||||
Assert.That(or.Right, Is.InstanceOf<And>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(or.Left, Is.InstanceOf<And>());
|
||||
Assert.That(or.Right, Is.InstanceOf<And>());
|
||||
});
|
||||
|
||||
// Left AND: TotalCharges > 1000 AND Status = 'pending'
|
||||
var leftAnd = (And)or.Left;
|
||||
Assert.That(leftAnd.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(leftAnd.Right, Is.InstanceOf<Equal>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(leftAnd.Left, Is.InstanceOf<GreaterThan>());
|
||||
Assert.That(leftAnd.Right, Is.InstanceOf<Equal>());
|
||||
});
|
||||
|
||||
// Right AND: Priority = 'urgent' AND ApprovedBy != ''
|
||||
var rightAnd = (And)or.Right;
|
||||
Assert.That(rightAnd.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(rightAnd.Right, Is.InstanceOf<NotEqual>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(rightAnd.Left, Is.InstanceOf<Equal>());
|
||||
Assert.That(rightAnd.Right, Is.InstanceOf<NotEqual>());
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -609,9 +609,12 @@ public class RuleEngineTests
|
||||
var result1 = await engine.RunRules(ruleSet1, input);
|
||||
var result2 = await engine.RunRules(ruleSet2, input);
|
||||
|
||||
// Assert
|
||||
Assert.That(result1, Is.False, "First rule set should fail");
|
||||
Assert.That(result2, Is.True, "Second rule set should pass");
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(result1, Is.False, "First rule set should fail");
|
||||
Assert.That(result2, Is.True, "Second rule set should pass");
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user