diff options
Diffstat (limited to 'qtsharp/src/tests/lookuptest.cs')
-rw-r--r-- | qtsharp/src/tests/lookuptest.cs | 50 |
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 (); + } + } +} |