Skip to content

Commit

Permalink
UTs: Automatic parameter comma in SETestContext (#7173)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavel-mikula-sonarsource committed May 4, 2023
1 parent 8bf4ef7 commit b529eb3
Show file tree
Hide file tree
Showing 15 changed files with 171 additions and 169 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ public void Binary_BoolOperands_And()
else
Tag("False && True");
""";
SETestContext.CreateCS(code, ", bool arg").Validator.ValidateTagOrder(
SETestContext.CreateCS(code, "bool arg").Validator.ValidateTagOrder(
"True & True",
"False & True",
"False & False",
Expand Down Expand Up @@ -248,7 +248,7 @@ public void Binary_BoolOperands_Or()
else
Tag("False || True Unreachable");
""";
SETestContext.CreateCS(code, ", bool arg").Validator.ValidateTagOrder(
SETestContext.CreateCS(code, "bool arg").Validator.ValidateTagOrder(
"True | True",
"False | True",
"False | False",
Expand Down Expand Up @@ -350,7 +350,7 @@ public void Binary_UnexpectedOperator_VisitsBothBranches()
}}
Tag(""End"");";
var check = new PostProcessTestCheck(OperationKind.ParameterReference, x => x.SetOperationConstraint(BoolConstraint.True));
SETestContext.CreateCS(code, ", int a, int b", check).Validator.ValidateTagOrder(
SETestContext.CreateCS(code, "int a, int b", check).Validator.ValidateTagOrder(
"If",
"Else",
"End");
Expand Down Expand Up @@ -396,7 +396,7 @@ public void BinaryEqualsNull_SetsBoolConstraint_Unknown_ComparedToNull_CS(string
object nullValue = null;
var value = {expression};
Tag(""End"");";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2)
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "value") && state.SymbolsWith(ObjectConstraint.Null).Any(x => x.Name == "arg"))
Expand All @@ -410,7 +410,7 @@ public void BinaryEqualsNull_SetsBoolConstraint_Unknown_ComparedToNotNull_CS()
object notNullValue = new object();
var value = arg == notNullValue;
Tag(""End"");";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2) // When False, we can't tell what constraints "args" have
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "value") && state.SymbolsWith(ObjectConstraint.NotNull).Any(x => x.Name == "arg"))
Expand Down Expand Up @@ -447,7 +447,7 @@ public void BinaryEqualsNull_SetsBoolConstraint_Unknown_ComparedToNull_VB(string
var code = @$"
Dim Value = {expression}
Tag(""End"")";
var validator = SETestContext.CreateVB(code, ", Arg As Object").Validator;
var validator = SETestContext.CreateVB(code, "Arg As Object").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2)
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "Value") && state.SymbolsWith(ObjectConstraint.Null).Any(x => x.Name == "Arg"))
Expand Down Expand Up @@ -495,7 +495,7 @@ public void BinaryNotEqualsNull_SetsBoolConstraint_ComparedToNull_CS(string expr
object nullValue = null;
var value = {expression};
Tag(""End"");";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2)
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "value") && state.SymbolsWith(ObjectConstraint.NotNull).Any(x => x.Name == "arg"))
Expand All @@ -509,7 +509,7 @@ public void BinaryNotEqualsNull_SetsBoolConstraint_ComparedToNotNull_CS()
object notNullValue = new object();
var value = arg != notNullValue;
Tag(""End"");";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2) // When True, we can't tell what constraints "args" have
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "value") && state.SymbolsWith(ObjectConstraint.NotNull).All(x => x.Name != "arg"))
Expand Down Expand Up @@ -546,7 +546,7 @@ public void BinaryNotEqualsNull_SetsBoolConstraint_Unknown_ComparedToNull_VB(str
var code = @$"
Dim Value = {expression}
Tag(""End"")";
var validator = SETestContext.CreateVB(code, ", Arg As Object").Validator;
var validator = SETestContext.CreateVB(code, "Arg As Object").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.TagStates("End").Should().HaveCount(2)
.And.ContainSingle(state => state.SymbolsWith(BoolConstraint.True).Any(x => x.Name == "Value") && state.SymbolsWith(ObjectConstraint.NotNull).Any(x => x.Name == "Arg"))
Expand Down Expand Up @@ -588,7 +588,7 @@ public void Binary_NullableRelationalNull_SetsBoolConstraint_CS(string expressio
Tag("End");
""";

var validator = SETestContext.CreateCS(code, ", int? arg").Validator;
var validator = SETestContext.CreateCS(code, "int? arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.ValidateTagOrder("Value", "Else", "End");
}
Expand Down Expand Up @@ -620,7 +620,7 @@ public void Binary_NullableRelationalNonNull_SetsObjectConstraint_CS(string expr
}
""";

var validator = SETestContext.CreateCS(code, ", int? arg").Validator;
var validator = SETestContext.CreateCS(code, "int? arg").Validator;
validator.ValidateContainsOperation(OperationKind.Binary);
validator.ValidateTag("If", x => x.Should().HaveOnlyConstraint(ObjectConstraint.NotNull, "arg comparison true, hence non-null"));
validator.ValidateTag("Else", x => x.Should().HaveNoConstraints("arg either null or comparison false"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void Branching_ConversionAndOtherUnaryOperators_DoNotLearnConstraints(str
{{
Tag(""Arg"", arg);
}}";
var validator = SETestContext.CreateCS(code, ", int arg").Validator;
var validator = SETestContext.CreateCS(code, "int arg").Validator;
validator.ValidateContainsOperation(OperationKind.Unary);
validator.ValidateTag("Arg", x => x.Should().HaveOnlyConstraints(ObjectConstraint.NotNull));
}
Expand All @@ -115,7 +115,7 @@ public void Branching_BoolOperation_LearnsBoolConstraint()
var check = new ConditionEvaluatedTestCheck(x => x.State[x.Operation].HasConstraint(BoolConstraint.True)
? x.SetSymbolConstraint(x.Operation.Instance.AsPropertyReference().Value.Instance.TrackedSymbol(), DummyConstraint.Dummy)
: x.State);
var validator = SETestContext.CreateCS(code, ", ICollection<object> collection", check).Validator;
var validator = SETestContext.CreateCS(code, "ICollection<object> collection", check).Validator;
validator.ValidateTag("If", x => x.Should().HaveOnlyConstraints(DummyConstraint.Dummy, ObjectConstraint.NotNull));
validator.TagStates("End").Should().HaveCount(2);
}
Expand Down Expand Up @@ -854,7 +854,7 @@ public void Branching_LearnsObjectConstraint_FlowCapture()
break;
}
Tag(""End"", arg);";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.FlowCaptureReference);
validator.ValidateTag("Null", x => x.Should().HaveOnlyConstraint(ObjectConstraint.Null));
validator.ValidateTag("Default", x => x.Should().HaveOnlyConstraint(ObjectConstraint.NotNull));
Expand All @@ -869,7 +869,7 @@ public void Branching_LearnsObjectConstraint_IsNull()
var code = @"
arg?.ToString();
Tag(""End"", arg);";
var validator = SETestContext.CreateCS(code, ", object arg").Validator;
var validator = SETestContext.CreateCS(code, "object arg").Validator;
validator.ValidateContainsOperation(OperationKind.IsNull);
validator.Validate("Invocation: .ToString()", x => x.State.SymbolsWith(ObjectConstraint.NotNull).Should().ContainSingle());
validator.TagValues("End").Should().HaveCount(2)
Expand Down Expand Up @@ -949,7 +949,7 @@ public void Branching_LearnIsNullSurvivesLambdaCapture()
Func<string> someFunc = () => s.ToString();

Tag("End", s);
""", ", string s").Validator;
""", "string s").Validator;
validator.ValidateTag("End", x => x.Should().HaveNoConstraints()); // Should have NotNull constraint
}

