From 3d7ac8c7fa445dcf0e399e19d17a0480bf2977d8 Mon Sep 17 00:00:00 2001 From: Jacob Ewald Date: Thu, 18 Apr 2019 11:34:11 -0400 Subject: [PATCH] Add ToString() for fluent setup API objects (#812) Issue 810: * SetupPhrase does not return Expression in ToString() * Fixing ToString() on SetupPhrase to return descriptive Expression * Updating Changelog for ToString() fix for SetupPhrase * SetupSequencePhrase does not return Expression in ToString() * Fixing ToString() on SetupSequencePhrase to return descriptive Expression * Removing Phrase from variable names * Revert "Updating Changelog for ToString() fix for SetupPhrase" --- src/Moq/Language/Flow/SetupPhrase.cs | 5 +++ src/Moq/Language/Flow/SetupSequencePhrase.cs | 10 +++++ .../Regressions/IssueReportsFixture.cs | 43 +++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/src/Moq/Language/Flow/SetupPhrase.cs b/src/Moq/Language/Flow/SetupPhrase.cs index 427601f3b..9559e1257 100644 --- a/src/Moq/Language/Flow/SetupPhrase.cs +++ b/src/Moq/Language/Flow/SetupPhrase.cs @@ -162,5 +162,10 @@ public void Verifiable(string failMessage) { this.setup.Verifiable(failMessage); } + + public override string ToString() + { + return setup.Expression.ToStringFixed(); + } } } diff --git a/src/Moq/Language/Flow/SetupSequencePhrase.cs b/src/Moq/Language/Flow/SetupSequencePhrase.cs index 748be9146..14b847476 100644 --- a/src/Moq/Language/Flow/SetupSequencePhrase.cs +++ b/src/Moq/Language/Flow/SetupSequencePhrase.cs @@ -37,6 +37,11 @@ public ISetupSequentialAction Throws(Exception exception) this.setup.AddThrows(exception); return this; } + + public override string ToString() + { + return setup.Expression.ToStringFixed(); + } } internal sealed class SetupSequencePhrase : ISetupSequentialResult @@ -86,5 +91,10 @@ public ISetupSequentialResult Throws(Exception exception) public ISetupSequentialResult Throws() where TException : Exception, new() => this.Throws(new TException()); + + public override string ToString() + { + return setup.Expression.ToStringFixed(); + } } } diff --git a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs index 90799bd13..5dfeae84f 100644 --- a/tests/Moq.Tests/Regressions/IssueReportsFixture.cs +++ b/tests/Moq.Tests/Regressions/IssueReportsFixture.cs @@ -2466,6 +2466,47 @@ public void InvokeApplyRule(object obj) } } + #endregion + + #region #810 + + public class _810 + { + [Fact] + public void VoidSetupPhraseConvertsExpressionToDescriptiveString() + { + var voidSetup = new Mock().Setup(x => x.DoThings(null)); + + Assert.Equal("x => x.DoThings(null)", voidSetup.ToString()); + } + + [Fact] + public void NonVoidSetupPhraseConvertsExpressionToDescriptiveString() + { + var nonVoidSetup = new Mock().Setup(x => x.Property1); + + Assert.Equal("x => x.Property1", nonVoidSetup.ToString()); + } + + [Fact] + public void SetterSetupPhraseConvertsExpressionToDescriptiveString() + { + var setterSetup = new Mock().SetupSet(x => x.Property1 = null); + + Assert.Equal("x => x.Property1 = null", setterSetup.ToString()); + } + + [Fact] + public void SetupSequencePhraseConvertsExpressionToDescriptiveString() + { + var setupSequence = new Mock().SetupSequence(x => x.DoThings(null)); + var setupGenericSequence = new Mock().SetupSequence(x => x.DoThings(null)); + + Assert.Equal("x => x.DoThings(null)", setupSequence.ToString()); + Assert.Equal("x => x.DoThings(null)", setupGenericSequence.ToString()); + } + } + #endregion // Old @ Google Code @@ -2566,6 +2607,8 @@ public void CreatesMockWithGenericsConstraints() public interface IFoo { void DoThings(object arg); + T DoThings(object arg); + object Property1 { get; set; } } [Fact]