~ubuntu-branches/ubuntu/utopic/inkscape/utopic-proposed

« back to all changes in this revision

Viewing changes to inkscape-0.47pre1/cxxtest/cxxtest/TestRunner.h

  • Committer: Bazaar Package Importer
  • Author(s): Bryce Harrington
  • Date: 2009-07-02 17:09:45 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20090702170945-nn6d6zswovbwju1t
Tags: 0.47~pre1-0ubuntu1
* New upstream release.
  - Don't constrain maximization on small resolution devices (pre0)
    (LP: #348842)
  - Fixes segfault on startup (pre0)
    (LP: #391149)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __cxxtest_TestRunner_h__
 
2
#define __cxxtest_TestRunner_h__
 
3
 
 
4
//
 
5
// TestRunner is the class that runs all the tests.
 
6
// To use it, create an object that implements the TestListener
 
7
// interface and call TestRunner::runAllTests( myListener );
 
8
// 
 
9
 
 
10
#include <cxxtest/TestListener.h>
 
11
#include <cxxtest/RealDescriptions.h>
 
12
#include <cxxtest/TestSuite.h>
 
13
#include <cxxtest/TestTracker.h>
 
14
 
 
15
namespace CxxTest 
 
16
{
 
17
    class TestRunner
 
18
    {
 
19
    public:
 
20
        static void runAllTests( TestListener &listener )
 
21
        {
 
22
            tracker().setListener( &listener );
 
23
            _TS_TRY { TestRunner().runWorld(); }
 
24
            _TS_LAST_CATCH( { tracker().failedTest( __FILE__, __LINE__, "Exception thrown from world" ); } );
 
25
            tracker().setListener( 0 );
 
26
        }
 
27
 
 
28
        static void runAllTests( TestListener *listener )
 
29
        {
 
30
            if ( listener ) {
 
31
                listener->warning( __FILE__, __LINE__, "Deprecated; Use runAllTests( TestListener & )" );
 
32
                runAllTests( *listener );
 
33
            }
 
34
        }        
 
35
    
 
36
    private:
 
37
        void runWorld()
 
38
        {
 
39
            RealWorldDescription wd;
 
40
            WorldGuard sg;
 
41
            
 
42
            tracker().enterWorld( wd );
 
43
            if ( wd.setUp() ) {
 
44
                for ( SuiteDescription *sd = wd.firstSuite(); sd; sd = sd->next() )
 
45
                    if ( sd->active() )
 
46
                        runSuite( *sd );
 
47
            
 
48
                wd.tearDown();
 
49
            }
 
50
            tracker().leaveWorld( wd );
 
51
        }
 
52
    
 
53
        void runSuite( SuiteDescription &sd )
 
54
        {
 
55
            StateGuard sg;
 
56
            
 
57
            tracker().enterSuite( sd );
 
58
            if ( sd.setUp() ) {
 
59
                for ( TestDescription *td = sd.firstTest(); td; td = td->next() )
 
60
                    if ( td->active() )
 
61
                        runTest( *td );
 
62
 
 
63
                sd.tearDown();
 
64
            }
 
65
            tracker().leaveSuite( sd );
 
66
        }
 
67
 
 
68
        void runTest( TestDescription &td )
 
69
        {
 
70
            StateGuard sg;
 
71
            
 
72
            tracker().enterTest( td );
 
73
            if ( td.setUp() ) {
 
74
                td.run();
 
75
                td.tearDown();
 
76
            }
 
77
            tracker().leaveTest( td );
 
78
        }
 
79
        
 
80
        class StateGuard
 
81
        {
 
82
#ifdef _CXXTEST_HAVE_EH
 
83
            bool _abortTestOnFail;
 
84
#endif // _CXXTEST_HAVE_EH
 
85
            unsigned _maxDumpSize;
 
86
            
 
87
        public:
 
88
            StateGuard()
 
89
            {
 
90
#ifdef _CXXTEST_HAVE_EH
 
91
                _abortTestOnFail = abortTestOnFail();
 
92
#endif // _CXXTEST_HAVE_EH
 
93
                _maxDumpSize = maxDumpSize();
 
94
            }
 
95
            
 
96
            ~StateGuard()
 
97
            {
 
98
#ifdef _CXXTEST_HAVE_EH
 
99
                setAbortTestOnFail( _abortTestOnFail );
 
100
#endif // _CXXTEST_HAVE_EH
 
101
                setMaxDumpSize( _maxDumpSize );
 
102
            }
 
103
        };
 
104
 
 
105
        class WorldGuard : public StateGuard
 
106
        {
 
107
        public:
 
108
            WorldGuard() : StateGuard()
 
109
            {
 
110
#ifdef _CXXTEST_HAVE_EH
 
111
                setAbortTestOnFail( CXXTEST_DEFAULT_ABORT );
 
112
#endif // _CXXTEST_HAVE_EH
 
113
                setMaxDumpSize( CXXTEST_MAX_DUMP_SIZE );
 
114
            }
 
115
        };
 
116
    };
 
117
 
 
118
    //
 
119
    // For --no-static-init
 
120
    //
 
121
    void initialize();
 
122
};
 
123
 
 
124
 
 
125
#endif // __cxxtest_TestRunner_h__