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 );
 | 
						|
}
 |