summaryrefslogtreecommitdiff
path: root/csharp/test/TestCommon/TestApp.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/test/TestCommon/TestApp.cs')
-rw-r--r--csharp/test/TestCommon/TestApp.cs152
1 files changed, 152 insertions, 0 deletions
diff --git a/csharp/test/TestCommon/TestApp.cs b/csharp/test/TestCommon/TestApp.cs
new file mode 100644
index 00000000000..007fb9b83a4
--- /dev/null
+++ b/csharp/test/TestCommon/TestApp.cs
@@ -0,0 +1,152 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2015 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+using System;
+
+#if SILVERLIGHT
+using System.Collections.Generic;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+#endif
+
+namespace TestCommon
+{
+ public abstract class TestApp
+ {
+ protected static void test(bool b)
+ {
+ if(!b)
+ {
+ System.Diagnostics.Debug.Assert(false);
+ throw new System.Exception();
+ }
+ }
+
+#if !SILVERLIGHT
+ static
+#endif
+ public void Write(string msg)
+ {
+#if SILVERLIGHT
+ Console.Out.Write(msg);
+#else
+ Console.Out.Write(msg);
+#endif
+ }
+
+#if !SILVERLIGHT
+ static
+#endif
+ public void WriteLine(string msg)
+ {
+#if SILVERLIGHT
+ Console.Out.WriteLine(msg);
+#else
+ Console.Out.WriteLine(msg);
+#endif
+ }
+
+#if !SILVERLIGHT
+ static
+#endif
+ public void Flush()
+ {
+ Console.Out.Flush();
+ }
+
+#if SILVERLIGHT
+
+ public abstract void run(Ice.Communicator communicator);
+
+ public virtual Ice.InitializationData
+ initData()
+ {
+ return new Ice.InitializationData();
+ }
+
+ public void main()
+ {
+ int args = Application.Current.Host.Source.OriginalString.IndexOf("?");
+ Dictionary<string, string> properties = new Dictionary<string, string>();
+ if(args > 0 && args + 1 < Application.Current.Host.Source.OriginalString.Length)
+ {
+ string[] props = Application.Current.Host.Source.OriginalString.Substring(args + 1).Split(';');
+ foreach (string prop in props)
+ {
+ int pos = prop.IndexOf('=');
+ if(pos > 0)
+ {
+ properties[prop.Substring(0, pos)] = prop.Substring(pos + 1);
+ }
+ }
+ }
+
+ System.Threading.Thread t = new System.Threading.Thread(() =>
+ {
+ Ice.Communicator communicator = null;
+ try
+ {
+ Ice.InitializationData initializationData = initData();
+ if(initializationData.properties == null)
+ {
+ initializationData.properties = Ice.Util.createProperties();
+ }
+
+ foreach(KeyValuePair<String,String> entry in properties)
+ {
+ if(initializationData.properties.getProperty(entry.Key).Equals(""))
+ {
+ initializationData.properties.setProperty(entry.Key, entry.Value);
+ }
+ }
+
+ communicator = Ice.Util.initialize(initializationData);
+ run(communicator);
+ completed();
+ }
+ catch(System.Exception ex)
+ {
+ failed(ex);
+ }
+ finally
+ {
+ if(communicator != null)
+ {
+ communicator.destroy();
+ }
+ }
+ });
+ t.Start();
+ }
+
+ public void completed()
+ {
+ Deployment.Current.Dispatcher.BeginInvoke(delegate()
+ {
+ Application.Current.MainWindow.Close();
+ });
+ }
+
+ public void failed(System.Exception ex)
+ {
+ System.Environment.ExitCode = 1;
+ WriteLine(Environment.NewLine + "Test Failed:");
+ WriteLine("Exception: " + ex.ToString());
+ completed();
+ }
+#endif
+ }
+}