Expand Down Expand Up @@ -986,7 +986,7 @@ private static ValidatorTestCheck CreateIfElseEndValidatorVB(string expression,
Tag(""Else"", Arg)
End If
Tag(""End"", Arg)";
var validator = SETestContext.CreateVB(code, $", Arg As {argType}").Validator;
var validator = SETestContext.CreateVB(code, $"Arg As {argType}").Validator;
validator.ValidateContainsOperation(expectedOperation);
return validator;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ public void Branching_IsNullOrEmpty_SetsNullConstraintsInBranches(string methodN
Tag(""Else"", arg);
}}
Tag(""End"", arg);";
var validator = SETestContext.CreateCS(code, ", string arg").Validator;
var validator = SETestContext.CreateCS(code, "string arg").Validator;
validator.TagValues("If").Should().HaveCount(2)
.And.ContainSingle(x => x.HasConstraint(ObjectConstraint.Null))
.And.ContainSingle(x => x.HasConstraint(ObjectConstraint.NotNull));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void ExceptionCandidate_ArrayElementReference()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", char[] c").Validator;
var validator = SETestContext.CreateCS(code, "char[] c").Validator;
validator.ValidateContainsOperation(OperationKindEx.ArrayElementReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().HaveCount(1).And.ContainSingle(x => HasExceptionOfType(x, "IndexOutOfRangeException"));
Expand All @@ -64,7 +64,7 @@ public void ExceptionCandidate_ObjectCreation()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", char[] c").Validator;
var validator = SETestContext.CreateCS(code, "char[] c").Validator;
validator.ValidateContainsOperation(OperationKindEx.ObjectCreation);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasUnknownException(x));
Expand All @@ -86,7 +86,7 @@ public void ExceptionCandidate_ConversionOperation_Explicit_Narrowing()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", long p").Validator;
var validator = SETestContext.CreateCS(code, "long p").Validator;
validator.ValidateContainsOperation(OperationKindEx.Conversion);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "InvalidCastException"));
Expand All @@ -108,7 +108,7 @@ public void ExceptionCandidate_ConversionOperation_Explicit_Widening()
tag = ""UnreachableCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", Person p").Validator;
var validator = SETestContext.CreateCS(code, "Person p").Validator;
validator.ValidateContainsOperation(OperationKindEx.Conversion);
validator.ValidateTagOrder("BeforeTry", "InTry", "AfterCatch");
validator.ValidateHasSingleExitStateAndNoException();
Expand All @@ -129,7 +129,7 @@ public void ExceptionCandidate_ConversionOperation_Implicit()
tag = ""UnreachableCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", int p").Validator;
var validator = SETestContext.CreateCS(code, "int p").Validator;
validator.ValidateContainsOperation(OperationKindEx.Conversion);
validator.ValidateTagOrder("BeforeTry", "InTry", "AfterCatch");
validator.TagStates("AfterCatch").Should().ContainSingle(x => HasNoException(x));
Expand All @@ -150,7 +150,7 @@ public void ExceptionCandidate_DynamicIndexerAccess()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", dynamic arg").Validator;
var validator = SETestContext.CreateCS(code, "dynamic arg").Validator;
validator.ValidateContainsOperation(OperationKindEx.DynamicIndexerAccess);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "IndexOutOfRangeException"));
Expand All @@ -172,7 +172,7 @@ public void ExceptionCandidate_DynamicInvocation()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", dynamic arg").Validator;
var validator = SETestContext.CreateCS(code, "dynamic arg").Validator;
validator.ValidateContainsOperation(OperationKindEx.DynamicInvocation);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasUnknownException(x));
Expand All @@ -194,7 +194,7 @@ public void ExceptionCandidate_DynamicMemberReference()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", dynamic arg").Validator;
var validator = SETestContext.CreateCS(code, "dynamic arg").Validator;
validator.ValidateContainsOperation(OperationKindEx.DynamicMemberReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasUnknownException(x));
Expand All @@ -216,7 +216,7 @@ public void ExceptionCandidate_DynamicObjectCreation()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", dynamic d").Validator;
var validator = SETestContext.CreateCS(code, "dynamic d").Validator;
validator.ValidateContainsOperation(OperationKindEx.DynamicObjectCreation);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasUnknownException(x));
Expand All @@ -238,7 +238,7 @@ public void ExceptionCandidate_EventReference_Instance()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", Person p").Validator;
var validator = SETestContext.CreateCS(code, "Person p").Validator;
validator.ValidateContainsOperation(OperationKindEx.EventReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "NullReferenceException"));
Expand Down Expand Up @@ -283,7 +283,7 @@ public void ExceptionCandidate_EventReference_This(string eventReference)
tag = ""UnreachableCatch"";
}}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", Person p").Validator;
var validator = SETestContext.CreateCS(code, "Person p").Validator;
validator.ValidateContainsOperation(OperationKindEx.EventReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "AfterCatch");
validator.ValidateHasSingleExitStateAndNoException();
Expand All @@ -304,7 +304,7 @@ public void ExceptionCandidate_FieldReference_Instance()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", Person p").Validator;
var validator = SETestContext.CreateCS(code, "Person p").Validator;
validator.ValidateContainsOperation(OperationKindEx.FieldReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "NullReferenceException"));
Expand Down Expand Up @@ -372,7 +372,7 @@ public void ExceptionCandidate_ForEachLoop()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", IEnumerable<string> collection").Validator;
var validator = SETestContext.CreateCS(code, "IEnumerable<string> collection").Validator;
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch", "InCatch", "InCatch", "InCatch", "AfterCatch", "AfterCatch", "InCatch");
// IForEachLoopOperation is not generated. It doesn't seem to be used.
// In the case of foreach, there are implicit method calls that in the current implementation can throw:
Expand Down Expand Up @@ -402,7 +402,7 @@ public void ExceptionCandidate_FunctionPointerInvocation()
tag = ""AfterCatch"";";

