summaryrefslogtreecommitdiffstats
path: root/qtsharp/src/tests/lookuptest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'qtsharp/src/tests/lookuptest.cs')
-rw-r--r--qtsharp/src/tests/lookuptest.cs50
1 files changed, 50 insertions, 0 deletions
diff --git a/qtsharp/src/tests/lookuptest.cs b/qtsharp/src/tests/lookuptest.cs
new file mode 100644
index 00000000..9882678f
--- /dev/null
+++ b/qtsharp/src/tests/lookuptest.cs
@@ -0,0 +1,50 @@
+// Demonstrates that auto-boxing of foreign C++ objects works.
+// Set QTCSHARP_DEBUG to true in your environment to see this work.
+//
+// TODO
+// o Turn this into an nunit test.
+// o Mono won't let this test call LookupObject because
+// it is marked 'internal', even though they're both
+// in the same namespace. Mono bug?
+
+namespace Qt {
+
+ using Qt;
+ using System;
+
+ public class LookupTest : QVBox, IDisposable {
+
+ public LookupTest() : base (null)
+ {
+ QPushButton button = new QPushButton ("Quit", this);
+ QPushButton button2 = (QPushButton)QtSupport.LookupObject (button.Ptr); // Lookup a child object that exists in C#
+
+ if (button.GetHashCode () != button2.GetHashCode ())
+ Console.WriteLine ("ERROR: Hash codes differ for button and button2!");
+
+ QSize size = button2.SizeHint (); // Wrap a non-C# object. Lookup is called from the C# sizeHint method.
+ QSize size2 = (QSize)QtSupport.LookupObject (size.Ptr);
+
+ if (size.GetHashCode () != size2.GetHashCode ())
+ Console.WriteLine ("ERROR: Hash codes differ for size and size2!");
+
+ Connect (button, SIGNAL ("clicked()"), QObject.qApp, SLOT ("Quit()"));
+ }
+
+ public static void Main (string[] args)
+ {
+ QApplication a = new QApplication (args);
+ LookupTest lt = new LookupTest ();
+ a.SetMainWidget (lt);
+ lt.Show ();
+
+ LookupTest lt2 = (LookupTest)QtSupport.LookupObject (lt.Ptr); // Lookup a root object that exists in C#
+
+ if (lt.GetHashCode () != lt2.GetHashCode ())
+ Console.WriteLine ("ERROR: Hash codes differ for lt and lt2!");
+
+ a.Exec ();
+ lt.Dispose ();
+ }
+ }
+}