PageRenderTime 366ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

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