[xbuild] Clean up test logs.
[mono.git] / mcs / class / Microsoft.Build.Tasks / Test / Microsoft.Build.Tasks / MessageTest.cs
index f4b0d4f8eb0cb27288c6cfadab8703cb14caf9b7..1aa785622ba7e91e8b9f10a9d9d3cb286d17750f 100644 (file)
@@ -35,56 +35,21 @@ using NUnit.Framework;
 
 namespace MonoTests.Microsoft.Build.Tasks {
 
-       internal class TestLogger : ILogger {
-               IList messages;
-               
-               public TestLogger ()
-               {
-                       messages = new ArrayList ();
-               }
-       
-               public LoggerVerbosity Verbosity { get { return LoggerVerbosity.Normal; } set { } }
-               
-               public string Parameters { get { return null; } set { } }
-               
-               public void Initialize (IEventSource eventSource)
-               {
-                       eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
-               }
-               
-               public void Shutdown ()
-               {
-               }
-               
-               private void MessageHandler (object sender, BuildMessageEventArgs args)
-               {
-                       if (args.Message.StartsWith ("Using") == false)
-                               messages.Add (args);
-               }
-               
-               public bool CheckHead (string text, MessageImportance importance)
-               {
-                       BuildMessageEventArgs actual;
-               
-                       if (messages.Count > 0) {
-                               actual = (BuildMessageEventArgs) messages [0];
-                               messages.RemoveAt (0);
-                       } else
-                               return false;
-                       
-                       if (text == actual.Message && importance == actual.Importance)
-                               return true;
-                       else
-                               return false;
-               }
-       }
 
        [TestFixture]
        public class MessageTest {
        
                Engine engine;
                Project project;
-               TestLogger testLogger;
+               TestMessageLogger testLogger;
+
+               [Test]
+               public void TestDefaultValues()
+               {
+                       Message message = new Message();
+                       Assert.AreEqual(null, message.Text, "A1");
+                       Assert.AreEqual(null, message.Importance, "A2");
+               }
                
                [Test]
                public void TestAssignment ()
@@ -107,34 +72,37 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        string documentString = @"
                                 <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
                                        <Target Name='1'>
-                                               <Message Text='Text' Importance='Low'/>
-                                               <Message Text='Text' Importance='Normal'/>
-                                               <Message Text='Text' Importance='High'/>
-                                               <Message Text='Text' Importance='low'/>
-                                               <Message Text='Text' Importance='normal'/>
-                                               <Message Text='Text' Importance='high'/>
-                                               <Message Text='Text' Importance='weird_importance'/>
+                                               <Message Text='Text1' Importance='Low'/>
+                                               <Message Text='Text2' Importance='Normal'/>
+                                               <Message Text='Text3' Importance='High'/>
+                                               <Message Text='Text4' Importance='low'/>
+                                               <Message Text='Text5' Importance='normal'/>
+                                               <Message Text='Text6' Importance='high'/>
+                                               <Message Text='Text7' />
+                                               <Message Text='Text8' Importance='weird_importance'/>
                                        </Target>
                                </Project>
                        ";
                        
-                       
                        engine = new Engine (Consts.BinPath);
-                       testLogger = new TestLogger ();
+                       testLogger = new TestMessageLogger ();
                        engine.RegisterLogger (testLogger);
                        
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
-                       project.Build ("1");
-                       
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.Low), "A1");
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.Normal), "A2");
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.High), "A3");
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.Low), "A4");
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.Normal), "A5");
-                       Assert.AreEqual (true, testLogger.CheckHead ("Text", MessageImportance.High), "A6");
-                       Assert.AreEqual (false, testLogger.CheckHead ("Text", MessageImportance.Normal), "A7");
+                       if (project.Build ("1")) {
+                               testLogger.DumpMessages ();
+                               Assert.Fail ("Build should have failed");
+                       }
                        
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text1", MessageImportance.Low), "A1");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text2", MessageImportance.Normal), "A2");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text3", MessageImportance.High), "A3");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text4", MessageImportance.Low), "A4");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text5", MessageImportance.Normal), "A5");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text6", MessageImportance.High), "A6");
+                       Assert.AreEqual (0, testLogger.CheckAny ("Text7", MessageImportance.Normal), "A7");
+                       Assert.AreEqual (1, testLogger.CheckAny ("Text8", MessageImportance.Normal), "A8");
                }
        }
 }