protected void AssertContainsOutput(TaskId task, params string[] expectedOutput)
        {
            var messages = from e in messageElements
                           where e.Name == TaskAction.Output && task.MatchesTaskElement(e)
                           select GetElementValue(e, "message").TrimEnd();

            CollectionAssert.AreEqual(expectedOutput, messages);
        }
        protected void AssertDoesNotContain(TaskId task, string action)
        {
            var messages = from e in messageElements
                           where e.Name == action && task.MatchesTaskElement(e)
                           select e;

            CollectionAssert.IsEmpty(messages);
        }
        protected void AssertMessageOrder(TaskId task, params string[] messageTypes)
        {
            var messages = from m in messageElements
                           where task.MatchesTaskElement(m)
                           select m.Name.ToString();

            CollectionAssert.IsSubsetOf(messageTypes, messages, "With task {0}", task);
        }
        protected void AssertSingle(TaskId task, string messageType)
        {
            var messages = (from m in messageElements
                            where m.Name == messageType && task.MatchesTaskElement(m)
                            select m.Name.ToString()).ToList();

            Assert.AreEqual(1, messages.Count, "Expected one item of {0} for task {1}", messageType, task);
        }
        protected int GetMessageIndex(TaskId task, string messageType)
        {
            var indices = (messageElements.Select((e, i) => new { Element = e, Index = i })
                           .Where(x => x.Element.Name == messageType && task.MatchesTaskElement(x.Element))
                           .Select(x => x.Index)).ToList();

            Assert.AreEqual(1, indices.Count, "Expected single message of type {0} for task {1}", messageType, task);
            return(indices.Single());
        }
        protected void AssertContainsOutput(TaskId task, string expectedOutput)
        {
            var messages = from e in messageElements
                           where e.Name == TaskAction.Output && task.MatchesTaskElement(e)
                           select GetElementValue(e, "message").TrimEnd();

            var output = messages.Single();

            Assert.AreEqual(expectedOutput, output);
        }
 protected void AssertContainsException(TaskId task, string expectedType,
     string expectedExceptionMessage, string expectedStackTrace)
 {
     var expectedString = string.Format("{0}\n{1}\n{2}", expectedType, expectedExceptionMessage,
         expectedStackTrace);
     var messages = from e in messageElements
         where e.Name == TaskAction.Exception && task.MatchesTaskElement(e)
         select string.Format("{0}\n{1}\n{2}", e.Attribute("type").Value,
             GetElementValue(e, "message").Replace("\n", Environment.NewLine),
             GetElementValue(e, "stack-trace").Trim());
     var output = messages.Join("\n---\n");
     StringAssert.Contains(expectedString, output);
 }
 protected void AssertContainsErrorFinal(TaskId task, string expectedMessage)
 {
     var messages = from e in messageElements
         where e.Name == TaskAction.Finish && task.MatchesTaskElement(e)
         select new
         {
             Result = e.Attribute("result").Value,
             Message = GetElementValue(e, "message")
         };
     var result = messages.Last();
     Assert.AreEqual(TaskResult.Error, result.Result);
     if (!string.IsNullOrEmpty(expectedMessage))
         Assert.AreEqual(expectedMessage, result.Message);
 }
        protected void AssertContainsException(TaskId task, string expectedType,
                                               string expectedExceptionMessage, string expectedStackTrace)
        {
            var expectedString = string.Format("{0}\n{1}\n{2}", expectedType, expectedExceptionMessage,
                                               expectedStackTrace);
            var messages = from e in messageElements
                           where e.Name == TaskAction.Exception && task.MatchesTaskElement(e)
                           select string.Format("{0}\n{1}\n{2}", e.Attribute("type").Value,
                                                GetElementValue(e, "message").Replace("\n", Environment.NewLine),
                                                GetElementValue(e, "stack-trace").Trim());

            var output = messages.Join("\n---\n");

            StringAssert.Contains(expectedString, output);
        }
        protected void AssertContainsErrorFinal(TaskId task, string expectedMessage)
        {
            var messages = from e in messageElements
                           where e.Name == TaskAction.Finish && task.MatchesTaskElement(e)
                           select new
            {
                Result  = e.Attribute("result").Value,
                Message = GetElementValue(e, "message")
            };
            var result = messages.Last();

            Assert.AreEqual(TaskResult.Error, result.Result);
            if (!string.IsNullOrEmpty(expectedMessage))
            {
                Assert.AreEqual(expectedMessage, result.Message);
            }
        }
        protected void AssertContainsFinish(TaskId task, string expectedTaskResult, string expectedMessage = null)
        {
            var messages = (from e in messageElements
                            where e.Name == TaskAction.Finish && task.MatchesTaskElement(e)
                            select new
            {
                Result = e.Attribute("result").Value,
                Message = GetElementValue(e, "message")
            }).ToList();

            Assert.AreEqual(1, messages.Count, "Expected single message of type {0} for task {1}", TaskAction.Finish, task);
            var result = messages.Single();

            Assert.AreEqual(expectedTaskResult, result.Result);
            if (!string.IsNullOrEmpty(expectedMessage))
            {
                Assert.AreEqual(expectedMessage, result.Message);
            }
        }
 protected int GetMessageIndex(TaskId task, string messageType)
 {
     var indices = (messageElements.Select((e, i) => new {Element = e, Index = i})
         .Where(x => x.Element.Name == messageType && task.MatchesTaskElement(x.Element))
         .Select(x => x.Index)).ToList();
     Assert.AreEqual(1, indices.Count, "Expected single message of type {0} for task {1}", messageType, task);
     return indices.Single();
 }
 protected void AssertSingle(TaskId task, string messageType)
 {
     var messages = (from m in messageElements
         where m.Name == messageType && task.MatchesTaskElement(m)
         select m.Name.ToString()).ToList();
     Assert.AreEqual(1, messages.Count, "Expected one item of {0} for task {1}", messageType, task);
 }
 protected void AssertMessageOrder(TaskId task, params string[] messageTypes)
 {
     var messages = from m in messageElements
         where task.MatchesTaskElement(m)
         select m.Name.ToString();
     CollectionAssert.IsSubsetOf(messageTypes, messages, "With task {0}", task);
 }
 protected void AssertDoesNotContain(TaskId task, string action)
 {
     var messages = from e in messageElements
         where e.Name == action && task.MatchesTaskElement(e)
         select e;
     CollectionAssert.IsEmpty(messages);
 }
 protected void AssertContainsOutput(TaskId task, params string[] expectedOutput)
 {
     var messages = from e in messageElements
                    where e.Name == TaskAction.Output && task.MatchesTaskElement(e)
                    select GetElementValue(e, "message").TrimEnd();
     CollectionAssert.AreEqual(expectedOutput, messages);
 }
 protected void AssertContainsFinish(TaskId task, string expectedTaskResult, string expectedMessage = null)
 {
     var messages = (from e in messageElements
         where e.Name == TaskAction.Finish && task.MatchesTaskElement(e)
         select new
         {
             Result = e.Attribute("result").Value,
             Message = GetElementValue(e, "message")
         }).ToList();
     Assert.AreEqual(1, messages.Count, "Expected single message of type {0} for task {1}", TaskAction.Finish, task);
     var result = messages.Single();
     Assert.AreEqual(expectedTaskResult, result.Result);
     if (!string.IsNullOrEmpty(expectedMessage))
         Assert.AreEqual(expectedMessage, result.Message);
 }
 protected void AssertContainsOutput(TaskId task, string expectedOutput)
 {
     var messages = from e in messageElements
         where e.Name == TaskAction.Output && task.MatchesTaskElement(e)
         select GetElementValue(e, "message").TrimEnd();
     var output = messages.Single();
     Assert.AreEqual(expectedOutput, output);
 }