merge -r 53370:58178
[mono.git] / mcs / class / System / Test / Microsoft.VisualBasic / CodeGeneratorFromExpressionTest.cs
1 //
2 // Microsoft.VisualBasic.* Test Cases
3 //
4 // Authors:
5 //      Gert Driesen (drieseng@users.sourceforge.net)
6 //
7 // (c) 2005 Novell
8 //
9 using System;
10 using System.IO;
11 using System.Text;
12 using System.CodeDom;
13 using System.CodeDom.Compiler;
14
15 using Microsoft.VisualBasic;
16
17 using NUnit.Framework;
18
19 namespace MonoTests.Microsoft.VisualBasic
20 {
21         [TestFixture]
22         public class CodeGeneratorFromExpressionTest
23         {
24                 VBCodeProvider provider;
25                 ICodeGenerator generator;
26                 CodeGeneratorOptions options;
27
28                 [SetUp]
29                 public void SetUp ()
30                 {
31                         provider = new VBCodeProvider ();
32                         generator = provider.CreateGenerator ();
33                         options = new CodeGeneratorOptions ();
34                 }
35                 
36                 [Test]
37                 [ExpectedException (typeof (ArgumentException))]
38                 public void DefaultExpressionTest ()
39                 {
40                         using (StringWriter sw = new StringWriter ()) {
41                                 Generate(new CodeExpression (), sw);
42                                 sw.Close ();
43                         }
44                 }
45
46                 [Test]
47                 [ExpectedException (typeof (ArgumentNullException))]
48                 public void NullExpressionTest ()
49                 {
50                         using (StringWriter sw = new StringWriter ()) {
51                                 Generate (null, sw);
52                         }
53                 }
54
55                 [Test]
56                 public void TypeReferenceExpressionTest ()
57                 {
58                         StringBuilder sb = new StringBuilder();
59
60                         using (StringWriter sw = new StringWriter (sb)) {
61                                 Assert.AreEqual ("Boolean", Generate (new CodeTypeReferenceExpression (typeof (bool)), sw), "#1");
62                                 sb.Length = 0;
63                                 Assert.AreEqual ("Byte", Generate (new CodeTypeReferenceExpression (typeof (byte)), sw), "#2");
64                                 sb.Length = 0;
65                                 Assert.AreEqual ("Char", Generate (new CodeTypeReferenceExpression (typeof (char)), sw), "#3");
66                                 sb.Length = 0;
67                                 Assert.AreEqual ("Date", Generate (new CodeTypeReferenceExpression (typeof (DateTime)), sw), "#4");
68                                 sb.Length = 0;
69                                 Assert.AreEqual ("Decimal", Generate (new CodeTypeReferenceExpression (typeof (decimal)), sw), "#5");
70                                 sb.Length = 0;
71                                 Assert.AreEqual ("Double", Generate (new CodeTypeReferenceExpression (typeof (double)), sw), "#6");
72                                 sb.Length = 0;
73                                 Assert.AreEqual ("Short", Generate (new CodeTypeReferenceExpression (typeof (short)), sw), "#7");
74                                 sb.Length = 0;
75                                 Assert.AreEqual ("Integer", Generate (new CodeTypeReferenceExpression (typeof (int)), sw), "#8");
76                                 sb.Length = 0;
77                                 Assert.AreEqual ("Long", Generate (new CodeTypeReferenceExpression (typeof (long)), sw), "#9");
78                                 sb.Length = 0;
79                                 Assert.AreEqual ("Single", Generate (new CodeTypeReferenceExpression (typeof (float)), sw), "#10");
80                                 sb.Length = 0;
81                                 Assert.AreEqual ("Object", Generate (new CodeTypeReferenceExpression (typeof (object)), sw), "#11");
82                                 sb.Length = 0;
83                                 Assert.AreEqual (typeof (void).FullName, Generate (new CodeTypeReferenceExpression (typeof (void)), sw), "#12");
84                                 sb.Length = 0;
85                                 Assert.AreEqual (typeof (void).FullName, Generate (new CodeTypeReferenceExpression ((string) null), sw), "#13");
86                                 sb.Length = 0;
87                                 Assert.AreEqual (typeof (void).FullName, Generate (new CodeTypeReferenceExpression (""), sw), "#14");
88                                 sb.Length = 0;
89 #if NET_2_0
90                                 Assert.AreEqual ("SByte", Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#15");
91                                 sb.Length = 0;
92                                 Assert.AreEqual ("UShort", Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#16");
93                                 sb.Length = 0;
94                                 Assert.AreEqual ("UInteger", Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#17");
95                                 sb.Length = 0;
96                                 Assert.AreEqual ("ULong", Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#18");
97                                 sb.Length = 0;
98 #else
99                                 Assert.AreEqual (typeof (sbyte).FullName, Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#19");
100                                 sb.Length = 0;
101                                 Assert.AreEqual (typeof(ushort).FullName, Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#20");
102                                 sb.Length = 0;
103                                 Assert.AreEqual (typeof(uint).FullName, Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#21");
104                                 sb.Length = 0;
105                                 Assert.AreEqual (typeof(ulong).FullName, Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#22");
106                                 sb.Length = 0;
107 #endif
108                                 sw.Close ();
109                         }
110                 }
111
112                 private string Generate (CodeExpression expression, StringWriter sw)
113                 {
114                         generator.GenerateCodeFromExpression (expression, sw, options);
115                         return sw.ToString ();
116                 }
117         }
118 }