// IFunctionPointerInvocationOperation is not generated. It doesn't seem used.
var validator = SETestContext.CreateCS(code, ", delegate*<string, void> ptr").Validator;
var validator = SETestContext.CreateCS(code, "delegate*<string, void> ptr").Validator;

validator.ValidateTagOrder("BeforeTry", "InTry", "AfterCatch");
validator.ValidateHasSingleExitStateAndNoException();
Expand All @@ -424,7 +424,7 @@ public void ExceptionCandidate_PropertyReference()
}
tag = ""AfterCatch"";";

var validator = SETestContext.CreateCS(code, ", string arg").Validator;
var validator = SETestContext.CreateCS(code, "string arg").Validator;
validator.ValidateContainsOperation(OperationKindEx.PropertyReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "NullReferenceException"));
Expand Down Expand Up @@ -493,7 +493,7 @@ public void ExceptionCandidate_MethodReference()
}
tag = ""AfterCatch"";";

var validator = SETestContext.CreateCS(code, ", Person p").Validator;
var validator = SETestContext.CreateCS(code, "Person p").Validator;
validator.ValidateContainsOperation(OperationKindEx.MethodReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "NullReferenceException"));
Expand Down Expand Up @@ -588,7 +588,7 @@ public void ExceptionCandidate_Index_Array()
}
tag = ""AfterCatch"";";

