File: label.cpp

package info (click to toggle)
wxpython4.0 4.2.3%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 221,752 kB
  • sloc: cpp: 962,555; python: 230,573; ansic: 170,731; makefile: 51,756; sh: 9,342; perl: 1,564; javascript: 584; php: 326; xml: 200
file content (136 lines) | stat: -rw-r--r-- 4,506 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
///////////////////////////////////////////////////////////////////////////////
// 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"


#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 && (&ampersand)",
        "", // 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 "&amp;" work in markup.
#if wxUSE_MARKUP
    c->SetLabelMarkup("mnemonic in &amp;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("&amp;&amp; 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 );
}