]> git.saurik.com Git - wxWidgets.git/blob - tests/testprec.h
f7d0e66c5cfbe6cef51863d406bb8196df6a082b
[wxWidgets.git] / tests / testprec.h
1 #include "wx/wxprec.h"
2 #include "wx/cppunit.h"
3
4 // define wxHAVE_U_ESCAPE if the compiler supports \uxxxx character constants
5 #if (defined(__VISUALC__) && (__VISUALC__ >= 1300)) || \
6 (defined(__GNUC__) && (__GNUC__ >= 3))
7 #define wxHAVE_U_ESCAPE
8
9 // and disable warning that using them results in with MSVC 8+
10 #if wxCHECK_VISUALC_VERSION(8)
11 // universal-character-name encountered in source
12 #pragma warning(disable:4428)
13 #endif
14 #endif
15
16 // thrown when assert fails in debug build
17 class TestAssertFailure
18 {
19 public:
20 TestAssertFailure(const wxString& file,
21 int line,
22 const wxString& func,
23 const wxString& cond,
24 const wxString& msg)
25 : m_file(file),
26 m_line(line),
27 m_func(func),
28 m_cond(cond),
29 m_msg(msg)
30 {
31 }
32
33 const wxString m_file;
34 const int m_line;
35 const wxString m_func;
36 const wxString m_cond;
37 const wxString m_msg;
38
39 wxDECLARE_NO_ASSIGN_CLASS(TestAssertFailure);
40 };
41
42 // macro to use for the functions which are supposed to fail an assertion
43 #if wxDEBUG_LEVEL
44 // some old cppunit versions don't define CPPUNIT_ASSERT_THROW so roll our
45 // own
46 #define WX_ASSERT_FAILS_WITH_ASSERT(cond) \
47 { \
48 bool throwsAssert = false; \
49 try { cond ; } \
50 catch ( const TestAssertFailure& ) { throwsAssert = true; } \
51 if ( !throwsAssert ) \
52 CPPUNIT_FAIL("expected assertion not generated"); \
53 }
54 #else
55 // there are no assertions in this build so just check that it fails
56 #define WX_ASSERT_FAILS_WITH_ASSERT(cond) CPPUNIT_ASSERT(!(cond))
57 #endif
58
59 // these functions can be used to hook into wxApp event processing and are
60 // currently used by the events propagation test
61 class WXDLLIMPEXP_FWD_BASE wxEvent;
62
63 typedef int (*FilterEventFunc)(wxEvent&);
64 typedef bool (*ProcessEventFunc)(wxEvent&);
65
66 extern void SetFilterEventFunc(FilterEventFunc func);
67 extern void SetProcessEventFunc(ProcessEventFunc func);
68
69 extern bool IsNetworkAvailable();
70
71 // helper class setting the locale to "C" for its lifetime
72 class CLocaleSetter
73 {
74 public:
75 CLocaleSetter() : m_locOld(setlocale(LC_ALL, "C")) { }
76 ~CLocaleSetter() { setlocale(LC_ALL, m_locOld); }
77
78 private:
79 const char * const m_locOld;
80 wxDECLARE_NO_COPY_CLASS(CLocaleSetter);
81 };