public void ToStringBareBones()
        {
            AssertionFailure failure = new AssertionFailureBuilder("Description")
                .SetStackTrace(null)
                .ToAssertionFailure();

            Assert.AreEqual("Description\n", failure.ToString());
        }
        public void ToStringEverything()
        {
            AssertionFailure failure = new AssertionFailureBuilder("Description")
                .SetMessage("Message goes here")
                .SetStackTrace(new StackTraceData("Stack goes here"))
                .AddRawExpectedValue("Expected value")
                .AddRawActualValue("Actual value")
                .AddRawLabeledValue("Very Long Label That Will Not Be Padded", "")
                .AddRawLabeledValue("x", 42)
                .AddException(new Exception("Boom"))
                .AddException(new Exception("Kaput"))
                .AddInnerFailure(new AssertionFailureBuilder("Inner").SetStackTrace(null).ToAssertionFailure())
                .ToAssertionFailure();

            Assert.AreEqual("Description\nMessage goes here\n\nExpected Value : \"Expected value\"\nActual Value   : \"Actual value\"\nVery Long Label That Will Not Be Padded : \"\"\nx              : 42\n\nSystem.Exception: Boom\n\nSystem.Exception: Kaput\n\nStack goes here\nInner\n", failure.ToString());
        }
        public void TruncatesLabelsAndFormattedValues()
        {
            AssertionFailure failure = new AssertionFailureBuilder("Description")
                .SetStackTrace(null)
                .AddLabeledValue(new string('x', AssertionFailure.MaxLabelLengthBeforeTruncation + 1),
                    new string('y', AssertionFailure.MaxFormattedValueLength + 1))
                .ToAssertionFailure();

            Assert.AreEqual("Description\n\n"
                + new string('x', AssertionFailure.MaxLabelLengthBeforeTruncation) + "... : "
                + new string('y', AssertionFailure.MaxFormattedValueLength) + "...\n", failure.ToString());
        }