var validator = SETestContext.CreateCS(code, ", int[] array").Validator;
var validator = SETestContext.CreateCS(code, "int[] array").Validator;
validator.ValidateContainsOperation(OperationKindEx.MethodReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "IndexOutOfRangeException"));
Expand Down Expand Up @@ -643,7 +643,7 @@ public void ExceptionCandidate_Range_Array()
}
tag = ""AfterCatch"";";

var validator = SETestContext.CreateCS(code, ", int[] array").Validator;
var validator = SETestContext.CreateCS(code, "int[] array").Validator;
validator.ValidateContainsOperation(OperationKindEx.MethodReference);
validator.ValidateTagOrder("BeforeTry", "InTry", "InCatch", "AfterCatch");
validator.TagStates("InCatch").Should().ContainSingle(x => HasExceptionOfType(x, "ArgumentOutOfRangeException"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public void Exception_ParameterReference()
tag = ""InCatch"";
}
tag = ""AfterCatch"";";
var validator = SETestContext.CreateCS(code, ", NotImplementedException ex").Validator;
var validator = SETestContext.CreateCS(code, "NotImplementedException ex").Validator;
validator.ValidateTagOrder(
"BeforeTry",
"InTry",
Expand Down
Loading

0 comments on commit b529eb3

Please sign in to comment.