public void Non_standard_stack_trace_format_should_group_by_exception_type()
        {
            var grouper = new ExceptionTypeAndStackTraceMessageGrouper();
            var failureWithNonStandardStackTrace = CreateFailureDetailsWithStackTrace("something other than a normal stack trace");
            var classification = grouper.ClassifyFailure(failureWithNonStandardStackTrace);

            Assert.AreEqual("exceptionType: 0", classification);
        }
        public void Null_stack_trace_should_group_by_exception_type()
        {
            var grouper = new ExceptionTypeAndStackTraceMessageGrouper();
            var failureWithNullStackTrace = CreateFailureDetailsWithStackTrace(null);
            var classification = grouper.ClassifyFailure(failureWithNullStackTrace);

            Assert.AreEqual("exceptionType: 0", classification);
        }
        public void Failure_Without_ExceptionDetails_should_not_group()
        {
            var grouper = new ExceptionTypeAndStackTraceMessageGrouper();
            var failureWithoutExceptionDetails =  new FailureDetails();
            var classification = grouper.ClassifyFailure(failureWithoutExceptionDetails);

            Assert.IsNull(classification);
        }
        public void Standard_stack_trace_format_should_group_by_exception_type_and_first_stack_frame()
        {
            const string stackTrace = @"at System.Environment.GetStackTrace(Exception e)
               at System.Environment.GetStackTrace(Exception e)
               at System.Environment.get_StackTrace()
               at Sample.Main()";

            var grouper = new ExceptionTypeAndStackTraceMessageGrouper();
            var standardStackTrace = CreateFailureDetailsWithStackTrace(stackTrace);

            var classification = grouper.ClassifyFailure(standardStackTrace);
            Assert.AreEqual(@"exceptionType: System.Environment.GetStackTrace(Exception e)", classification);
        }