Merge pull request #3948 from henricm/fix-pinvoke-utf8-windows
[mono.git] / mcs / class / Microsoft.Build.Engine / Test / Microsoft.Build.BuildEngine / UsingTaskCollectionTest.cs
index 837b944a6b30a4b5e2b1ebf32b3dde962aebcc96..fd1df4b3d2b2d5321162cb78590f58cbcf117020 100644 (file)
@@ -36,16 +36,9 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
        [TestFixture]
        public class UsingTaskCollectionTest {
                
-               string          binPath;
                Engine          engine;
                Project         project;
                
-               [SetUp]
-               public void SetUp ()
-               {
-                       binPath = "../../tools/xbuild/xbuild";
-               }
-               
                [Test]
                public void TestAssemblyFile1 ()
                {
@@ -53,12 +46,12 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
                                        <UsingTask
                                                AssemblyFile='Test/resources/TestTasks.dll'
-                                               TaskName='SimpleTask'
+                                               TaskName='TrueTestTask'
                                        />
                                </Project>
                        ";
 
-                        engine = new Engine (binPath);
+                        engine = new Engine (Consts.BinPath);
 
                         project = engine.CreateNewProject ();
                         project.LoadXml (documentString);
@@ -75,18 +68,182 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
                                        <UsingTask
                                                AssemblyFile='Test/resources/TestTasks.dll'
-                                               TaskName='SimpleTask'
+                                               TaskName='TrueTestTask'
+                                       />
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='FalseTestTask'
                                        />
                                </Project>
                        ";
 
-                       engine = new Engine (binPath);
+                       engine = new Engine (Consts.BinPath);
                        project = engine.CreateNewProject ();
                        project.LoadXml (documentString);
                        
                        IEnumerator en = project.UsingTasks.GetEnumerator ();
                        en.MoveNext ();
+
+                       Assert.AreEqual ("Test/resources/TestTasks.dll", ((UsingTask) en.Current).AssemblyFile, "A1");
+                       Assert.AreEqual ("TrueTestTask", ((UsingTask) en.Current).TaskName, "A2");
+
+                       en.MoveNext ();
+
+                       Assert.AreEqual ("Test/resources/TestTasks.dll", ((UsingTask) en.Current).AssemblyFile, "A3");
+                       Assert.AreEqual ("FalseTestTask", ((UsingTask) en.Current).TaskName, "A4");
+
+                       Assert.IsFalse (en.MoveNext ());
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void TestCopyTo1 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       project.UsingTasks.CopyTo (null, 0);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentOutOfRangeException))]
+               public void TestCopyTo2 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       project.UsingTasks.CopyTo (new UsingTask [1], -1);
                }
 
+               [Test]
+               [Category ("NotDotNet")]
+               [ExpectedException (typeof (InvalidCastException))]
+               public void TestCopyTo3 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       project.UsingTasks.CopyTo (new UsingTask [][] { new UsingTask [] {
+                               null}}, 0);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestCopyTo4 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       project.UsingTasks.CopyTo (new UsingTask [1], 2);
+               }
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void TestCopyTo5 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       project.UsingTasks.CopyTo (new UsingTask [1], 1);
+               }
+
+               [Test]
+               public void TestCopyTo6 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       UsingTask[] array = new UsingTask [1];
+                       project.UsingTasks.CopyTo (array, 0);
+
+                       Assert.AreEqual ("TrueTestTask", array [0].TaskName, "A1");
+               }
+
+               [Test]
+               public void TestCopyTo7 ()
+               {
+                       string documentString = @"
+                               <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <UsingTask
+                                               AssemblyFile='Test/resources/TestTasks.dll'
+                                               TaskName='TrueTestTask'
+                                       />
+                               </Project>
+                       ";
+
+                       engine = new Engine (Consts.BinPath);
+
+                       project = engine.CreateNewProject ();
+                       project.LoadXml (documentString);
+
+                       UsingTask [] array = new UsingTask [1];
+                       project.UsingTasks.CopyTo ((Array) array, 0);
+               }
        }
 }
+