10bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project/*
20bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * COPYRIGHT AND PERMISSION NOTICE
30bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
40bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * Copyright (c) 2003 Embedded Unit Project
50bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
60bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * All rights reserved.
70bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
80bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * Permission is hereby granted, free of charge, to any person obtaining
90bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * a copy of this software and associated documentation files (the
100bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * "Software"), to deal in the Software without restriction, including
110bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * without limitation the rights to use, copy, modify, merge, publish,
120bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * distribute, and/or sell copies of the Software, and to permit persons
130bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * to whom the Software is furnished to do so, provided that the above
140bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * copyright notice(s) and this permission notice appear in all copies
150bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * of the Software and that both the above copyright notice(s) and this
160bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * permission notice appear in supporting documentation.
170bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
180bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
190bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
200bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
210bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
220bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
230bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
240bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
250bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
260bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
270bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
280bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * Except as contained in this notice, the name of a copyright holder
290bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * shall not be used in advertising or otherwise to promote the sale,
300bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * use or other dealings in this Software without prior written
310bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * authorization of the copyright holder.
320bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project *
330bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project * $Id: TestCaller.h,v 1.7 2004/02/10 16:19:29 arms22 Exp $
340bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project */
350bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project#ifndef	__TESTCALLER_H__
360bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project#define	__TESTCALLER_H__
370bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
380bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projecttypedef struct __TestFixture	TestFixture;
390bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projecttypedef struct __TestFixture*	TestFixtureRef;/*downward compatible*/
400bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
410bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projectstruct __TestFixture {
420bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	char *name;
430bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	void(*test)(void);
440bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project};
450bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
460bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project#define new_TestFixture(name,test)\
470bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	{\
480bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		name,\
490bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		test,\
500bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	}
510bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
520bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projecttypedef struct __TestCaller		TestCaller;
530bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projecttypedef struct __TestCaller*	TestCallerRef;/*downward compatible*/
540bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
550bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projectstruct __TestCaller {
560bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	TestImplement* isa;
570bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	char *name;
580bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	void(*setUp)(void);
590bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	void(*tearDown)(void);
600bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	int numberOfFixtuers;
610bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	TestFixture	*fixtuers;
620bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project};
630bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
640bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Projectextern const TestImplement TestCallerImplement;
650bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
660bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project#define new_TestCaller(name,sup,tdw,numberOfFixtuers,fixtuers)\
670bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	{\
680bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		(TestImplement*)&TestCallerImplement,\
690bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		name,\
700bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		sup,\
710bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		tdw,\
720bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		numberOfFixtuers,\
730bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project		fixtuers,\
740bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project	}
750bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project
760bea8c49ca8726e4da085bf6cfff41c06aef20e7The Android Open Source Project#endif/*__TESTCALLER_H__*/
77