]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/propgrid/tests.cpp
RCS-IDs
[wxWidgets.git] / samples / propgrid / tests.cpp
index 4f13184f4c38831734861fdbd10218b36c379f87..7dfc121822113c1d628ae2bccd378a7545e713cb 100644 (file)
 #include "sampleprops.h"
 
 
-// -----------------------------------------------------------------------
-// Declare custom test properties
-// -----------------------------------------------------------------------
-
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty)
-
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty)
-
-
 // -----------------------------------------------------------------------
 // wxTestCustomFlagsProperty
 // -----------------------------------------------------------------------
@@ -73,18 +64,6 @@ static const long _fs_framestyle_values[] = {
     wxFRAME_SHAPED
 };
 
-
-WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty,
-                                      _fs_framestyle_labels,
-                                      _fs_framestyle_values,
-                                      wxDEFAULT_FRAME_STYLE)
-
-WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty,
-                                      _fs_framestyle_labels,
-                                      _fs_framestyle_values,
-                                      wxCAPTION)
-
-
 // Colour labels. Last (before NULL, if any) must be Custom.
 static const wxChar* mycolprop_labels[] = {
     wxT("Black"),
@@ -243,11 +222,6 @@ public:
 
 void FormMain::AddTestProperties( wxPropertyGridPage* pg )
 {
-    pg->Append( new wxTestCustomFlagsProperty(wxT("Custom FlagsProperty"), wxPG_LABEL ) );
-    pg->SetPropertyEditor( wxT("Custom FlagsProperty"), wxPG_EDITOR(TextCtrlAndButton) );
-
-    pg->Append( new wxTestCustomEnumProperty(wxT("Custom EnumProperty"), wxPG_LABEL ) );
-
     pg->Append( new wxMyColourProperty(wxT("CustomColourProperty1")) );
 
     pg->SetPropertyHelpString(wxT("CustomColourProperty1"),
@@ -264,7 +238,7 @@ void FormMain::AddTestProperties( wxPropertyGridPage* pg )
 
     pg->Append( new MyColourProperty3(wxT("CustomColourProperty3"), wxPG_LABEL, *wxGREEN) );
     pg->GetProperty(wxT("CustomColourProperty3"))->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED);
-    pg->SetPropertyEditor( wxT("CustomColourProperty3"), wxPG_EDITOR(ComboBox) );
+    pg->SetPropertyEditor( wxT("CustomColourProperty3"), wxPGEditor_ComboBox );
 
     pg->SetPropertyHelpString(wxT("CustomColourProperty3"),
         wxT("This is a MyColourProperty3 from the sample app. ")
@@ -739,6 +713,10 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
     {
         RT_START_TEST(SetPropertyValue_and_GetPropertyValue)
 
+        // In this section, mixed up usage of wxT("propname") and "propname"
+        // in wxPropertyGridInterface functions is intentional.
+        // Purpose is to test wxPGPropArgCls ctors.
+
         //pg = (wxPropertyGrid*) NULL;
 
         wxArrayString test_arrstr_1;
@@ -777,13 +755,12 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         pgman->SetPropertyValue(wxT("FloatProperty"),1024.0000000001);
         pgman->SetPropertyValue(wxT("BoolProperty"),FALSE);
         pgman->SetPropertyValue(wxT("EnumProperty"),120);
-        pgman->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET1);
         pgman->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_1);
         wxColour emptyCol;
         pgman->SetPropertyValue(wxT("ColourProperty"),emptyCol);
         pgman->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxBLACK);
-        pgman->SetPropertyValue(wxT("Size"),wxSize(150,150));
-        pgman->SetPropertyValue(wxT("Position"),wxPoint(150,150));
+        pgman->SetPropertyValue(wxT("Size"),WXVARIANT(wxSize(150,150)));
+        pgman->SetPropertyValue(wxT("Position"),WXVARIANT(wxPoint(150,150)));
         pgman->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_1);
 #if wxUSE_DATETIME
         pgman->SetPropertyValue(wxT("DateProperty"),dt1);
@@ -804,15 +781,13 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
             RT_FAILURE();
         if ( pg->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_1 )
             RT_FAILURE();
