source: trunk/nom/class_c/nomtestcase.c

Last change on this file was 389, checked in by cinc, 16 years ago

Fix for build break on Linux. Now using a more portable function call. Fix for broken garbage collector on linux by using the system gc (tested with gentoo). Thanks to Doodle for looking into this.

File size: 5.6 KB
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2 * Version: CDDL 1.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the COMMON DEVELOPMENT AND
5 * DISTRIBUTION LICENSE (CDDL) Version 1.0 (the "License"); you may not use
6 * this file except in compliance with the License. You may obtain a copy of
7 * the License at http://www.sun.com/cddl/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is "NOM" Netlabs Object Model
15 *
16 * The Initial Developer of the Original Code is
17 * netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
18 * Portions created by the Initial Developer are Copyright (C) 2008
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which
25 * case the provisions of the LGPL are applicable instead of those above. If
26 * you wish to allow use of your version of this file only under the terms of
27 * the LGPL, and not to allow others to use your version of this file under
28 * the terms of the CDDL, indicate your decision by deleting the provisions
29 * above and replace them with the notice and other provisions required by the
30 * LGPL. If you do not delete the provisions above, a recipient may use your
31 * version of this file under the terms of any one of the CDDL or the LGPL.
32 *
33 * ***** END LICENSE BLOCK ***** */
34/*
35 * And remember, phase 3 is near...
36 */
37#ifndef NOM_NOMTestCase_IMPLEMENTATION_FILE
38#define NOM_NOMTestCase_IMPLEMENTATION_FILE
39#endif
40
41#if __OS2__
42#define INCL_DOS
43#include <os2.h>
44#endif /* __OS2__ */
45
46#include "string.h"
47#include <nom.h>
48#include <nomtk.h>
49
50#include "nomtestcase.ih"
51#include "nommethod.h"
52
53typedef boolean NOMLINK nomProc(void*, void*);
54
55NOMDLLEXPORT NOM_Scope void NOMLINK impl_NOMTestCase_setUp(NOMTestCase* nomSelf,
56 CORBA_Environment *ev)
57{
58 /* NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf); */
59
60}
61
62NOMDLLEXPORT NOM_Scope void NOMLINK impl_NOMTestCase_tearDown(NOMTestCase* nomSelf,
63 CORBA_Environment *ev)
64{
65 /* NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf); */
66
67}
68
69NOMDLLEXPORT NOM_Scope NOMArray* NOMLINK impl_NOMTestCase_runTests(NOMTestCase* nomSelf,
70 CORBA_Environment *ev)
71{
72 NOMArray* resultArray=NOMArrayNew();
73 NOMArray* methodArray=NULL;
74 int a;
75
76 /* NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf); */
77 methodArray=_nomGetMethodList(nomSelf, FALSE, NULL);
78
79 for(a=0; a<NOMArray_length(methodArray, NULL); a++)
80 {
81 char* methodName=_queryString(_getName(NOMArray_queryObjectAtIdx(methodArray, a, NULL), NULL), NULL);
82
83 /* Only Methods starting with ˚test˚ are run. */
84 if(strstr(methodName, "test")==methodName)
85 {
86 NOMTestResult* nResult=NOMTestResultNew();
87 nomProc* nProc=_queryMethodToken(NOMArray_queryObjectAtIdx(methodArray, a, NULL), NULL);
88
89 _setUp(nomSelf, NULL);
90
91 /* The name of this test */
92 _setName(nResult, _getName(NOMArray_queryObjectAtIdx(methodArray, a, NULL), NULL), NULL);
93
94 /* Call the test method */
95 if(NULL!=nProc)
96 _setSuccess(nResult, nProc(nomSelf, NULL), NULL); /* TRUE if success */
97
98 /* Clean up */
99 _tearDown(nomSelf, NULL);
100 NOMArray_append(resultArray, nResult, NULL);
101 }
102 }
103
104 return resultArray;
105}
106
107NOMDLLEXPORT NOM_Scope NOMTestResult* NOMLINK impl_NOMTestCase_runSingleTest(NOMTestCase* nomSelf,
108 const CORBA_char* chrTestName,
109 CORBA_Environment *ev)
110{
111 NOMTestResult* nResult=NOMTestResultNew();
112 NOMString* nsName;
113 NOMArray* methodArray=NULL;
114 int a;
115
116 /* NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf); */
117
118 /* Get list of all methods of this class */
119 methodArray=_nomGetMethodList(nomSelf, FALSE, NULL);
120
121 /* The name of this test */
122 nsName=NOMStringNew();
123 NOMString_assignString(nsName, chrTestName, NULL);
124
125 _setName(nResult, nsName, NULL);
126
127 for(a=0; a<NOMArray_length(methodArray, NULL); a++)
128 {
129 char* methodName=_queryString(_getName(NOMArray_queryObjectAtIdx(methodArray, a, NULL), NULL), NULL);
130
131 if(0==strcmp( methodName, chrTestName))
132 {
133 nomProc* nProc=_queryMethodToken(NOMArray_queryObjectAtIdx(methodArray, a, NULL), NULL);
134
135 _setUp(nomSelf, NULL);
136
137 /* Call the test method */
138 if(NULL!=nProc)
139 _setSuccess(nResult, nProc(nomSelf, NULL), NULL); /* TRUE if success */
140
141 /* Clean up */
142 _tearDown(nomSelf, NULL);
143 }
144 }
145
146 return nResult;
147}
148
149
150
151NOMDLLEXPORT NOM_Scope void NOMLINK impl_NOMTestCase_setClassMgrObject(NOMTestCase* nomSelf,
152 const NOMClassMgr* nomClassMgrObject,
153 CORBA_Environment *ev)
154{
155 NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf);
156
157 _nomClassMgrObject=nomClassMgrObject;
158
159}
160
161
162NOMDLLEXPORT NOM_Scope NOMClassMgr* NOMLINK impl_NOMTestCase_queryClassMgrObject(NOMTestCase* nomSelf,
163 CORBA_Environment *ev)
164{
165 NOMTestCaseData* nomThis = NOMTestCaseGetData(nomSelf);
166
167 return _nomClassMgrObject;
168}
Note: See TracBrowser for help on using the repository browser.