Merge pull request #4169 from evincarofautumn/fix-xmm-scanning-mac-x86
[mono.git] / mcs / class / Microsoft.Build.Tasks / Test / Microsoft.Build.Tasks / ManagedCompilerTest.cs
1 //
2 // ManagedCompilerTest.cs
3 //
4 // Author:
5 //   Marek Sieradzki (marek.sieradzki@gmail.com)
6 //
7 // (C) 2006 Marek Sieradzki
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
28 using System;
29 using System.IO;
30 using System.Collections;
31 using Microsoft.Build.BuildEngine;
32 using Microsoft.Build.Framework;
33 using Microsoft.Build.Tasks;
34 using Microsoft.Build.Utilities;
35 using NUnit.Framework;
36
37 namespace MonoTests.Microsoft.Build.Tasks {
38
39         class MCExtended : ManagedCompiler {
40                 public MCExtended ()
41                         : base ()
42                 {
43                 }
44
45                 public void ARFC (CommandLineBuilderExtension commandLine)
46                 {
47                         base.AddResponseFileCommands (commandLine);
48                 }
49
50                 public void ACLC (CommandLineBuilderExtension commandLine)
51                 {
52                         base.AddCommandLineCommands (commandLine);
53                 }
54
55                 public new bool CheckAllReferencesExistOnDisk ()
56                 {
57                         return base.CheckAllReferencesExistOnDisk ();
58                 }
59                         
60
61                 protected override string ToolName {
62                         get { return "something"; }
63                 }
64
65                 protected override string GenerateFullPathToTool ()
66                 {
67                         return null;
68                 }
69         }
70
71         [TestFixture]
72         public class ManagedCompilerTest {
73                 
74                 [Test]
75                 public void TestAssignment ()
76                 {
77                         MCExtended mc = new MCExtended ();
78
79                         mc.AdditionalLibPaths = new string [1] { "1" };
80                         mc.AddModules = new string [1] { "2" };
81                         mc.CodePage = 3;
82                         mc.DebugType = "4";
83                         mc.DefineConstants = "5";
84                         mc.DelaySign = true;
85                         mc.EmitDebugInformation = true;
86                         mc.FileAlignment = 6;
87                         mc.KeyContainer = "7";
88                         mc.KeyFile = "8";
89                         mc.LinkResources = new ITaskItem [1] { new TaskItem ("9") };
90                         mc.MainEntryPoint = "10";
91                         mc.NoConfig = true;
92                         mc.NoLogo = true;
93                         mc.Optimize = true;
94                         mc.OutputAssembly = new TaskItem ("11");
95                         mc.References = new ITaskItem [1] { new TaskItem ("12") };
96                         mc.Resources = new ITaskItem [1] { new TaskItem ("13") };
97                         mc.ResponseFiles = new ITaskItem [1] { new TaskItem ("14") };
98                         mc.Sources = new ITaskItem [1] { new TaskItem ("15") };
99                         mc.TargetType = "16";
100                         mc.TreatWarningsAsErrors = true;
101                         mc.Utf8Output = true;
102                         mc.Win32Icon = "17";
103                         mc.Win32Resource = "18";
104
105                         Assert.AreEqual ("1", mc.AdditionalLibPaths [0], "A1");
106                         Assert.AreEqual ("2", mc.AddModules [0], "A2");
107                         Assert.AreEqual (3, mc.CodePage, "A3");
108                         Assert.AreEqual ("4", mc.DebugType, "A4");
109                         Assert.AreEqual ("5", mc.DefineConstants, "A5");
110                         Assert.AreEqual (true, mc.DelaySign, "A6");
111                         Assert.AreEqual (true, mc.EmitDebugInformation, "A7");
112                         Assert.AreEqual (6, mc.FileAlignment, "A8");
113                         Assert.AreEqual ("7", mc.KeyContainer, "A9");
114                         Assert.AreEqual ("8", mc.KeyFile, "A10");
115                         Assert.AreEqual ("9", mc.LinkResources [0].ItemSpec, "A11");
116                         Assert.AreEqual ("10", mc.MainEntryPoint, "A12");
117                         Assert.AreEqual (true, mc.NoConfig, "A13");
118                         Assert.AreEqual (true, mc.NoLogo, "A14");
119                         Assert.AreEqual (true, mc.Optimize, "A15");
120                         Assert.AreEqual ("11", mc.OutputAssembly.ItemSpec, "A16");
121                         Assert.AreEqual ("12", mc.References [0].ItemSpec, "A17");
122                         Assert.AreEqual ("13", mc.Resources [0].ItemSpec, "A18");
123                         Assert.AreEqual ("14", mc.ResponseFiles [0].ItemSpec, "A19");
124                         Assert.AreEqual ("15", mc.Sources [0].ItemSpec, "A20");
125                         Assert.AreEqual ("16", mc.TargetType, "A21");
126                         Assert.AreEqual (true, mc.TreatWarningsAsErrors, "A22");
127                         Assert.AreEqual (true, mc.Utf8Output, "A23");
128                         Assert.AreEqual ("17", mc.Win32Icon, "A24");
129                         Assert.AreEqual ("18", mc.Win32Resource, "A25");
130                 }
131
132                 [Test]
133                 public void TestDefaultValues ()
134                 {
135                         MCExtended mc = new MCExtended ();
136
137                         Assert.IsNull (mc.AdditionalLibPaths, "A1");
138                         Assert.IsNull (mc.AddModules, "A2");
139                         Assert.AreEqual (0, mc.CodePage, "A3");
140                         Assert.IsNull (mc.DebugType, "A4");
141                         Assert.IsNull (mc.DefineConstants, "A5");
142                         Assert.IsFalse (mc.DelaySign, "A6");
143                         Assert.IsFalse (mc.EmitDebugInformation, "A7");
144                         Assert.AreEqual (0, mc.FileAlignment, "A8");
145                         Assert.IsNull (mc.KeyContainer, "A9");
146                         Assert.IsNull (mc.KeyFile, "A10");
147                         Assert.IsNull (mc.LinkResources, "A11");
148                         Assert.IsNull (mc.MainEntryPoint, "A12");
149                         Assert.IsFalse (mc.NoConfig, "A13");
150                         Assert.IsFalse (mc.NoLogo, "A14");
151                         Assert.IsFalse (mc.Optimize, "A15");
152                         Assert.IsNull (mc.OutputAssembly, "A16");
153                         Assert.IsNull (mc.References, "A17");
154                         Assert.IsNull (mc.Resources, "A18");
155                         Assert.IsNull (mc.ResponseFiles, "A19");
156                         Assert.IsNull (mc.Sources, "A20");
157                         Assert.IsNull (mc.TargetType, "A21");
158                         Assert.IsFalse (mc.TreatWarningsAsErrors, "A22");
159                         Assert.IsFalse (mc.Utf8Output, "A23");
160                         Assert.IsNull (mc.Win32Icon, "A24");
161                         Assert.IsNull (mc.Win32Resource, "A25");
162                 }
163
164                 [Test]
165                 public void TestAdditionalLibPaths ()
166                 {
167                         MCExtended mc = new MCExtended ();
168                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
169                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
170
171                         mc.AdditionalLibPaths = new string [2] { "A", "B" };
172                         mc.ARFC (c1);
173                         mc.ACLC (c2);
174                         
175                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
176                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
177                 }
178
179                 [Test]
180                 public void TestAddModules ()
181                 {
182                         MCExtended mc = new MCExtended ();
183                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
184                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
185
186                         mc.AddModules = new string [2] { "A", "B" };
187                         mc.ARFC (c1);
188                         mc.ACLC (c2);
189                         
190                         Assert.AreEqual ("/addmodule:A,B", c1.ToString (), "A1");
191                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
192                 }
193
194                 [Test]
195                 public void TestCodePage1 ()
196                 {
197                         MCExtended mc = new MCExtended ();
198                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
199                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
200
201                         mc.CodePage = 1111;
202                         mc.ARFC (c1);
203                         mc.ACLC (c2);
204                         
205                         Assert.AreEqual ("/codepage:1111", c1.ToString (), "A1");
206                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
207                 }
208
209                 [Test]
210                 public void TestCodePage2 ()
211                 {
212                         MCExtended mc = new MCExtended ();
213                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
214                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
215
216                         mc.ARFC (c1);
217                         mc.ACLC (c2);
218                         
219                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
220                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
221                 }
222                 
223                 [Test]
224                 public void TestDebugType ()
225                 {
226                         MCExtended mc = new MCExtended ();
227                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
228                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
229
230                         mc.DebugType = "A";
231                         mc.ARFC (c1);
232                         mc.ACLC (c2);
233                         
234                         Assert.AreEqual ("/debug:A", c1.ToString (), "A1");
235                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
236                 }
237
238                 [Test]
239                 public void TestDefineConstants ()
240                 {
241                         MCExtended mc = new MCExtended ();
242                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
243                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
244
245                         mc.DefineConstants = "A;B";
246                         mc.ARFC (c1);
247                         mc.ACLC (c2);
248                         
249                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
250                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
251                 }
252
253                 [Test]
254                 public void TestDelaySign1 ()
255                 {
256                         MCExtended mc = new MCExtended ();
257                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
258                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
259
260                         mc.DelaySign = true;
261                         mc.ARFC (c1);
262                         mc.ACLC (c2);
263                         
264                         Assert.AreEqual ("/delaysign+", c1.ToString (), "A1");
265                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
266                 }
267
268                 [Test]
269                 public void TestDelaySign2 ()
270                 {
271                         MCExtended mc = new MCExtended ();
272                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
273                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
274
275                         mc.DelaySign = false;
276                         mc.ARFC (c1);
277                         mc.ACLC (c2);
278                         
279                         Assert.AreEqual ("/delaysign-", c1.ToString (), "A1");
280                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
281                 }
282
283                 [Test]
284                 public void TestEmitDebugInformation1 ()
285                 {
286                         MCExtended mc = new MCExtended ();
287                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
288                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
289
290                         mc.EmitDebugInformation = true;
291                         mc.ARFC (c1);
292                         mc.ACLC (c2);
293                         
294                         Assert.AreEqual ("/debug:portable", c1.ToString (), "A1");
295                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
296                 }
297
298                 [Test]
299                 public void TestEmitDebugInformation2 ()
300                 {
301                         MCExtended mc = new MCExtended ();
302                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
303                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
304
305                         mc.EmitDebugInformation = false;
306                         mc.ARFC (c1);
307                         mc.ACLC (c2);
308                         
309                         Assert.AreEqual ("/debug-", c1.ToString (), "A1");
310                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
311                 }
312
313                 [Test]
314                 [Category ("NotWorking")]
315                 public void TestFileAlignment1 ()
316                 {
317                         MCExtended mc = new MCExtended ();
318                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
319                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
320
321                         mc.FileAlignment = 100;
322                         mc.ARFC (c1);
323                         mc.ACLC (c2);
324                         
325                         Assert.AreEqual ("/filealign:100", c1.ToString (), "A1");
326                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
327                 }
328
329                 [Test]
330                 public void TestFileAlignment2 ()
331                 {
332                         MCExtended mc = new MCExtended ();
333                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
334                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
335
336                         mc.ARFC (c1);
337                         mc.ACLC (c2);
338                         
339                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
340                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
341                 }
342
343                 [Test]
344                 public void TestKeyContainer ()
345                 {
346                         MCExtended mc = new MCExtended ();
347                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
348                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
349
350                         mc.KeyContainer = "A";
351                         mc.ARFC (c1);
352                         mc.ACLC (c2);
353                         
354                         Assert.AreEqual ("/keycontainer:A", c1.ToString (), "A1");
355                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
356                 }
357
358                 [Test]
359                 public void TestKeyFile ()
360                 {
361                         MCExtended mc = new MCExtended ();
362                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
363                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
364
365                         mc.KeyFile = "A";
366                         mc.ARFC (c1);
367                         mc.ACLC (c2);
368                         
369                         Assert.AreEqual ("/keyfile:A /publicsign", c1.ToString (), "A1");
370                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
371                 }
372
373                 [Test]
374                 public void TestLinkResources ()
375                 {
376                         MCExtended mc = new MCExtended ();
377                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
378                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
379
380                         mc.LinkResources = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
381                         mc.ARFC (c1);
382                         mc.ACLC (c2);
383                         
384                         Assert.AreEqual ("/linkresource:A /linkresource:B", c1.ToString (), "A1");
385                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
386                 }
387
388                 [Test]
389                 public void TestMainEntryPoint ()
390                 {
391                         MCExtended mc = new MCExtended ();
392                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
393                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
394
395                         mc.MainEntryPoint = "A";
396                         mc.ARFC (c1);
397                         mc.ACLC (c2);
398                         
399                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
400                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
401                 }
402                 
403                 [Test]
404                 public void TestNoConfig1 ()
405                 {
406                         MCExtended mc = new MCExtended ();
407                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
408                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
409
410                         mc.NoConfig = true;
411                         mc.ARFC (c1);
412                         mc.ACLC (c2);
413                         
414                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
415                         Assert.AreEqual ("/noconfig", c2.ToString (), "A2");
416                 }
417
418                 [Test]
419                 public void TestNoConfig2 ()
420                 {
421                         MCExtended mc = new MCExtended ();
422                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
423                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
424
425                         mc.NoConfig = false;
426                         mc.ARFC (c1);
427                         mc.ACLC (c2);
428                         
429                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
430                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
431                 }
432
433                 [Test]
434                 public void TestNoLogo1 ()
435                 {
436                         MCExtended mc = new MCExtended ();
437                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
438                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
439
440                         mc.NoLogo = true;
441                         mc.ARFC (c1);
442                         mc.ACLC (c2);
443                         
444                         Assert.AreEqual ("/nologo", c1.ToString (), "A1");
445                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
446                 }
447
448                 [Test]
449                 public void TestNoLogo2 ()
450                 {
451                         MCExtended mc = new MCExtended ();
452                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
453                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
454
455                         mc.NoLogo = false;
456                         mc.ARFC (c1);
457                         mc.ACLC (c2);
458                         
459                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
460                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
461                 }
462
463                 [Test]
464                 public void TestOptimize1 ()
465                 {
466                         MCExtended mc = new MCExtended ();
467                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
468                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
469
470                         mc.Optimize = true;
471                         mc.ARFC (c1);
472                         mc.ACLC (c2);
473                         
474                         Assert.AreEqual ("/optimize+", c1.ToString (), "A1");
475                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
476                 }
477
478                 [Test]
479                 public void TestOptimize2 ()
480                 {
481                         MCExtended mc = new MCExtended ();
482                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
483                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
484
485                         mc.Optimize = false;
486                         mc.ARFC (c1);
487                         mc.ACLC (c2);
488                         
489                         Assert.AreEqual ("/optimize-", c1.ToString (), "A1");
490                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
491                 }
492
493                 [Test]
494                 public void TestOutputAssembly ()
495                 {
496                         MCExtended mc = new MCExtended ();
497                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
498                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
499
500                         mc.OutputAssembly = new TaskItem ("A");
501                         mc.ARFC (c1);
502                         mc.ACLC (c2);
503                         
504                         Assert.AreEqual ("/out:A", c1.ToString (), "A1");
505                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
506                 }
507
508                 [Test]
509                 public void TestReferences ()
510                 {
511                         MCExtended mc = new MCExtended ();
512                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
513                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
514
515                         mc.References = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
516                         mc.ARFC (c1);
517                         mc.ACLC (c2);
518                         
519                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
520                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
521                 }
522
523                 [Test]
524                 public void TestResources ()
525                 {
526                         MCExtended mc = new MCExtended ();
527                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
528                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
529
530                         mc.Resources = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
531                         mc.ARFC (c1);
532                         mc.ACLC (c2);
533                         
534                         Assert.AreEqual ("/resource:A /resource:B", c1.ToString (), "A1");
535                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
536                 }
537
538                 [Test]
539                 public void TestResponseFiles ()
540                 {
541                         MCExtended mc = new MCExtended ();
542                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
543                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
544
545                         mc.ResponseFiles = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
546                         mc.ARFC (c1);
547                         mc.ACLC (c2);
548                         
549                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
550                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
551                 }
552
553                 [Test]
554                 public void TestSources ()
555                 {
556                         MCExtended mc = new MCExtended ();
557                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
558                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
559
560                         mc.Sources = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
561                         mc.ARFC (c1);
562                         mc.ACLC (c2);
563                         
564                         Assert.AreEqual ("/out:A.exe A B", c1.ToString (), "A1");
565                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
566                 }
567
568                 [Test]
569                 public void TestTargetType ()
570                 {
571                         MCExtended mc = new MCExtended ();
572                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
573                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
574
575                         mc.TargetType = "A";
576                         mc.ARFC (c1);
577                         mc.ACLC (c2);
578                         
579                         Assert.AreEqual ("/target:a", c1.ToString (), "A1");
580                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
581                 }
582                 
583                 [Test]
584                 public void TestTreatWarningsAsErrors1 ()
585                 {
586                         MCExtended mc = new MCExtended ();
587                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
588                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
589
590                         mc.TreatWarningsAsErrors = true;
591                         mc.ARFC (c1);
592                         mc.ACLC (c2);
593                         
594                         Assert.AreEqual ("/warnaserror+", c1.ToString (), "A1");
595                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
596                 }
597
598                 [Test]
599                 public void TestTreatWarningsAsErrors2 ()
600                 {
601                         MCExtended mc = new MCExtended ();
602                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
603                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
604
605                         mc.TreatWarningsAsErrors = false;
606                         mc.ARFC (c1);
607                         mc.ACLC (c2);
608                         
609                         Assert.AreEqual ("/warnaserror-", c1.ToString (), "A1");
610                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
611                 }
612                 
613                 [Test]
614                 [Category ("NotWorking")]
615                 public void TestUtf8Output1 ()
616                 {
617                         MCExtended mc = new MCExtended ();
618                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
619                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
620
621                         mc.Utf8Output = true;
622                         mc.ARFC (c1);
623                         mc.ACLC (c2);
624                         
625                         Assert.AreEqual ("/utf8output", c1.ToString (), "A1");
626                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
627                 }
628
629                 [Test]
630                 public void TestUtf8Output2 ()
631                 {
632                         MCExtended mc = new MCExtended ();
633                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
634                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
635
636                         mc.Utf8Output = false;
637                         mc.ARFC (c1);
638                         mc.ACLC (c2);
639                         
640                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
641                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
642                 }
643
644                 [Test]
645                 public void TestWin32Icon ()
646                 {
647                         MCExtended mc = new MCExtended ();
648                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
649                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
650
651                         mc.Win32Icon = "A";
652                         mc.ARFC (c1);
653                         mc.ACLC (c2);
654                         
655                         Assert.AreEqual ("/win32icon:A", c1.ToString (), "A1");
656                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
657                 }
658
659                 [Test]
660                 public void TestWin32Resource ()
661                 {
662                         MCExtended mc = new MCExtended ();
663                         CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
664                         CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
665
666                         mc.Win32Resource = "A;B";
667                         mc.ARFC (c1);
668                         mc.ACLC (c2);
669                         
670                         Assert.AreEqual (String.Empty, c1.ToString (), "A1");
671                         Assert.AreEqual (String.Empty, c2.ToString (), "A2");
672                 }
673
674                 [Test]
675                 public void TestCheckAllReferencesExistOnDisk1 ()
676                 {
677                         MCExtended mc = new MCExtended ();
678                         mc.BuildEngine = new TestEngine ();
679                         
680                         mc.References = new ITaskItem [0];
681                         Assert.IsTrue (mc.CheckAllReferencesExistOnDisk (), "A1");
682
683                         mc.References = null;
684                         Assert.IsTrue (mc.CheckAllReferencesExistOnDisk (), "A2");
685
686                         string path = Path.Combine (Path.Combine ("Test", "resources"), "test.cs");
687                         mc.References = new ITaskItem [1] { new TaskItem (path) };
688                         Assert.IsTrue (mc.CheckAllReferencesExistOnDisk (), "A3");
689
690                         mc.References = new ITaskItem [2] { new TaskItem (path), new TaskItem ("X") };
691                         Assert.IsFalse (mc.CheckAllReferencesExistOnDisk (), "A4");
692                 }
693         }
694 }
695