[smuxi: 169/179] Engine-Tests: support assert fail messages for MessageBuilderTests.TestMessage()



commit 1422db18ae15a4e644897d8fdc9490d2a2fd31d1
Author: Mirco Bauer <meebey meebey net>
Date:   Thu Oct 5 13:56:13 2017 +0800

    Engine-Tests: support assert fail messages for MessageBuilderTests.TestMessage()
    
    When MessageBuilderTests.TestMessage() is called from a [Test] method in a
    dynamic way, like inside a loop then you can't tell on which case / loop
    iteration it failed for. Thus we support now an optional parameter for the
    TestMessage() method that allows you to specify an assert fail message that is
    used as a prefix for all the Assert.*() calls it performs.

 src/Engine-Tests/MessageBuilderTests.cs |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/src/Engine-Tests/MessageBuilderTests.cs b/src/Engine-Tests/MessageBuilderTests.cs
index 432537e..8a877f4 100644
--- a/src/Engine-Tests/MessageBuilderTests.cs
+++ b/src/Engine-Tests/MessageBuilderTests.cs
@@ -310,7 +310,9 @@ namespace Smuxi.Engine
             builder.AppendFormat("{{{{virtual {0}}}}}", "hugs");
         }
 
-        void TestMessage(string message, MessageModel expectedMsg, MessageBuilderSettings settings = null)
+        void TestMessage(string message, MessageModel expectedMsg,
+                         MessageBuilderSettings settings = null,
+                         string assertFailMessage = null)
         {
             var builder = new MessageBuilder();
             if (settings != null) {
@@ -319,12 +321,23 @@ namespace Smuxi.Engine
             builder.TimeStamp = DateTime.MinValue;
             builder.AppendMessage(message);
             var actualMsg = builder.ToMessage();
-            Assert.AreEqual(expectedMsg.GetType(), actualMsg.GetType(), "The message type does not match");
-            Assert.AreEqual(expectedMsg.MessageParts.Count, actualMsg.MessageParts.Count, "The number of 
message parts do not match");
+
+            string assertFailMessagePrefix = String.Empty;
+            if (assertFailMessage != null) {
+                assertFailMessagePrefix = assertFailMessage + ": ";
+            }
+
+            Assert.AreEqual(expectedMsg.GetType(), actualMsg.GetType(),
+                            assertFailMessagePrefix + "The message type does not match");
+            Assert.AreEqual(expectedMsg.MessageParts.Count, actualMsg.MessageParts.Count,
+                            assertFailMessagePrefix + "The number of message parts do not match");
             for (int i = 0; i < expectedMsg.MessageParts.Count; i++) {
-                Assert.AreEqual(expectedMsg.MessageParts[i].GetType(), actualMsg.MessageParts[i].GetType(), 
"The type of the message part does not match");
+                Assert.AreEqual(expectedMsg.MessageParts[i].GetType(),
+                                actualMsg.MessageParts[i].GetType(),
+                                assertFailMessagePrefix + "The type of the message part does not match");
             }
-            Assert.AreEqual(expectedMsg, actualMsg);
+            Assert.AreEqual(expectedMsg, actualMsg,
+                            assertFailMessagePrefix + "The message objects are not equal");
         }
 
         [Test]


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]