public void Document(RunResult result)
 {
     PrintEvil.Document(result, Before, Given.ToArray(), When, _text.ToString());
 }
        public static void Document <T>(
            RunResult result,
            List <Expression <Action> > before,
            IEvent <T>[] given,
            ICommand <T> when,
            string decisions) where T : IIdentity
        {
            var passed = result.Passed ? "Passed" : "Failed";

            Console.WriteLine("{0}: {1} - {2}", Extensions.CleanupName(result.FoundOnMemberInfo.DeclaringType.Name), Extensions.CleanupName(result.Name), passed);

            if (before.Any())
            {
                Console.WriteLine();
                Console.WriteLine("Environment: ");
                foreach (var expression in before)
                {
                    PrintAdjusted("  ", PAssert.CreateSimpleFormatFor(expression));
                }
            }

            if (given.Any())
            {
                Console.WriteLine();
                Console.WriteLine("Given:");

                for (int i = 0; i < given.Length; i++)
                {
                    PrintEvil.PrintAdjusted(" " + (i + 1) + ". ", Describe.Object(given[i]).Trim());
                }
            }


            if (when != null)
            {
                Console.WriteLine();
                PrintAdjusted("When: ", Describe.Object(when).Trim());
            }

            Console.WriteLine();
            Console.WriteLine("Expectations:");
            foreach (var expecation in result.Expectations)
            {
                PrintAdjusted("  " + (expecation.Passed ? "[Passed]" : "[Failed]") + " ", expecation.Text.Trim());
                if (!expecation.Passed && expecation.Exception != null)
                {
                    PrintAdjusted("             ", expecation.Exception.Message);
                }
            }



            if (result.Thrown != null)
            {
                Console.WriteLine("Specification failed: " + result.Message.Trim());
                Console.WriteLine();
                Console.WriteLine(result.Thrown);
            }

            if (decisions.Length > 0)
            {
                Console.WriteLine("");
                Console.WriteLine("Decisions made:");
                PrintAdjusted("  ", decisions.ToString());
            }

            Console.WriteLine(new string('-', 80));
            Console.WriteLine();
        }