/tags/rel-1-3-15/SWIG/Examples/test-suite/php4/tests.php4
PHP | 216 lines | 187 code | 24 blank | 5 comment | 59 complexity | 1d9bbdd7814df4ced7cad5a770697266 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
1<?php
2
3// do we have true global vars or just GETSET functions?
4// Used to filter out get/set global functions to fake vars...
5define(GETSET,1);
6
7$_original_functions=get_defined_functions();
8$_original_globals=1;
9$_original_classes=get_declared_classes();
10$_original_globals=array_keys($GLOBALS);
11
12class check {
13 function get_extra_classes($ref=FALSE) {
14 static $extra;
15 global $_original_classes;
16 if ($ref===FALSE) $f=$_original_classes;
17 if (! is_array($extra)) {
18 $df=array_flip(get_declared_classes());
19 foreach($_original_classes as $class) unset($df[$class]);
20 $extra=array_keys($df);
21 }
22 return $extra;
23 }
24
25 function get_extra_functions($ref=FALSE,$gs=false) {
26 static $extra;
27 static $extrags; // for get/setters
28 global $_original_functions;
29 if ($ref===FALSE) $f=$_original_functions;
30 if (! is_array($extra) || $gs) {
31 $extra=array();
32 $extrags=array();
33 $df=get_defined_functions();
34 $df=array_flip($df[internal]);
35 foreach($_original_functions[internal] as $func) unset($df[$func]);
36 // Now chop out any get/set accessors
37 foreach(array_keys($df) as $func) if (GETSET && ereg('_[gs]et$',$func)) $extrags[]=$func;
38 else $extra[]=$func;
39// $extra=array_keys($df);
40 }
41 if ($gs) return $extrags;
42 return $extra;
43 }
44
45 function get_extra_globals($ref=FALSE) {
46 static $extra;
47 global $_original_globals;
48 if (! is_array($extra)) {
49 if (GETSET) {
50 foreach(check::get_extra_functions(false,1) as $global) {
51 if (ereg('^(.*)_[sg]et$',$global,$match)) $_extra[$match[1]]=1;
52 }
53 $extra=array_keys($_extra);
54 } else {
55 if ($ref===FALSE) $ref=$_original_globals;
56 if (! is_array($extra)) {
57 $df=array_flip(array_keys($GLOBALS));
58 foreach($_original_globals as $func) unset($df[$func]);
59 // MASK xxxx_LOADED__ variables
60 foreach(array_keys($df) as $func) if (ereg('_LOADED__$',$func)) unset($df[$func]);
61 $extra=array_keys($df);
62 }
63 }
64 }
65 return $extra;
66 }
67
68 function classname($string,$object) {
69 if (! $string==($classname=get_class($object))) return check::fail("Object: $object is of class %s not class %s",$classname,$string);
70 return TRUE;
71 }
72
73 function classmethods($classname,$methods) {
74 if (is_object($classname)) $classname=get_class($classname);
75 $classmethods=array_flip(get_class_methods($classname));
76 $missing=array();
77 $extra=array();
78 foreach($methods as $method) {
79 if (! isset($classmethods[$method])) $missing[]=$method;
80 else unset($classmethods[$method]);
81 }
82 $extra=array_keys($classmethods);
83 if ($missing) $message[]="does not have these methods:\n ".join(",",$missing);
84 if ($extra) $message[]="does have these extra methods:\n ".join(",",$extra);
85 if ($message) {
86 return check::fail("Class %s %s\nFull class list:\n %s\n",$classname,join("\nbut ",$message),join("\n ",get_class_methods($classname)));
87 }
88 return TRUE;
89 }
90
91 function set($var,$value) {
92 $func=$var."_set";
93 if (GETSET) $func($value);
94 else $_GLOBALS[$var]=$value;
95 }
96
97 function &get($var) {
98 $func=$var."_get";
99 if (GETSET) return $func();
100 else return $_GLOBALS[$var];
101 }
102
103 function is_a($a,$b) {
104 if (is_object($a)) $a=strtolower(get_class($a));
105 if (is_object($b)) $a=strtolower(get_class($b));
106 $parents=array();
107 $c=$a;
108 while($c!=$b && $c) {
109 $parents[]=$c;
110 $c=strtolower(get_parent_class($c));
111 }
112 if ($c!=$b) return check::fail("Class $a does not inherit from class $b\nHierachy:\n %s\n",join("\n ",$parents));
113 return TRUE;
114 }
115
116 function classparent($a,$b) {
117 if (is_object($a)) $a=get_class($a);
118 if (is_object($b)) $a=get_class($b);
119 $parent=get_parent_class($a);
120
121 if ($parent!=$b) return check::fail("Class $a parent not actually $b but $parent");
122 return TRUE;
123 }
124
125 function classes($classes) {
126 if (! is_array($classes)) $classes=array($classes);
127 $message=array();
128 $missing=array();
129 $extra=array_flip(check::get_extra_classes());
130 foreach($classes as $class) {
131 if (! class_exists($class)) $missing[]=$class;
132 else unset($extra[$class]);
133 }
134 if ($missing) $message[]=sprintf("Classes missing: %s",join(",",$missing));
135 if ($extra) $message[]=sprintf("These extra classes are defined: %s",join(",",array_keys($extra)));
136 if ($message) return check::fail(join("\n ",$message));
137 return TRUE;
138 }
139
140 function functions($functions) {
141 if (! is_array($functions)) $functions=array($functions);
142 $message=array();
143 $missing=array();
144 $extra=array_flip(check::get_extra_functions());
145
146 foreach ($functions as $func) {
147 if (! function_exists($func)) $missing[]=$func;
148 else unset($extra[$func]);
149 }
150 if ($missing) $message[]=sprintf("Functions missing: %s",join(",",$missing));
151 if ($extra) $message[]=sprintf("These extra methods are defined: %s",join(",",array_keys($extra)));
152 if ($message) return check::fail(join("\n ",$message));
153 return TRUE;
154 }
155
156 function globals($globals) {
157 if (! is_array($globals)) $globals=array($globals);
158 $message=array();
159 $missing=array();
160 $extra=array_flip(check::get_extra_globals());
161 foreach ($globals as $glob) {
162 if (GETSET) {
163 if (! isset($extra[$glob])) $missing[]=$glob;
164 else unset($extra[$glob]);
165 } else {
166 if (! isset($GLOBALS[$glob])) $missing[]=$glob;
167 else unset($extra[$glob]);
168 }
169 }
170 if ($missing) $message[]=sprintf("Globals missing: %s",join(",",$missing));
171 if ($extra) $message[]=sprintf("These extra globals are defined: %s",join(",",array_keys($extra)));
172 if ($message) return check::fail(join("\n ",$message));
173 return TRUE;
174
175 }
176
177 function functionref($a,$type,$message) {
178 if (! eregi("^_[a-f0-9]+$type$",$a)) return check::fail($message);
179 return TRUE;
180 }
181
182 function equal($a,$b,$message) {
183 if (! ($a===$b)) return check::fail($message);
184 return TRUE;
185 }
186
187 function resource($a,$b,$message) {
188 $resource=trim(check::var_dump($a));
189 if (! eregi("^resource\([0-9]+\) of type \($b\)",$resource)) return check::fail($message);
190 return TRUE;
191 }
192
193 function isnull($a,$message) {
194 $value=trim(check::var_dump($a));
195 return check::equal($value,"NULL",$message);
196 }
197
198 function var_dump($arg) {
199 ob_start();
200 var_dump($arg);
201 $result=ob_get_contents();
202 ob_end_clean();
203 return $result;
204 }
205
206 function fail($pattern) {
207 $args=func_get_args();
208 print("Failed on: ".call_user_func_array("sprintf",$args)."\n");
209 exit(1);
210 }
211
212 function done() {
213 print $_SERVER[argv][0]." ok\n";
214 }
215}
216?>