diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EmptyWithMessageException.cs b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EmptyWithMessageException.cs deleted file mode 100644 index d91b9519d..000000000 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EmptyWithMessageException.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections; -using Xunit.Sdk; - -namespace Microsoft.CodeAnalysis.Testing.Verifiers -{ - public class EmptyWithMessageException : EmptyException - { - public EmptyWithMessageException(IEnumerable collection, string userMessage) - : base(collection) - { - UserMessage = userMessage; - } - - public override string Message - { - get - { - if (string.IsNullOrEmpty(UserMessage)) - { - return base.Message; - } - - return UserMessage + Environment.NewLine + base.Message; - } - } - } -} diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EqualWithMessageException.cs b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EqualWithMessageException.cs deleted file mode 100644 index 3a14e78ed..000000000 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/EqualWithMessageException.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Xunit.Sdk; - -namespace Microsoft.CodeAnalysis.Testing.Verifiers -{ - public class EqualWithMessageException : EqualException - { - public EqualWithMessageException(object? expected, object? actual, string userMessage) - : base(expected, actual) - { - UserMessage = userMessage; - } - - public EqualWithMessageException(string? expected, string? actual, int expectedIndex, int actualIndex, string userMessage) - : base(expected, actual, expectedIndex, actualIndex) - { - UserMessage = userMessage; - } - - public override string Message - { - get - { - if (string.IsNullOrEmpty(UserMessage)) - { - return base.Message; - } - - return UserMessage + Environment.NewLine + base.Message; - } - } - } -} diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.csproj b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.csproj index 2947cb5d1..e9eab7295 100644 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.csproj +++ b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.csproj @@ -13,10 +13,6 @@ Roslyn Test Verifiers for xUnit - - - - diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/NotEmptyWithMessageException.cs b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/NotEmptyWithMessageException.cs deleted file mode 100644 index 9204a8b22..000000000 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/NotEmptyWithMessageException.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Xunit.Sdk; - -namespace Microsoft.CodeAnalysis.Testing.Verifiers -{ - public class NotEmptyWithMessageException : NotEmptyException - { - public NotEmptyWithMessageException(string userMessage) - { - UserMessage = userMessage; - } - - public override string Message - { - get - { - if (string.IsNullOrEmpty(UserMessage)) - { - return base.Message; - } - - return UserMessage + Environment.NewLine + base.Message; - } - } - } -} diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/PublicAPI.Unshipped.txt b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/PublicAPI.Unshipped.txt index 2745b0193..3b935e8fd 100644 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/PublicAPI.Unshipped.txt +++ b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/PublicAPI.Unshipped.txt @@ -1,10 +1,3 @@ -Microsoft.CodeAnalysis.Testing.Verifiers.EmptyWithMessageException -Microsoft.CodeAnalysis.Testing.Verifiers.EmptyWithMessageException.EmptyWithMessageException(System.Collections.IEnumerable collection, string userMessage) -> void -Microsoft.CodeAnalysis.Testing.Verifiers.EqualWithMessageException -Microsoft.CodeAnalysis.Testing.Verifiers.EqualWithMessageException.EqualWithMessageException(object expected, object actual, string userMessage) -> void -Microsoft.CodeAnalysis.Testing.Verifiers.EqualWithMessageException.EqualWithMessageException(string expected, string actual, int expectedIndex, int actualIndex, string userMessage) -> void -Microsoft.CodeAnalysis.Testing.Verifiers.NotEmptyWithMessageException -Microsoft.CodeAnalysis.Testing.Verifiers.NotEmptyWithMessageException.NotEmptyWithMessageException(string userMessage) -> void Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.Context.get -> System.Collections.Immutable.ImmutableStack Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.XUnitVerifier() -> void @@ -19,6 +12,3 @@ virtual Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.NotEmpty(strin virtual Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.PushContext(string context) -> Microsoft.CodeAnalysis.Testing.IVerifier virtual Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.SequenceEqual(System.Collections.Generic.IEnumerable expected, System.Collections.Generic.IEnumerable actual, System.Collections.Generic.IEqualityComparer equalityComparer = null, string message = null) -> void virtual Microsoft.CodeAnalysis.Testing.Verifiers.XUnitVerifier.True(bool assert, string message = null) -> void -override Microsoft.CodeAnalysis.Testing.Verifiers.EmptyWithMessageException.Message.get -> string -override Microsoft.CodeAnalysis.Testing.Verifiers.EqualWithMessageException.Message.get -> string -override Microsoft.CodeAnalysis.Testing.Verifiers.NotEmptyWithMessageException.Message.get -> string diff --git a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/XUnitVerifier.cs b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/XUnitVerifier.cs index 76279fbd4..64aa7068b 100644 --- a/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/XUnitVerifier.cs +++ b/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit/XUnitVerifier.cs @@ -7,119 +7,73 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using System.Linq; -using Xunit; namespace Microsoft.CodeAnalysis.Testing.Verifiers { public class XUnitVerifier : IVerifier { + private readonly DefaultVerifier _defaultVerifer; + public XUnitVerifier() - : this(ImmutableStack.Empty) + : this(ImmutableStack.Empty, new DefaultVerifier()) { } protected XUnitVerifier(ImmutableStack context) { Context = context ?? throw new ArgumentNullException(nameof(context)); - } - - protected ImmutableStack Context { get; } - public virtual void Empty(string collectionName, IEnumerable collection) - { - using (var enumerator = collection.GetEnumerator()) + // Construct an equivalent DefaultVerifier from the provided context + var defaultVerifier = new DefaultVerifier(); + foreach (var frame in context.Reverse()) { - if (enumerator.MoveNext()) - { - throw new EmptyWithMessageException(collection, CreateMessage($"'{collectionName}' is not empty")); - } + defaultVerifier = (DefaultVerifier)defaultVerifier.PushContext(frame); } + + _defaultVerifer = defaultVerifier; } - public virtual void Equal(T expected, T actual, string? message = null) + private XUnitVerifier(ImmutableStack context, DefaultVerifier defaultVerifier) { - if (message is null && Context.IsEmpty) - { - Assert.Equal(expected, actual); - } - else - { - if (!EqualityComparer.Default.Equals(expected, actual)) - { - throw new EqualWithMessageException(expected, actual, CreateMessage(message)); - } - } + Context = context; + _defaultVerifer = defaultVerifier; } + protected ImmutableStack Context { get; } + + public virtual void Empty(string collectionName, IEnumerable collection) + => _defaultVerifer.Empty(collectionName, collection); + + public virtual void Equal(T expected, T actual, string? message = null) + => _defaultVerifer.Equal(expected, actual, message); + public virtual void True([DoesNotReturnIf(false)] bool assert, string? message = null) - { - if (message is null && Context.IsEmpty) - { - Assert.True(assert); - } - else - { - Assert.True(assert, CreateMessage(message)); - } - } + => _defaultVerifer.True(assert, message); public virtual void False([DoesNotReturnIf(true)] bool assert, string? message = null) - { - if (message is null && Context.IsEmpty) - { - Assert.False(assert); - } - else - { - Assert.False(assert, CreateMessage(message)); - } - } + => _defaultVerifer.False(assert, message); [DoesNotReturn] public virtual void Fail(string? message = null) - { - if (message is null && Context.IsEmpty) - { - Assert.True(false); - } - else - { - Assert.True(false, CreateMessage(message)); - } - - throw ExceptionUtilities.Unreachable; - } + => _defaultVerifer.Fail(message); public virtual void LanguageIsSupported(string language) - { - Assert.False(language != LanguageNames.CSharp && language != LanguageNames.VisualBasic, CreateMessage($"Unsupported Language: '{language}'")); - } + => _defaultVerifer.LanguageIsSupported(language); public virtual void NotEmpty(string collectionName, IEnumerable collection) - { - using (var enumerator = collection.GetEnumerator()) - { - if (!enumerator.MoveNext()) - { - throw new NotEmptyWithMessageException(CreateMessage($"'{collectionName}' is empty")); - } - } - } + => _defaultVerifer.NotEmpty(collectionName, collection); public virtual void SequenceEqual(IEnumerable expected, IEnumerable actual, IEqualityComparer? equalityComparer = null, string? message = null) + => _defaultVerifer.SequenceEqual(expected, actual, equalityComparer, message); + + public virtual IVerifier PushContext(string context) { - var comparer = new SequenceEqualEnumerableEqualityComparer(equalityComparer); - var areEqual = comparer.Equals(expected, actual); - if (!areEqual) + if (GetType() != typeof(XUnitVerifier)) { - throw new EqualWithMessageException(expected, actual, CreateMessage(message)); + throw new InvalidOperationException($"'{nameof(PushContext)}' must be overridden to support types derived from '{typeof(XUnitVerifier)}'"); } - } - public virtual IVerifier PushContext(string context) - { - Assert.IsType(this); - return new XUnitVerifier(Context.Push(context)); + return new XUnitVerifier(Context.Push(context), (DefaultVerifier)_defaultVerifer.PushContext(context)); } protected virtual string CreateMessage(string? message) @@ -131,41 +85,5 @@ protected virtual string CreateMessage(string? message) return message ?? string.Empty; } - - private sealed class SequenceEqualEnumerableEqualityComparer : IEqualityComparer?> - { - private readonly IEqualityComparer _itemEqualityComparer; - - public SequenceEqualEnumerableEqualityComparer(IEqualityComparer? itemEqualityComparer) - { - _itemEqualityComparer = itemEqualityComparer ?? EqualityComparer.Default; - } - - public bool Equals(IEnumerable? x, IEnumerable? y) - { - if (ReferenceEquals(x, y)) { return true; } - if (x is null || y is null) { return false; } - - return x.SequenceEqual(y, _itemEqualityComparer); - } - - public int GetHashCode(IEnumerable? obj) - { - if (obj is null) - { - return 0; - } - - // From System.Tuple - // - // The suppression is required due to an invalid contract in IEqualityComparer - // https://github.com/dotnet/runtime/issues/30998 - return obj - .Select(item => _itemEqualityComparer.GetHashCode(item!)) - .Aggregate( - 0, - (aggHash, nextHash) => ((aggHash << 5) + aggHash) ^ nextHash); - } - } } } diff --git a/tests/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.UnitTests/XUnitVerifierTests.cs b/tests/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.UnitTests/XUnitVerifierTests.cs index 849e62c68..60a95f725 100644 --- a/tests/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.UnitTests/XUnitVerifierTests.cs +++ b/tests/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Testing.Verifiers.XUnit.UnitTests/XUnitVerifierTests.cs @@ -15,8 +15,8 @@ public void TestEmptyMessage() { var actual = new int[1]; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.Empty("someCollectionName", actual)); - Assert.Equal($"'someCollectionName' is not empty{Environment.NewLine}Assert.Empty() Failure{Environment.NewLine}Expected: {Environment.NewLine}Actual: [0]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Empty("someCollectionName", actual)); + Assert.Equal($"'someCollectionName' is not empty", exception.Message); } [Fact] @@ -24,8 +24,8 @@ public void TestEmptyMessageWithContext() { var actual = new int[1]; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.Empty("someCollectionName", actual)); - Assert.Equal($"Context: Known Context{Environment.NewLine}'someCollectionName' is not empty{Environment.NewLine}Assert.Empty() Failure{Environment.NewLine}Expected: {Environment.NewLine}Actual: [0]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Empty("someCollectionName", actual)); + Assert.Equal($"Context: Known Context{Environment.NewLine}'someCollectionName' is not empty", exception.Message); } [Fact] @@ -34,10 +34,8 @@ public void TestEqualMessage() var expected = 0; var actual = 1; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual)); - Assert.Equal(expected.ToString(), exception.Expected); - Assert.Equal(actual.ToString(), exception.Actual); - Assert.Equal($"Assert.Equal() Failure{Environment.NewLine}Expected: 0{Environment.NewLine}Actual: 1", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual)); + Assert.Equal($"items not equal. expected:'0' actual:'1'", exception.Message); } [Fact] @@ -46,10 +44,8 @@ public void TestEqualMessageWithContext() var expected = 0; var actual = 1; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual)); - Assert.Equal(expected.ToString(), exception.Expected); - Assert.Equal(actual.ToString(), exception.Actual); - Assert.Equal($"Context: Known Context{Environment.NewLine}{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: 0{Environment.NewLine}Actual: 1", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual)); + Assert.Equal($"Context: Known Context{Environment.NewLine}items not equal. expected:'0' actual:'1'", exception.Message); } [Fact] @@ -58,10 +54,8 @@ public void TestEqualCustomMessage() var expected = 0; var actual = 1; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual, "Custom message")); - Assert.Equal(expected.ToString(), exception.Expected); - Assert.Equal(actual.ToString(), exception.Actual); - Assert.Equal($"Custom message{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: 0{Environment.NewLine}Actual: 1", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual, "Custom message")); + Assert.Equal($"Custom message", exception.Message); } [Fact] @@ -70,122 +64,120 @@ public void TestEqualCustomMessageWithContext() var expected = 0; var actual = 1; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual, "Custom message")); - Assert.Equal(expected.ToString(), exception.Expected); - Assert.Equal(actual.ToString(), exception.Actual); - Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: 0{Environment.NewLine}Actual: 1", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Equal(expected, actual, "Custom message")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message", exception.Message); } [Fact] public void TestTrueMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.True(false)); - Assert.Equal($"Assert.True() Failure{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.True(false)); + Assert.Equal($"Expected value to be 'true' but was 'false'", exception.Message); } [Fact] public void TestTrueMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.True(false)); - Assert.Equal($"Context: Known Context{Environment.NewLine}{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.True(false)); + Assert.Equal($"Context: Known Context{Environment.NewLine}Expected value to be 'true' but was 'false'", exception.Message); } [Fact] public void TestTrueCustomMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.True(false, "Custom message")); - Assert.Equal($"Custom message{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.True(false, "Custom message")); + Assert.Equal($"Custom message", exception.Message); } [Fact] public void TestTrueCustomMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.True(false, "Custom message")); - Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.True(false, "Custom message")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message", exception.Message); } [Fact] public void TestFalseMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.False(true)); - Assert.Equal($"Assert.False() Failure{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.False(true)); + Assert.Equal($"Expected value to be 'false' but was 'true'", exception.Message); } [Fact] public void TestFalseMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.False(true)); - Assert.Equal($"Context: Known Context{Environment.NewLine}{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.False(true)); + Assert.Equal($"Context: Known Context{Environment.NewLine}Expected value to be 'false' but was 'true'", exception.Message); } [Fact] public void TestFalseCustomMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.False(true, "Custom message")); - Assert.Equal($"Custom message{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.False(true, "Custom message")); + Assert.Equal($"Custom message", exception.Message); } [Fact] public void TestFalseCustomMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.False(true, "Custom message")); - Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.False(true, "Custom message")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message", exception.Message); } [Fact] public void TestFailMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.Fail()); - Assert.Equal($"Assert.True() Failure{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Fail()); + Assert.Equal($"Verification failed for an unspecified reason.", exception.Message); } [Fact] public void TestFailMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.Fail()); - Assert.Equal($"Context: Known Context{Environment.NewLine}{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Fail()); + Assert.Equal($"Context: Known Context{Environment.NewLine}Verification failed for an unspecified reason.", exception.Message); } [Fact] public void TestFailCustomMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.Fail("Custom message")); - Assert.Equal($"Custom message{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Fail("Custom message")); + Assert.Equal($"Custom message", exception.Message); } [Fact] public void TestFailCustomMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.Fail("Custom message")); - Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message{Environment.NewLine}Expected: True{Environment.NewLine}Actual: False", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.Fail("Custom message")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message", exception.Message); } [Fact] public void TestLanguageIsSupportedMessage() { var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.LanguageIsSupported("NonLanguage")); - Assert.Equal($"Unsupported Language: 'NonLanguage'{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.LanguageIsSupported("NonLanguage")); + Assert.Equal($"Unsupported Language: 'NonLanguage'", exception.Message); } [Fact] public void TestLanguageIsSupportedMessageWithContext() { var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.LanguageIsSupported("NonLanguage")); - Assert.Equal($"Context: Known Context{Environment.NewLine}Unsupported Language: 'NonLanguage'{Environment.NewLine}Expected: False{Environment.NewLine}Actual: True", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.LanguageIsSupported("NonLanguage")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Unsupported Language: 'NonLanguage'", exception.Message); } [Fact] @@ -193,8 +185,8 @@ public void TestNotEmptyMessage() { var actual = new int[0]; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.NotEmpty("someCollectionName", actual)); - Assert.Equal($"'someCollectionName' is empty{Environment.NewLine}Assert.NotEmpty() Failure", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.NotEmpty("someCollectionName", actual)); + Assert.Equal($"'someCollectionName' is empty", exception.Message); } [Fact] @@ -202,8 +194,8 @@ public void TestNotEmptyMessageWithContext() { var actual = new int[0]; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.NotEmpty("someCollectionName", actual)); - Assert.Equal($"Context: Known Context{Environment.NewLine}'someCollectionName' is empty{Environment.NewLine}Assert.NotEmpty() Failure", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.NotEmpty("someCollectionName", actual)); + Assert.Equal($"Context: Known Context{Environment.NewLine}'someCollectionName' is empty", exception.Message); } [Fact] @@ -212,10 +204,8 @@ public void TestSequenceEqualMessage() var expected = new int[] { 0 }; var actual = new int[] { 1 }; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual)); - Assert.Equal("Int32[] [0]", exception.Expected); - Assert.Equal("Int32[] [1]", exception.Actual); - Assert.Equal($"Assert.Equal() Failure{Environment.NewLine}Expected: Int32[] [0]{Environment.NewLine}Actual: Int32[] [1]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual)); + Assert.Equal($"Sequences are not equal", exception.Message); } [Fact] @@ -224,10 +214,8 @@ public void TestSequenceEqualMessageWithContext() var expected = new int[] { 0 }; var actual = new int[] { 1 }; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual)); - Assert.Equal("Int32[] [0]", exception.Expected); - Assert.Equal("Int32[] [1]", exception.Actual); - Assert.Equal($"Context: Known Context{Environment.NewLine}{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: Int32[] [0]{Environment.NewLine}Actual: Int32[] [1]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual)); + Assert.Equal($"Context: Known Context{Environment.NewLine}Sequences are not equal", exception.Message); } [Fact] @@ -236,10 +224,8 @@ public void TestSequenceEqualCustomMessage() var expected = new int[] { 0 }; var actual = new int[] { 1 }; var verifier = new XUnitVerifier(); - var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual, message: "Custom message")); - Assert.Equal("Int32[] [0]", exception.Expected); - Assert.Equal("Int32[] [1]", exception.Actual); - Assert.Equal($"Custom message{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: Int32[] [0]{Environment.NewLine}Actual: Int32[] [1]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual, message: "Custom message")); + Assert.Equal($"Custom message", exception.Message); } [Fact] @@ -248,10 +234,8 @@ public void TestSequenceEqualCustomMessageWithContext() var expected = new int[] { 0 }; var actual = new int[] { 1 }; var verifier = new XUnitVerifier().PushContext("Known Context"); - var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual, message: "Custom message")); - Assert.Equal("Int32[] [0]", exception.Expected); - Assert.Equal("Int32[] [1]", exception.Actual); - Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message{Environment.NewLine}Assert.Equal() Failure{Environment.NewLine}Expected: Int32[] [0]{Environment.NewLine}Actual: Int32[] [1]", exception.Message); + var exception = Assert.ThrowsAny(() => verifier.SequenceEqual(expected, actual, message: "Custom message")); + Assert.Equal($"Context: Known Context{Environment.NewLine}Custom message", exception.Message); } } } diff --git a/tests/VisualStudio.Roslyn.SDK/Roslyn.SDK.IntegrationTests/Roslyn.SDK.IntegrationTests.csproj b/tests/VisualStudio.Roslyn.SDK/Roslyn.SDK.IntegrationTests/Roslyn.SDK.IntegrationTests.csproj index 88375f10b..263861a35 100644 --- a/tests/VisualStudio.Roslyn.SDK/Roslyn.SDK.IntegrationTests/Roslyn.SDK.IntegrationTests.csproj +++ b/tests/VisualStudio.Roslyn.SDK/Roslyn.SDK.IntegrationTests/Roslyn.SDK.IntegrationTests.csproj @@ -8,12 +8,10 @@ + - - -