]>
Commit | Line | Data |
---|---|---|
7db064f6 JS |
1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // Name: tests/misc/typeinfotest.cpp | |
3 | // Purpose: Test typeinfo.h | |
4 | // Author: Jaakko Salli | |
7db064f6 JS |
5 | // Copyright: (c) the wxWidgets team |
6 | // Licence: wxWindows licence | |
7 | /////////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | #include "testprec.h" | |
10 | ||
11 | #ifdef __BORLANDC__ | |
12 | # pragma hdrstop | |
13 | #endif | |
14 | ||
15 | #include "wx/typeinfo.h" | |
16 | ||
17 | // ---------------------------------------------------------------------------- | |
18 | // test class | |
19 | // ---------------------------------------------------------------------------- | |
20 | ||
21 | class TypeInfoTestCase : public CppUnit::TestCase | |
22 | { | |
23 | public: | |
24 | TypeInfoTestCase() { } | |
25 | ||
26 | private: | |
27 | CPPUNIT_TEST_SUITE( TypeInfoTestCase ); | |
28 | CPPUNIT_TEST( Test ); | |
29 | CPPUNIT_TEST_SUITE_END(); | |
30 | ||
31 | void Test(); | |
32 | ||
33 | DECLARE_NO_COPY_CLASS(TypeInfoTestCase) | |
34 | }; | |
35 | ||
36 | // register in the unnamed registry so that these tests are run by default | |
37 | CPPUNIT_TEST_SUITE_REGISTRATION( TypeInfoTestCase ); | |
38 | ||
e3778b4d | 39 | // also include in its own registry so that these tests can be run alone |
7db064f6 JS |
40 | CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TypeInfoTestCase, "TypeInfoTestCase" ); |
41 | ||
42 | ||
43 | namespace UserNameSpace { | |
44 | class UserType1 | |
45 | { | |
46 | WX_DECLARE_TYPEINFO_INLINE(UserType1) | |
47 | public: | |
48 | virtual ~UserType1() { } | |
49 | }; | |
50 | } | |
51 | ||
52 | class UserType1 | |
53 | { | |
54 | WX_DECLARE_TYPEINFO_INLINE(UserType1) | |
55 | public: | |
56 | virtual ~UserType1() { } | |
57 | }; | |
58 | ||
59 | class UserType2 | |
60 | { | |
61 | WX_DECLARE_TYPEINFO(UserType2) | |
62 | public: | |
63 | virtual ~UserType2() { } | |
64 | }; | |
65 | ||
66 | WX_DEFINE_TYPEINFO(UserType2) | |
67 | ||
68 | void TypeInfoTestCase::Test() | |
69 | { | |
70 | UserNameSpace::UserType1 uns_ut1; | |
71 | UserNameSpace::UserType1* uns_ut1_p = new UserNameSpace::UserType1(); | |
72 | UserType1 ut1; | |
73 | UserType1* ut1_p = new UserType1(); | |
74 | UserType2 ut2; | |
75 | UserType2* ut2_p = new UserType2(); | |
76 | ||
77 | // These type comparison should match | |
78 | CPPUNIT_ASSERT(wxTypeId(uns_ut1) == wxTypeId(*uns_ut1_p)); | |
79 | CPPUNIT_ASSERT(wxTypeId(ut1) == wxTypeId(*ut1_p)); | |
80 | CPPUNIT_ASSERT(wxTypeId(ut2) == wxTypeId(*ut2_p)); | |
81 | ||
82 | // These type comparison should not match | |
83 | CPPUNIT_ASSERT(wxTypeId(uns_ut1) != wxTypeId(ut1)); | |
84 | CPPUNIT_ASSERT(wxTypeId(uns_ut1) != wxTypeId(ut2)); | |
85 | CPPUNIT_ASSERT(wxTypeId(ut1) != wxTypeId(ut2)); | |
86 | ||
87 | delete uns_ut1_p; | |
88 | delete ut1_p; | |
89 | delete ut2_p; | |
90 | } | |
91 |