diff --git a/_CodeAnalysis.docx b/_CodeAnalysis.docx
index e6c1cc4..296fdd0 100644
Binary files a/_CodeAnalysis.docx and b/_CodeAnalysis.docx differ
diff --git a/src/NatsnudaLibrary/IRandom.cs b/src/NatsnudaLibrary/IRandom.cs
index 0e741cf..bd0a335 100644
--- a/src/NatsnudaLibrary/IRandom.cs
+++ b/src/NatsnudaLibrary/IRandom.cs
@@ -26,6 +26,10 @@ public interface IRandom
///
/// A 32-bit signed integer that is greater than or equal to 0 and less than
/// .
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Microsoft.Naming",
+ "CA1716:IdentifiersShouldNotMatchKeywords",
+ Justification = "Matching existing interface with reserved language keyword.")]
int Next();
///
@@ -35,6 +39,10 @@ public interface IRandom
///
/// A 32-bit signed integer that is greater than or equal to 0, and less than
/// .
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Microsoft.Naming",
+ "CA1716:IdentifiersShouldNotMatchKeywords",
+ Justification = "Matching existing interface with reserved language keyword.")]
int Next(int maxValue);
///
@@ -46,6 +54,10 @@ public interface IRandom
///
/// A 32-bit signed integer that is greater than or equal to
/// , and less than .
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Microsoft.Naming",
+ "CA1716:IdentifiersShouldNotMatchKeywords",
+ Justification = "Matching existing interface with reserved language keyword.")]
int Next(int minValue, int maxValue);
///
diff --git a/src/NatsnudaLibrary/NatsnudaLibrary.ruleset b/src/NatsnudaLibrary/NatsnudaLibrary.ruleset
index 2488a2f..a505f22 100644
--- a/src/NatsnudaLibrary/NatsnudaLibrary.ruleset
+++ b/src/NatsnudaLibrary/NatsnudaLibrary.ruleset
@@ -18,5 +18,6 @@
+
\ No newline at end of file
diff --git a/src/NatsnudaLibrary/SystemDateTimeProvider.cs b/src/NatsnudaLibrary/SystemDateTimeProvider.cs
index c30bf9a..cbc3e81 100644
--- a/src/NatsnudaLibrary/SystemDateTimeProvider.cs
+++ b/src/NatsnudaLibrary/SystemDateTimeProvider.cs
@@ -27,9 +27,17 @@ namespace Natsnudasoft.NatsnudaLibrary
public class SystemDateTimeProvider : IDateTimeProvider
{
///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Menees.Analyzers",
+ "MEN013:UseUTCTime",
+ Justification = "Matching existing implementation.")]
public DateTime Now => DateTime.Now;
///
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Menees.Analyzers",
+ "MEN013:UseUTCTime",
+ Justification = "Matching existing implementation.")]
public DateTime Today => DateTime.Today;
///
diff --git a/src/TestExtensions/EqualsOverrideTheoriesSuccessiveAssertion.cs b/src/TestExtensions/EqualsOverrideTheoriesSuccessiveAssertion.cs
index a4b7d75..3a8d38f 100644
--- a/src/TestExtensions/EqualsOverrideTheoriesSuccessiveAssertion.cs
+++ b/src/TestExtensions/EqualsOverrideTheoriesSuccessiveAssertion.cs
@@ -97,8 +97,7 @@ protected override void VerifyEqualsMethod(MethodInfo methodInfo)
methodInfo.ReflectedType.Name,
i));
}
- else if (methodInfo.GetParameters().Single().ParameterType
- .IsAssignableFrom(right.GetType()))
+ else if (methodInfo.GetParameters().Single().ParameterType.IsInstanceOfType(right))
{
var expectedResult = equalsOverrideTheory.ExpectedResult;
var resultsMatchExpected = Enumerable.Range(0, this.SuccessiveCount)
diff --git a/src/TestExtensions/ExceptionBehaviorExpectation.cs b/src/TestExtensions/ExceptionBehaviorExpectation.cs
index 6084495..06c0801 100644
--- a/src/TestExtensions/ExceptionBehaviorExpectation.cs
+++ b/src/TestExtensions/ExceptionBehaviorExpectation.cs
@@ -113,6 +113,10 @@ public class ExceptionBehaviorExpectation : IBehaviorExpectation
/// The command whose behaviour must be examined.
/// is
/// .
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Microsoft.Design",
+ "CA1031:DoNotCatchGeneralExceptionTypes",
+ Justification = "Exception is propagated by guard clause.")]
public void Verify(IGuardClauseCommand command)
{
ParameterValidation.IsNotNull(command, nameof(command));
diff --git a/src/TestExtensions/ParameterNullReferenceBehaviorExpectation.cs b/src/TestExtensions/ParameterNullReferenceBehaviorExpectation.cs
index 520ff38..ea7c104 100644
--- a/src/TestExtensions/ParameterNullReferenceBehaviorExpectation.cs
+++ b/src/TestExtensions/ParameterNullReferenceBehaviorExpectation.cs
@@ -71,6 +71,10 @@ public ParameterNullReferenceBehaviorExpectation(ISpecimenBuilder specimenBuilde
/// The command whose behaviour must be examined.
/// is
/// .
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Microsoft.Design",
+ "CA1031:DoNotCatchGeneralExceptionTypes",
+ Justification = "Exception is propagated by guard clause.")]
public void Verify(IGuardClauseCommand command)
{
ParameterValidation.IsNotNull(command, nameof(command));
diff --git a/src/TestExtensions/ParameterSpecimenBuilder.cs b/src/TestExtensions/ParameterSpecimenBuilder.cs
index 9ea706c..c41d74b 100644
--- a/src/TestExtensions/ParameterSpecimenBuilder.cs
+++ b/src/TestExtensions/ParameterSpecimenBuilder.cs
@@ -108,7 +108,7 @@ public object Create(object request, ISpecimenContext context)
var parameterInfo = request as ParameterInfo;
if (parameterInfo != null &&
parameterInfo.Member.DeclaringType == this.DeclaringType &&
- parameterInfo.ParameterType.IsAssignableFrom(this.SpecimenValue.GetType()) &&
+ parameterInfo.ParameterType.IsInstanceOfType(this.SpecimenValue) &&
parameterInfo.Name == this.ParameterName)
{
specimen = this.SpecimenValue;
diff --git a/src/TestExtensions/PropertyChangedRaisedException.cs b/src/TestExtensions/PropertyChangedRaisedException.cs
index 43846d4..b169d77 100644
--- a/src/TestExtensions/PropertyChangedRaisedException.cs
+++ b/src/TestExtensions/PropertyChangedRaisedException.cs
@@ -30,8 +30,13 @@ namespace Natsnudasoft.NatsnudaLibrary.TestExtensions
[Serializable]
public sealed class PropertyChangedRaisedException : Exception
{
+ private const string PropertyInfoTypeName = nameof(PropertyInfo) + "TypeName";
+ private const string PropertyInfoMemberName = nameof(PropertyInfo) + "MemberName";
private const string DefaultMessage = "A property did not raise the PropertyChanged event.";
+ [NonSerialized]
+ private readonly PropertyInfo propertyInfo;
+
///
/// Initializes a new instance of the class.
///
@@ -75,7 +80,7 @@ public PropertyChangedRaisedException(string message, Exception innerException)
public PropertyChangedRaisedException(PropertyInfo propertyInfo)
: base(CreateMessage(propertyInfo))
{
- this.PropertyInfo = propertyInfo;
+ this.propertyInfo = propertyInfo;
}
///
@@ -90,29 +95,35 @@ public PropertyChangedRaisedException(PropertyInfo propertyInfo)
Exception innerException)
: base(CreateMessage(propertyInfo), innerException)
{
- this.PropertyInfo = propertyInfo;
+ this.propertyInfo = propertyInfo;
}
[SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
private PropertyChangedRaisedException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
- this.PropertyInfo = (PropertyInfo)info
- .GetValue(nameof(this.PropertyInfo), typeof(PropertyInfo));
+ var typeName = info.GetString(PropertyInfoTypeName);
+ var memberName = info.GetString(PropertyInfoMemberName);
+ const BindingFlags bindingFlags = BindingFlags.Static |
+ BindingFlags.Instance |
+ BindingFlags.Public |
+ BindingFlags.NonPublic;
+ this.propertyInfo = Type.GetType(typeName).GetProperty(memberName, bindingFlags);
}
///
/// Gets the property information for the property that did correctly raise the
/// PropertyChanged event.
///
- public PropertyInfo PropertyInfo { get; }
+ public PropertyInfo PropertyInfo => this.propertyInfo;
///
[SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
- info.AddValue(nameof(this.PropertyInfo), this.PropertyInfo);
+ info.AddValue(PropertyInfoTypeName, this.PropertyInfo.DeclaringType.FullName);
+ info.AddValue(PropertyInfoMemberName, this.PropertyInfo.Name);
}
private static string CreateMessage(PropertyInfo propertyInfo)
diff --git a/src/TestExtensions/TestExtensions.ruleset b/src/TestExtensions/TestExtensions.ruleset
index 8572c08..9168ea3 100644
--- a/src/TestExtensions/TestExtensions.ruleset
+++ b/src/TestExtensions/TestExtensions.ruleset
@@ -18,5 +18,6 @@
+
\ No newline at end of file
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideAssertionTests.cs
index 19fbd0e..d09feb5 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideAssertionTests.cs
@@ -89,7 +89,7 @@ public void VerifyWithMethodThatIsNotEqualsMethodIsNotInvoked()
{
var sutMock = new Mock(new Mock().Object)
{
- CallBase = true
+ CallBase = true,
};
var sut = sutMock.Object;
@@ -105,7 +105,7 @@ public void VerifyWithMethodThatIsEqualsMethodIsInvoked()
{
var sutMock = new Mock(new Mock().Object)
{
- CallBase = true
+ CallBase = true,
};
var sut = sutMock.Object;
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNewObjectAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNewObjectAssertionTests.cs
index 47a3641..99c2a27 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNewObjectAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNewObjectAssertionTests.cs
@@ -64,7 +64,7 @@ public void VerifyEqualsMethodWithNonObjectParameterTypeDoesNotInvokeEquals()
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
@@ -97,7 +97,7 @@ public void VerifyEqualsMethodCorrectBehaviourInvokesEquals()
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNullAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNullAssertionTests.cs
index d4dd4cb..0aa848a 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNullAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideNullAssertionTests.cs
@@ -64,7 +64,7 @@ public void VerifyEqualsMethodWithNonNullableParameterTypeDoesNotInvokeEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
@@ -96,7 +96,7 @@ public void VerifyEqualsMethodCorrectBehaviourInvokesEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideOtherSuccessiveAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideOtherSuccessiveAssertionTests.cs
index 33aeb5f..ee64a38 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideOtherSuccessiveAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideOtherSuccessiveAssertionTests.cs
@@ -65,7 +65,7 @@ public void VerifyEqualsMethodWithObjectParameterTypeDoesNotInvokeEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
@@ -88,7 +88,7 @@ public void VerifyEqualsMethodViolatesEqualsSuccessiveContractThrows()
new EqualsOverrideAssertionVerifyHelper(
false,
false,
- () => equalsResultQueue.Dequeue())
+ () => equalsResultQueue.Dequeue()),
});
fixture.Register(() => verifyHelperQueue.Dequeue());
var sut = fixture.Create();
@@ -106,12 +106,12 @@ public void VerifyEqualsMethodCorrectBehaviourInvokesEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, false, true)
{
- CallBase = true
+ CallBase = true,
};
var verifyHelperQueue = new Queue(new[]
{
verifyHelperMock.Object,
- new EqualsOverrideAssertionVerifyHelper(false, false, true)
+ new EqualsOverrideAssertionVerifyHelper(false, false, true),
});
fixture.Register(() => verifyHelperQueue.Dequeue());
var sut = fixture.Create();
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideSelfAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideSelfAssertionTests.cs
index 662acb8..d9b11c5 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideSelfAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideSelfAssertionTests.cs
@@ -64,7 +64,7 @@ public void VerifyEqualsMethodViolatesEqualsSelfContractThrows()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, false, true)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
@@ -82,7 +82,7 @@ public void VerifyEqualsMethodCorrectBehaviourInvokesEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, true, true)
{
- CallBase = true
+ CallBase = true,
};
fixture.Inject(verifyHelperMock.Object);
var sut = fixture.Create();
diff --git a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideTheoriesSuccessiveAssertionTests.cs b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideTheoriesSuccessiveAssertionTests.cs
index 7ae0fa3..60308f6 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideTheoriesSuccessiveAssertionTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/EqualsOverrideTheoriesSuccessiveAssertionTests.cs
@@ -85,7 +85,7 @@ public void VerifyEqualsMethodWithTheoryWithRightThatCannotBeAssignedDoesNotInvo
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, true, false)
{
- CallBase = true
+ CallBase = true,
};
var equalsOverrideTheory = new EqualsOverrideTheory(
verifyHelperMock.Object,
@@ -131,12 +131,12 @@ public void VerifyEqualsMethodCorrectBehaviourInvokesEquals()
var fixture = new Fixture();
var verifyHelperMock = new Mock(false, false, true)
{
- CallBase = true
+ CallBase = true,
};
var verifyHelperQueue = new Queue(new[]
{
verifyHelperMock.Object,
- new EqualsOverrideAssertionVerifyHelper(false, false, true)
+ new EqualsOverrideAssertionVerifyHelper(false, false, true),
});
fixture.Register(() => verifyHelperQueue.Dequeue());
var equalsOverrideTheory = new EqualsOverrideTheory(
diff --git a/test/unit/NatsnudasoftTests/TestExtension/ExceptionBehaviorExpectationTests.cs b/test/unit/NatsnudasoftTests/TestExtension/ExceptionBehaviorExpectationTests.cs
index 2198b86..a7209ae 100644
--- a/test/unit/NatsnudasoftTests/TestExtension/ExceptionBehaviorExpectationTests.cs
+++ b/test/unit/NatsnudasoftTests/TestExtension/ExceptionBehaviorExpectationTests.cs
@@ -85,7 +85,7 @@ public void ConstructorEmptyValuesThrows()
var ex = Record.Exception(() => new ExceptionBehaviorExpectation(
new Mock().Object,
fixture.Create(),
- new object[] { }));
+ Array.Empty