In class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks:
[mono.git] / mcs / class / Microsoft.Build.Tasks / Test / Microsoft.Build.Tasks / TestMessageLogger.cs
1 using Microsoft.Build.Framework;
2 using System.Collections;
3 using System;
4 using System.Collections.Generic;
5
6 namespace MonoTests.Microsoft.Build.Tasks
7 {
8         internal class TestMessageLogger : ILogger
9         {
10                 List<BuildMessageEventArgs> messages;
11
12                 public TestMessageLogger ()
13                 {
14                         messages = new List<BuildMessageEventArgs> ();
15                 }
16
17                 public int Count
18                 {
19                         get { return messages.Count; }
20                 }
21
22                 public LoggerVerbosity Verbosity { get { return LoggerVerbosity.Normal; } set { } }
23
24                 public string Parameters { get { return null; } set { } }
25
26                 public void Initialize (IEventSource eventSource)
27                 {
28                         eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
29                 }
30
31                 public void Shutdown ()
32                 {
33                 }
34
35                 private void MessageHandler (object sender, BuildMessageEventArgs args)
36                 {
37                         if (args.Message.StartsWith ("Using") == false)
38                                 messages.Add (args);
39                 }
40
41                 public int CheckHead (string text, MessageImportance importance)
42                 {
43                         string actual_msg;
44                         return CheckHead (text, importance, out actual_msg);
45                 }
46
47                 public int CheckHead (string text, MessageImportance importance, out string actual_msg)
48                 {
49                         BuildMessageEventArgs actual;
50                         actual_msg = String.Empty;
51
52                         if (messages.Count > 0) {
53                                 actual = messages [0];
54                                 messages.RemoveAt (0);
55                         } else
56                                 return 1;
57
58                         actual_msg = actual.Message;
59                         if (text == actual.Message && importance == actual.Importance)
60                                 return 0;
61                         else
62                                 return 2;
63                 }
64
65                 //return: 0 - found
66                 //              1 - msg not found,
67                 public int CheckAny (string text, MessageImportance importance)
68                 {
69                         if (messages.Count <= 0)
70                                 return 1;
71
72                         int foundAt = -1;
73                         for (int i = 0; i < messages.Count; i ++) {
74                                 BuildMessageEventArgs arg = messages [i];
75                                 if (text == arg.Message && importance == arg.Importance) {
76                                         foundAt = i;
77                                         break;
78                                 }
79                         }
80
81                         if (foundAt < 0)
82                                 return 1;
83
84                         //found
85                         messages.RemoveAt (foundAt);
86                         return 0;
87                 }
88
89                 public void DumpMessages ()
90                 {
91                         foreach (BuildMessageEventArgs arg in messages)
92                                 Console.WriteLine ("Msg: {0}", arg.Message);
93                 }
94         }
95
96 }