In Test/System.Diagnostics:
[mono.git] / mcs / class / System / Test / Microsoft.VisualBasic / CodeGeneratorFromExpressionTest.cs
index 76f3f9bad88fa95a850a44f940a43ea4026b5aaa..dd330af656b2b6e9b2d482caf63cdc78317dc31d 100644 (file)
@@ -140,6 +140,16 @@ namespace MonoTests.Microsoft.VisualBasic
                        }
                }
 
+               [Test]
+               public void ArrayIndexerExpressionTest ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               Assert.AreEqual ("x(5)", Generate (new CodeArrayIndexerExpression(new CodeVariableReferenceExpression("x"), new CodePrimitiveExpression(5)), sw), "#1");
+                               sb.Length = 0;
+                       }
+               }
+       
                [Test]
                public void PrimitiveExpressionTest_Char ()
                {
@@ -352,5 +362,166 @@ namespace MonoTests.Microsoft.VisualBasic
                        generator.GenerateCodeFromExpression (expression, sw, options);
                        return sw.ToString ();
                }
+       
+               
+               [Test]
+               public void ArrayCreateExpressionTest ()
+               {
+                       StringBuilder sb;
+
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               Assert.AreEqual ("New Integer() {5}", 
+                                       Generate (new CodeArrayCreateExpression(
+                                                       typeof(int), 
+                                                       new CodeExpression [] {
+                                                               new CodePrimitiveExpression (5)
+                                                               })
+                                               , sw));
+                               sw.Close ();
+                       }
+
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               Assert.AreEqual ("New Integer((5) - 1) {}", 
+                                       Generate (new CodeArrayCreateExpression(
+                                                       typeof(int), 
+                                                       new CodePrimitiveExpression (5))
+                                               , sw));
+                               sw.Close ();
+                       }
+
+
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               Assert.AreEqual ("New String() {\"a\", \"b\", \"c\"}", 
+                                       Generate (new CodeArrayCreateExpression(
+                                                       typeof(string), 
+                                                       new CodeExpression [] {
+                                                               new CodePrimitiveExpression ("a"),
+                                                               new CodePrimitiveExpression ("b"),
+                                                               new CodePrimitiveExpression ("c"),
+                                                               })
+                                               , sw));
+                               sw.Close ();
+                       }
+               }
+               
+               [Test]
+               public void EscapedIdentifierTest ()
+               {
+                       StringBuilder sb;
+                       string code;
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeVariableReferenceExpression ("set"), sw); 
+                               Assert.AreEqual ("[set]", code, "#01");
+                               sw.Close ();
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeTypeReferenceExpression ("set"), sw); 
+                               Assert.AreEqual ("[set]", code, "#02");
+                               sw.Close ();
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodePropertyReferenceExpression (null, "set"), sw); 
+                               Assert.AreEqual ("[set]", code, "#03");
+                               sw.Close ();
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeMethodReferenceExpression (null, "set"), sw); 
+                               Assert.AreEqual ("[set]", code, "#04");
+                               sw.Close ();
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeFieldReferenceExpression (null, "set"), sw); 
+                               Assert.AreEqual ("[set]", code, "#05");
+                               sw.Close ();
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (null, "set"), sw); 
+                               Assert.AreEqual ("setEvent", code, "#06");
+                               sw.Close ();
+                       }
+               }
+               
+               [Test]
+               public void EventReferenceTest ()
+               {
+                       StringBuilder sb;
+                       string code;
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (null, null), sw);
+                               Assert.AreEqual ("[Event]", code, "#01");
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (null, "abc"), sw);
+                               Assert.AreEqual ("abcEvent", code, "#02");
+                       }                       
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (new CodeThisReferenceExpression (), null), sw);
+                               Assert.AreEqual ("Me.Event", code, "#03");
+                       }
+                                               
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (new CodeThisReferenceExpression (), "abc"), sw);
+                               Assert.AreEqual ("Me.abcEvent", code, "#04");
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (new CodePrimitiveExpression ("primitive"), null), sw);
+                               Assert.AreEqual ("\"primitive\".", code, "#05");
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeEventReferenceExpression (new CodePrimitiveExpression ("primitive"), "abc"), sw);
+                               Assert.AreEqual ("\"primitive\".abc", code, "#06");
+                       }
+               }
+               
+               [Test]
+               public void DelegateInvokeTest ()
+               {
+                       StringBuilder sb;
+                       string code;
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeDelegateInvokeExpression (null, new CodePrimitiveExpression ("abc")), sw);
+                               Assert.AreEqual ("RaiseEvent (\"abc\")", code, "#02");
+                       }                       
+                                               
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeDelegateInvokeExpression (new CodeThisReferenceExpression (), new CodePrimitiveExpression ("abc")), sw);
+                               Assert.AreEqual ("RaiseEvent Me(\"abc\")", code, "#04");
+                       }
+                       
+                       sb = new StringBuilder ();
+                       using (StringWriter sw = new StringWriter (sb)) {
+                               code = Generate (new CodeDelegateInvokeExpression (new CodePrimitiveExpression ("primitive"), new CodePrimitiveExpression ("abc")), sw);
+                               Assert.AreEqual ("RaiseEvent \"primitive\"(\"abc\")", code, "#06");
+                       }
+               }
        }
 }