tester.Run();
}
-void FileSystemWatcherTestCase::TestNoEventsAfterRemove()
+namespace
+{
+
+// We can't define this class locally inside TestNoEventsAfterRemove() for some
+// reason with g++ 4.0 under OS X 10.5, it results in the following mysterious
+// error:
+//
+// /var/tmp//ccTkNCkc.s:unknown:Non-global symbol:
+// __ZThn80_ZN25FileSystemWatcherTestCase23TestNoEventsAfterRemoveEvEN11EventTester6NotifyEv.eh
+// can't be a weak_definition
+//
+// So define this class outside the function instead.
+class NoEventsAfterRemoveEventTester : public EventHandler,
+ public wxTimer
{
- class EventTester : public EventHandler,
- public wxTimer
+public:
+ NoEventsAfterRemoveEventTester()
{
- public:
- EventTester()
- {
- // We need to use an inactivity timer as we never get any file
- // system events in this test, so we consider that the test is
- // finished when this 1s timeout expires instead of, as usual,
- // stopping after getting the file system events.
- Start(1000, true);
- }
+ // We need to use an inactivity timer as we never get any file
+ // system events in this test, so we consider that the test is
+ // finished when this 1s timeout expires instead of, as usual,
+ // stopping after getting the file system events.
+ Start(1000, true);
+ }
- virtual void GenerateEvent()
- {
- m_watcher->Remove(EventGenerator::GetWatchDir());
- CPPUNIT_ASSERT(eg.CreateFile());
- }
+ virtual void GenerateEvent()
+ {
+ m_watcher->Remove(EventGenerator::GetWatchDir());
+ CPPUNIT_ASSERT(eg.CreateFile());
+ }
- virtual void CheckResult()
- {
- CPPUNIT_ASSERT( m_events.empty() );
- }
+ virtual void CheckResult()
+ {
+ CPPUNIT_ASSERT( m_events.empty() );
+ }
- virtual wxFileSystemWatcherEvent ExpectedEvent()
- {
- CPPUNIT_FAIL( "Shouldn't be called" );
+ virtual wxFileSystemWatcherEvent ExpectedEvent()
+ {
+ CPPUNIT_FAIL( "Shouldn't be called" );
- return wxFileSystemWatcherEvent(wxFSW_EVENT_ERROR);
- }
+ return wxFileSystemWatcherEvent(wxFSW_EVENT_ERROR);
+ }
- virtual void Notify()
- {
- SendIdle();
- }
- };
+ virtual void Notify()
+ {
+ SendIdle();
+ }
+};
- EventTester tester;
+} // anonymous namespace
+
+void FileSystemWatcherTestCase::TestNoEventsAfterRemove()
+{
+ NoEventsAfterRemoveEventTester tester;
tester.Run();
}