-        if ( pg->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET1 )
-            RT_FAILURE();
         wxColour col;
         col << pgman->GetPropertyValue(wxT("ColourProperty"));
         if ( col != *wxBLACK )
             RT_FAILURE();
-        if ( pg->GetPropertyValueAsSize(wxT("Size")) != wxSize(150,150) )
+        if ( wxSizeRefFromVariant(pg->GetPropertyValue(wxT("Size"))) != wxSize(150,150) )
             RT_FAILURE();
-        if ( pg->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(150,150) )
+        if ( wxPointRefFromVariant(pg->GetPropertyValue(wxT("Position"))) != wxPoint(150,150) )
             RT_FAILURE();
         if ( !(pg->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_1) )
             RT_FAILURE();
@@ -831,10 +806,9 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         pg->SetPropertyValue(wxT("BoolProperty"),TRUE);
         pg->SetPropertyValue(wxT("EnumProperty"),80);
         pg->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_2);
-        pg->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET2);
         pg->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxWHITE);
-        pg->SetPropertyValue(wxT("Size"),wxSize(300,300));
-        pg->SetPropertyValue(wxT("Position"),wxPoint(300,300));
+        pg->SetPropertyValue(wxT("Size"),WXVARIANT(wxSize(300,300)));
+        pg->SetPropertyValue(wxT("Position"),WXVARIANT(wxPoint(300,300)));
         pg->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_2);
 #if wxUSE_DATETIME
         pg->SetPropertyValue(wxT("DateProperty"),dt2);
@@ -856,14 +830,12 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
             RT_FAILURE();
         if ( pgman->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_2 )
             RT_FAILURE();
-        if ( pgman->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET2 )
-            RT_FAILURE();
         col << pgman->GetPropertyValue(wxT("ColourProperty"));
         if ( col != *wxWHITE )
             RT_FAILURE();
-        if ( pgman->GetPropertyValueAsSize(wxT("Size")) != wxSize(300,300) )
+        if ( wxSizeRefFromVariant(pgman->GetPropertyValue(wxT("Size"))) != wxSize(300,300) )
             RT_FAILURE();
-        if ( pgman->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(300,300) )
+        if ( wxPointRefFromVariant(pgman->GetPropertyValue(wxT("Position"))) != wxPoint(300,300) )
             RT_FAILURE();
         if ( !(pgman->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_2) )
             RT_FAILURE();
@@ -875,6 +847,84 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         pgman->SetPropertyValue(wxT("IntProperty"),wxLL(-80000000000));
         if ( pgman->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(-80000000000) )
             RT_FAILURE();
