* CodeGeneratorFromExpressionTest.cs: No longer inherit from
[mono.git] / mcs / class / System / Test / Microsoft.CSharp / CodeGeneratorFromExpressionTest.cs
1 //
2 // Microsoft.CSharp.* Test Cases
3 //
4 // Authors:
5 //      Erik LeBel (eriklebel@yahoo.ca)
6 //
7 // (c) 2003 Erik LeBel
8 //
9 using System;
10 using System.CodeDom;
11 using System.CodeDom.Compiler;
12 using System.IO;
13 using System.Text;
14
15 using Microsoft.CSharp;
16
17 using NUnit.Framework;
18
19 namespace MonoTests.Microsoft.CSharp
20 {
21         ///
22         /// <summary>
23         ///     Test ICodeGenerator's GenerateCodeFromExpression, along with a 
24         ///     minimal set CodeDom components.
25         /// </summary>
26         ///
27         [TestFixture]
28         public class CodeGeneratorFromExpressionTest
29         {
30                 CSharpCodeProvider provider;
31                 ICodeGenerator generator;
32                 CodeGeneratorOptions options;
33
34                 [SetUp]
35                 public void SetUp ()
36                 {
37                         provider = new CSharpCodeProvider ();
38                         generator = provider.CreateGenerator ();
39                         options = new CodeGeneratorOptions ();
40                 }
41
42                 [Test]
43                 [ExpectedException (typeof (ArgumentException))]
44                 public void DefaultExpressionTest ()
45                 {
46                         using (StringWriter sw = new StringWriter ()) {
47                                 Generate (new CodeExpression (), sw);
48                                 sw.Close ();
49                         }
50                 }
51
52                 [Test]
53                 [ExpectedException (typeof (ArgumentNullException))]
54                 public void NullExpressionTest ()
55                 {
56                         using (StringWriter sw = new StringWriter ()) {
57                                 Generate (null, sw);
58                         }
59                 }
60
61                 [Test]
62                 public void TypeReferenceExpressionTest ()
63                 {
64                         StringBuilder sb = new StringBuilder ();
65
66                         using (StringWriter sw = new StringWriter (sb)) {
67                                 Assert.AreEqual ("bool", Generate (new CodeTypeReferenceExpression (typeof (bool)), sw), "#1");
68                                 sb.Length = 0;
69                                 Assert.AreEqual ("char", Generate (new CodeTypeReferenceExpression (typeof (char)), sw), "#2");
70                                 sb.Length = 0;
71                                 Assert.AreEqual (typeof(DateTime).FullName, Generate (new CodeTypeReferenceExpression (typeof (DateTime)), sw), "#3");
72                                 sb.Length = 0;
73                                 Assert.AreEqual ("short", Generate (new CodeTypeReferenceExpression (typeof (short)), sw), "#4");
74                                 sb.Length = 0;
75                                 Assert.AreEqual ("int", Generate (new CodeTypeReferenceExpression (typeof (int)), sw), "#5");
76                                 sb.Length = 0;
77                                 Assert.AreEqual ("long", Generate (new CodeTypeReferenceExpression (typeof (long)), sw), "#6");
78                                 sb.Length = 0;
79                                 Assert.AreEqual ("object", Generate (new CodeTypeReferenceExpression (typeof (object)), sw), "#7");
80                                 sb.Length = 0;
81                                 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression (typeof (void)), sw), "#8");
82                                 sb.Length = 0;
83                                 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression ((string) null), sw), "#9");
84                                 sb.Length = 0;
85                                 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression (""), sw), "#10");
86                                 sb.Length = 0;
87 #if NET_2_0
88                                 Assert.AreEqual ("byte", Generate (new CodeTypeReferenceExpression (typeof (byte)), sw), "#11");
89                                 sb.Length = 0;
90                                 Assert.AreEqual ("decimal", Generate (new CodeTypeReferenceExpression (typeof (decimal)), sw), "#12");
91                                 sb.Length = 0;
92                                 Assert.AreEqual ("double", Generate (new CodeTypeReferenceExpression (typeof (double)), sw), "#13");
93                                 sb.Length = 0;
94                                 Assert.AreEqual ("sbyte", Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#14");
95                                 sb.Length = 0;
96                                 Assert.AreEqual ("ushort", Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#15");
97                                 sb.Length = 0;
98                                 Assert.AreEqual ("uint", Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#16");
99                                 sb.Length = 0;
100                                 Assert.AreEqual ("ulong", Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#17");
101                                 sb.Length = 0;
102                                 Assert.AreEqual ("float", Generate (new CodeTypeReferenceExpression (typeof (float)), sw), "#18");
103                                 sb.Length = 0;
104 #else
105                                 Assert.AreEqual (typeof (byte).FullName, Generate (new CodeTypeReferenceExpression (typeof (byte)), sw), "#19");
106                                 sb.Length = 0;
107                                 Assert.AreEqual (typeof (decimal).FullName, Generate (new CodeTypeReferenceExpression (typeof (decimal)), sw), "#20");
108                                 sb.Length = 0;
109                                 Assert.AreEqual (typeof (double).FullName, Generate (new CodeTypeReferenceExpression (typeof (double)), sw), "#21");
110                                 sb.Length = 0;
111                                 Assert.AreEqual (typeof (sbyte).FullName, Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#22");
112                                 sb.Length = 0;
113                                 Assert.AreEqual (typeof (ushort).FullName, Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#23");
114                                 sb.Length = 0;
115                                 Assert.AreEqual (typeof (uint).FullName, Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#24");
116                                 sb.Length = 0;
117                                 Assert.AreEqual (typeof (ulong).FullName, Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#25");
118                                 sb.Length = 0;
119                                 Assert.AreEqual (typeof (float).FullName, Generate (new CodeTypeReferenceExpression (typeof (float)), sw), "#26");
120                                 sb.Length = 0;
121 #endif
122                                 sw.Close ();
123                         }
124                 }
125
126                 private string Generate (CodeExpression expression, StringWriter sw)
127                 {
128                         generator.GenerateCodeFromExpression (expression, sw, options);
129                         return sw.ToString ();
130                 }
131
132                 /*
133                 [Test]
134                 public void ReferencedTest ()
135                 {
136                         codeUnit.ReferencedAssemblies.Add ("System.dll");
137                         Generate ();
138                         Assertion.AssertEquals ("", Code);
139                 }
140                 */
141         }
142 }