2 // Microsoft.CSharp.* Test Cases
5 // Erik LeBel (eriklebel@yahoo.ca)
11 using System.CodeDom.Compiler;
15 using Microsoft.CSharp;
17 using NUnit.Framework;
19 namespace MonoTests.Microsoft.CSharp
23 /// Test ICodeGenerator's GenerateCodeFromExpression, along with a
24 /// minimal set CodeDom components.
28 public class CodeGeneratorFromExpressionTest
30 CSharpCodeProvider provider;
31 ICodeGenerator generator;
32 CodeGeneratorOptions options;
37 provider = new CSharpCodeProvider ();
38 generator = provider.CreateGenerator ();
39 options = new CodeGeneratorOptions ();
43 [ExpectedException (typeof (ArgumentException))]
44 public void DefaultExpressionTest ()
46 using (StringWriter sw = new StringWriter ()) {
47 Generate (new CodeExpression (), sw);
53 [ExpectedException (typeof (ArgumentNullException))]
54 public void NullExpressionTest ()
56 using (StringWriter sw = new StringWriter ()) {
62 public void TypeReferenceExpressionTest ()
64 StringBuilder sb = new StringBuilder ();
66 using (StringWriter sw = new StringWriter (sb)) {
67 Assert.AreEqual ("bool", Generate (new CodeTypeReferenceExpression (typeof (bool)), sw), "#1");
69 Assert.AreEqual ("char", Generate (new CodeTypeReferenceExpression (typeof (char)), sw), "#2");
71 Assert.AreEqual (typeof(DateTime).FullName, Generate (new CodeTypeReferenceExpression (typeof (DateTime)), sw), "#3");
73 Assert.AreEqual ("short", Generate (new CodeTypeReferenceExpression (typeof (short)), sw), "#4");
75 Assert.AreEqual ("int", Generate (new CodeTypeReferenceExpression (typeof (int)), sw), "#5");
77 Assert.AreEqual ("long", Generate (new CodeTypeReferenceExpression (typeof (long)), sw), "#6");
79 Assert.AreEqual ("object", Generate (new CodeTypeReferenceExpression (typeof (object)), sw), "#7");
81 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression (typeof (void)), sw), "#8");
83 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression ((string) null), sw), "#9");
85 Assert.AreEqual ("void", Generate (new CodeTypeReferenceExpression (""), sw), "#10");
88 Assert.AreEqual ("byte", Generate (new CodeTypeReferenceExpression (typeof (byte)), sw), "#11");
90 Assert.AreEqual ("decimal", Generate (new CodeTypeReferenceExpression (typeof (decimal)), sw), "#12");
92 Assert.AreEqual ("double", Generate (new CodeTypeReferenceExpression (typeof (double)), sw), "#13");
94 Assert.AreEqual ("sbyte", Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#14");
96 Assert.AreEqual ("ushort", Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#15");
98 Assert.AreEqual ("uint", Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#16");
100 Assert.AreEqual ("ulong", Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#17");
102 Assert.AreEqual ("float", Generate (new CodeTypeReferenceExpression (typeof (float)), sw), "#18");
105 Assert.AreEqual (typeof (byte).FullName, Generate (new CodeTypeReferenceExpression (typeof (byte)), sw), "#19");
107 Assert.AreEqual (typeof (decimal).FullName, Generate (new CodeTypeReferenceExpression (typeof (decimal)), sw), "#20");
109 Assert.AreEqual (typeof (double).FullName, Generate (new CodeTypeReferenceExpression (typeof (double)), sw), "#21");
111 Assert.AreEqual (typeof (sbyte).FullName, Generate (new CodeTypeReferenceExpression (typeof (sbyte)), sw), "#22");
113 Assert.AreEqual (typeof (ushort).FullName, Generate (new CodeTypeReferenceExpression (typeof (ushort)), sw), "#23");
115 Assert.AreEqual (typeof (uint).FullName, Generate (new CodeTypeReferenceExpression (typeof (uint)), sw), "#24");
117 Assert.AreEqual (typeof (ulong).FullName, Generate (new CodeTypeReferenceExpression (typeof (ulong)), sw), "#25");
119 Assert.AreEqual (typeof (float).FullName, Generate (new CodeTypeReferenceExpression (typeof (float)), sw), "#26");
126 private string Generate (CodeExpression expression, StringWriter sw)
128 generator.GenerateCodeFromExpression (expression, sw, options);
129 return sw.ToString ();
134 public void ReferencedTest ()
136 codeUnit.ReferencedAssemblies.Add ("System.dll");
138 Assertion.AssertEquals ("", Code);