+
+        //
+        // Flexible wx(U)LongLong << operator safety conformance tests
+        wxPGProperty* prop;
+        wxLongLong ll;
+        wxULongLong ull;
+
+        prop = pgman->GetProperty(wxT("IntProperty"));
+        prop->SetValue(128);
+        ll << prop->GetValue();
+        if ( ll != 128 )
+            RT_FAILURE();
+
+        prop->SetValue(WXVARIANT(wxLL(68719476736)));
+        ll << prop->GetValue();
+        if ( ll.GetValue() != wxLL(68719476736) )
+            RT_FAILURE();
+
+#if wxUSE_LONGLONG_NATIVE
+        wxLongLong_t ll_t;
+        ll_t << prop->GetValue();
+        if ( ll_t != wxLL(68719476736) )
+            RT_FAILURE();
+#endif
+
+        prop->SetValue(256);
+        ll << prop->GetValue();
+        if ( ll != 256 )
+            RT_FAILURE();
+
+        prop = pgman->GetProperty(wxT("UIntProperty"));
+        prop->SetValue(128);
+        ull << prop->GetValue();
+        if ( ull != 128 )
+            RT_FAILURE();
+
+        prop->SetValue(WXVARIANT(wxULL(68719476739)));
+        ull << prop->GetValue();
+        if ( ull.GetValue() != wxULL(68719476739) )
+            RT_FAILURE();
+
+#if wxUSE_LONGLONG_NATIVE
+        wxULongLong_t ull_t;
+        ull_t << prop->GetValue();
+        if ( ull_t != wxLL(68719476739) )
+            RT_FAILURE();
+#endif
+
+        prop->SetValue(256);
+        ull << prop->GetValue();
+        if ( ull != 256 )
+            RT_FAILURE();
+
+        // Make sure children of composite parent get updated as well
+        // Original string value: "Lamborghini Diablo SV; 5707; [300; 3.9; 8.6] 300000"
+
+        //
+        // This updates children as well
+        wxString nvs = "Lamborghini Diablo XYZ; 5707; [100; 3.9; 8.6] 3000002";
+        pgman->SetPropertyValue("Car", nvs);
+
+        if ( pgman->GetPropertyValueAsString("Car.Model") != "Lamborghini Diablo XYZ" )
+        {
+            wxLogDebug("Did not match: Car.Model=%s", pgman->GetPropertyValueAsString("Car.Model").c_str());
+            RT_FAILURE();
+        }
+
+        if ( pgman->GetPropertyValueAsInt("Car.Speeds.Max. Speed (mph)") != 100 )
+        {
+            wxLogDebug("Did not match: Car.Speeds.Max. Speed (mph)=%s", pgman->GetPropertyValueAsString("Car.Speeds.Max. Speed (mph)").c_str());
+            RT_FAILURE();
+        }
+
+        if ( pgman->GetPropertyValueAsInt("Car.Price ($)") != 3000002 )
+        {
+            wxLogDebug("Did not match: Car.Price ($)=%s", pgman->GetPropertyValueAsString("Car.Price ($)").c_str());
+            RT_FAILURE();
+        }
     }
 
     {
@@ -887,7 +937,6 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         pgman->SetPropertyValueUnspecified(wxT("BoolProperty"));
         pgman->SetPropertyValueUnspecified(wxT("EnumProperty"));
         pgman->SetPropertyValueUnspecified(wxT("ArrayStringProperty"));
-        pgman->SetPropertyValueUnspecified(wxT("Custom FlagsProperty"));
         pgman->SetPropertyValueUnspecified(wxT("ColourProperty"));
         pgman->SetPropertyValueUnspecified(wxT("Size"));
         pgman->SetPropertyValueUnspecified(wxT("Position"));
@@ -897,6 +946,21 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
 #endif
     }
 
+    {
+        RT_START_TEST(Attributes)
+
+        wxPGProperty* prop = pgman->GetProperty(wxT("StringProperty"));
+        prop->SetAttribute(wxT("Dummy Attribute"), (long)15);
+
+        if ( prop->GetAttribute(wxT("Dummy Attribute")).GetLong() != 15 )
+            RT_FAILURE();
+
+        prop->SetAttribute(wxT("Dummy Attribute"), wxVariant());
+
+        if ( !prop->GetAttribute(wxT("Dummy Attribute")).IsNull() )
+            RT_FAILURE();
+    }
+
     {
         wxPropertyGridPage* page1;
         wxPropertyGridPage* page2;
@@ -993,6 +1057,24 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         }
     }
 
+    {
+        RT_START_TEST(Choice_Manipulation)
+
+        wxPGProperty* enumProp = pgman->GetProperty(wxT("EnumProperty"));
+
+        pgman->SelectPage(2);
+        pgman->SelectProperty(enumProp);
+        wxASSERT(pgman->GetGrid()->GetSelection() == enumProp);
+
+        const wxPGChoices& choices = enumProp->GetChoices();
+        int ind = enumProp->InsertChoice(wxT("New Choice"), choices.GetCount()/2);
+        enumProp->DeleteChoice(ind);
+
+        // Recreate the original grid
+        CreateGrid( -1, -1 );
+        pgman = m_pPropGridManager;
+    }
+
     //if ( !(pgman->GetWindowStyleFlag()&wxPG_HIDE_CATEGORIES) )
     {
         RT_START_TEST(RandomCollapse)
@@ -1197,11 +1279,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         //
         // Ok, this time only hide half of them
         arr1 = GetPropertiesInRandomOrder(page);
-#if wxCHECK_VERSION(2,8,0)
         arr1.resize(arr1.size()/2);
-#else
-        arr1.SetCount(arr1.size()/2);
-#endif
 
         if ( !_failed_ )
         {