summaryrefslogtreecommitdiff
path: root/dbtests/framework.h
diff options
context:
space:
mode:
Diffstat (limited to 'dbtests/framework.h')
-rw-r--r--dbtests/framework.h199
1 files changed, 0 insertions, 199 deletions
diff --git a/dbtests/framework.h b/dbtests/framework.h
deleted file mode 100644
index 29ba58bd96b..00000000000
--- a/dbtests/framework.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// framework.h
-
-/**
-* Copyright (C) 2008 10gen Inc.
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License, version 3,
-* as published by the Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
-
- simple portable regression system
- */
-
-#include "../pch.h"
-
-#define ASSERT_EXCEPTION(a,b) \
- try { \
- a; \
- mongo::regression::assert_fail( #a , __FILE__ , __LINE__ ); \
- } catch ( b& ){ \
- mongo::regression::assert_pass(); \
- }
-
-
-
-#define ASSERT_EQUALS(a,b) (mongo::regression::MyAsserts( #a , #b , __FILE__ , __LINE__ ) ).ae( (a) , (b) )
-#define ASSERT_NOT_EQUALS(a,b) (mongo::regression::MyAsserts( #a , #b , __FILE__ , __LINE__ ) ).nae( (a) , (b) )
-
-#define ASSERT(x) (void)( (!(!(x))) ? mongo::regression::assert_pass() : mongo::regression::assert_fail( #x , __FILE__ , __LINE__ ) )
-#define FAIL(x) mongo::regression::fail( #x , __FILE__ , __LINE__ )
-
-#include "../db/instance.h"
-
-namespace mongo {
-
- namespace regression {
-
- class Result;
-
- class TestCase {
- public:
- virtual ~TestCase() {}
- virtual void run() = 0;
- virtual string getName() = 0;
- };
-
- template< class T >
- class TestHolderBase : public TestCase {
- public:
- TestHolderBase() {}
- virtual ~TestHolderBase() {}
- virtual void run() {
- auto_ptr<T> t;
- t.reset( create() );
- t->run();
- }
- virtual T * create() = 0;
- virtual string getName() {
- return demangleName( typeid(T) );
- }
- };
-
- template< class T >
- class TestHolder0 : public TestHolderBase<T> {
- public:
- virtual T * create() {
- return new T();
- }
- };
-
- template< class T , typename A >
- class TestHolder1 : public TestHolderBase<T> {
- public:
- TestHolder1( const A& a ) : _a(a) {}
- virtual T * create() {
- return new T( _a );
- }
- const A& _a;
- };
-
- class Suite {
- public:
- Suite( string name ) : _name( name ) {
- registerSuite( name , this );
- _ran = 0;
- }
-
- virtual ~Suite() {
- if ( _ran ) {
- DBDirectClient c;
- c.dropDatabase( "unittests" );
- }
- }
-
- template<class T>
- void add() {
- _tests.push_back( new TestHolder0<T>() );
- }
-
- template<class T , typename A >
- void add( const A& a ) {
- _tests.push_back( new TestHolder1<T,A>(a) );
- }
-
- Result * run( const string& filter );
-
- static int run( vector<string> suites , const string& filter );
- static int run( int argc , char ** argv , string default_dbpath );
-
-
- protected:
- virtual void setupTests() = 0;
-
- private:
- string _name;
- list<TestCase*> _tests;
- bool _ran;
-
- static map<string,Suite*> * _suites;
-
- void registerSuite( string name , Suite * s );
- };
-
- void assert_pass();
- void assert_fail( const char * exp , const char * file , unsigned line );
- void fail( const char * exp , const char * file , unsigned line );
-
- class MyAssertionException : boost::noncopyable {
- public:
- MyAssertionException() {
- ss << "assertion: ";
- }
- stringstream ss;
- };
-
-
-
- class MyAsserts {
- public:
- MyAsserts( const char * aexp , const char * bexp , const char * file , unsigned line )
- : _aexp( aexp ) , _bexp( bexp ) , _file( file ) , _line( line ) {
-
- }
-
- template<typename A,typename B>
- void ae( A a , B b ) {
- _gotAssert();
- if ( a == b )
- return;
-
- printLocation();
-
- MyAssertionException * e = getBase();
- e->ss << a << " != " << b << endl;
- log() << e->ss.str() << endl;
- throw e;
- }
-
- template<typename A,typename B>
- void nae( A a , B b ) {
- _gotAssert();
- if ( a != b )
- return;
-
- printLocation();
-
- MyAssertionException * e = getBase();
- e->ss << a << " == " << b << endl;
- log() << e->ss.str() << endl;
- throw e;
- }
-
-
- void printLocation();
-
- private:
-
- void _gotAssert();
-
- MyAssertionException * getBase();
-
- string _aexp;
- string _bexp;
- string _file;
- unsigned _line;
- };
-
- }
-}