Check that the public methods still behave as expected even if the displayed value is different because it is ellipsized.
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        tests/controls/label.cpp
 | |
| // Purpose:     wxControl and wxStaticText label tests
 | |
| // Author:      Francesco Montorsi
 | |
| // Created:     2010-3-21
 | |
| // Copyright:   (c) 2010 Francesco Montorsi
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // headers
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| #include "testprec.h"
 | |
| 
 | |
| #ifdef __BORLANDC__
 | |
|     #pragma hdrstop
 | |
| #endif
 | |
| 
 | |
| #ifndef WX_PRECOMP
 | |
|     #include "wx/app.h"
 | |
| #endif // WX_PRECOMP
 | |
| 
 | |
| #include "wx/checkbox.h"
 | |
| #include "wx/control.h"
 | |
| #include "wx/scopedptr.h"
 | |
| #include "wx/stattext.h"
 | |
| 
 | |
| #include "wx/generic/stattextg.h"
 | |
| 
 | |
| namespace
 | |
| {
 | |
| 
 | |
| const char* const ORIGINAL_LABEL = "origin label";
 | |
| 
 | |
| // The actual testing function. It will change the label of the provided
 | |
| // control, which is assumed to be ORIGINAL_LABEL initially.
 | |
| void DoTestLabel(wxControl* c)
 | |
| {
 | |
|     CHECK( c->GetLabel() == ORIGINAL_LABEL );
 | |
| 
 | |
|     const wxString testLabelArray[] = {
 | |
|         "label without mnemonics and markup",
 | |
|         "label with &mnemonic",
 | |
|         "label with <span foreground='blue'>some</span> <b>markup</b>",
 | |
|         "label with <span foreground='blue'>some</span> <b>markup</b> and &mnemonic",
 | |
|         "label with an && (ampersand)",
 | |
|         "label with an && (&ersand)",
 | |
|         "", // empty label should work too
 | |
|     };
 | |
| 
 | |
|     for ( unsigned int s = 0; s < WXSIZEOF(testLabelArray); s++ )
 | |
|     {
 | |
|         const wxString& l = testLabelArray[s];
 | |
| 
 | |
|         // GetLabel() should always return the string passed to SetLabel()
 | |
|         c->SetLabel(l);
 | |
|         CHECK( c->GetLabel() == l );
 | |
| 
 | |
|         // GetLabelText() should always return unescaped version of the label
 | |
|         CHECK( c->GetLabelText() == wxControl::RemoveMnemonics(l) );
 | |
| 
 | |
|         // GetLabelText() should always return the string passed to SetLabelText()
 | |
|         c->SetLabelText(l);
 | |
|         CHECK( c->GetLabelText() == l );
 | |
| 
 | |
|         // And GetLabel() should be the escaped version of the text
 | |
|         CHECK( l == wxControl::RemoveMnemonics(c->GetLabel()) );
 | |
|     }
 | |
| 
 | |
|     // Check that both "&" and "&" work in markup.
 | |
| #if wxUSE_MARKUP
 | |
|     c->SetLabelMarkup("mnemonic in &markup");
 | |
|     CHECK( c->GetLabel() == "mnemonic in &markup" );
 | |
|     CHECK( c->GetLabelText() == "mnemonic in markup" );
 | |
| 
 | |
|     c->SetLabelMarkup("mnemonic in &markup");
 | |
|     CHECK( c->GetLabel() == "mnemonic in &markup" );
 | |
|     CHECK( c->GetLabelText() == "mnemonic in markup" );
 | |
| 
 | |
|     c->SetLabelMarkup("&& finally");
 | |
|     CHECK( c->GetLabel() == "&& finally" );
 | |
|     CHECK( c->GetLabelText() == "& finally" );
 | |
| 
 | |
|     c->SetLabelMarkup("&& finally");
 | |
|     CHECK( c->GetLabel() == "&& finally" );
 | |
|     CHECK( c->GetLabelText() == "& finally" );
 | |
| #endif // wxUSE_MARKUP
 | |
| }
 | |
| 
 | |
| } // anonymous namespace
 | |
| 
 | |
| TEST_CASE("wxControl::Label", "[wxControl][label]")
 | |
| {
 | |
|     SECTION("wxStaticText")
 | |
|     {
 | |
|         const wxScopedPtr<wxStaticText>
 | |
|             st(new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL));
 | |
|         DoTestLabel(st.get());
 | |
|     }
 | |
| 
 | |
|     SECTION("wxStaticText/ellipsized")
 | |
|     {
 | |
|         const wxScopedPtr<wxStaticText>
 | |
|             st(new wxStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL,
 | |
|                                 wxDefaultPosition, wxDefaultSize,
 | |
|                                 wxST_ELLIPSIZE_START));
 | |
|         DoTestLabel(st.get());
 | |
|     }
 | |
| 
 | |
|     SECTION("wxGenericStaticText")
 | |
|     {
 | |
|         const wxScopedPtr<wxGenericStaticText>
 | |
|             gst(new wxGenericStaticText(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL));
 | |
|         DoTestLabel(gst.get());
 | |
|     }
 | |
| 
 | |
|     SECTION("wxCheckBox")
 | |
|     {
 | |
|         const wxScopedPtr<wxCheckBox>
 | |
|             cb(new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, ORIGINAL_LABEL));
 | |
|         DoTestLabel(cb.get());
 | |
|     }
 | |
| }
 | |
| 
 | |
| TEST_CASE("wxControl::RemoveMnemonics", "[wxControl][label][mnemonics]")
 | |
| {
 | |
|     CHECK( "mnemonic"  == wxControl::RemoveMnemonics("&mnemonic") );
 | |
|     CHECK( "&mnemonic" == wxControl::RemoveMnemonics("&&mnemonic") );
 | |
|     CHECK( "&mnemonic" == wxControl::RemoveMnemonics("&&&mnemonic") );
 | |
| }
 | |
| 
 | |
| TEST_CASE("wxControl::FindAccelIndex", "[wxControl][label][mnemonics]")
 | |
| {
 | |
|     CHECK( wxControl::FindAccelIndex("foo") == wxNOT_FOUND );
 | |
|     CHECK( wxControl::FindAccelIndex("&foo") == 0 );
 | |
|     CHECK( wxControl::FindAccelIndex("f&oo") == 1 );
 | |
|     CHECK( wxControl::FindAccelIndex("foo && bar") == wxNOT_FOUND );
 | |
|     CHECK( wxControl::FindAccelIndex("foo && &bar") == 6 );
 | |
| }
 |