PageRenderTime 49ms CodeModel.GetById 24ms app.highlight 20ms RepoModel.GetById 0ms app.codeStats 1ms

/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?>