]> granicus.if.org Git - php/commitdiff
- new method to generate test cases for functions
authorHartmut Holzgraefe <hholzgra@php.net>
Tue, 20 May 2003 13:43:43 +0000 (13:43 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Tue, 20 May 2003 13:43:43 +0000 (13:43 +0000)
- beginning support for "pass by reference" parameters

scripts/ext_skel_ng/php_function.php

index 92c970522d3875506a540b6c8e25665f532ae0f0..8c39e24cff16d7a946842c0388e9e8081342a2ff 100644 (file)
                                        if (!$this->is_type($tokens[$n])) return("type name expected instead of '$tokens[$n]'");
                                        $params[$param]['type']=$tokens[$n];
                                        $n++;
+                                       if ($tokens[$n] == "&") {
+                                               $params[$param]['by_ref'] = true;
+                                               $n++;
+                                       }
                                        if ($this->is_name($tokens[$n])) {
                                                $params[$param]['name']=$tokens[$n];
                                                $n++;
                                        }
+                                       if ($tokens[$n] == "&") {
+                                               $params[$param]['by_ref'] = true;
+                                               $n++;
+                                       }
                                        if ($params[$param]['type'] === "resource" && $this->is_name($tokens[$n])) {
                                                $params[$param]['subtype'] = $params[$param]['name'];
                                                $params[$param]['name'] = $tokens[$n];
                        return true;
                }
 
-               function c_code(&$extension) {
+               function c_code($extension) {
                        $code = "";
 
                        $returns = explode(" ", $this->returns);
                                                $code .= $param['subtype']." ";
                                        }
                                        if ($param['type'] !== 'void') {
+                                               if (isset($param['by_ref'])) {
+                                                       $code .= "&";
+                                               }
                                          $code .= $param['name']; 
           }
                                }
                                        } else {
                                                $xml .= "      <methodparam>";
                                        }
-                                       $xml .= "<type>$param[type]</type><parameter>$param[name]</parameter>";
+                                       $xml .= "<type>$param[type]</type><parameter>";
+                                       if (isset($param['by_ref'])) {
+                                               $xml .= "&amp;"; 
+                                       }
+                                       $xml .= "$param[name]</parameter>";
                                        $xml .= "</methodparam>\n";
                                }
                        }
@@ -337,10 +352,28 @@ $xml .=
    </refsect1>
   </refentry>
 ';
-      $xml .= $this->docbook_editor_footer(4);
+      $xml .= $this->docbook_editor_settings(4);
  
                        return $xml;
                }
+
+               function write_test($extension) {
+                       $fp = fopen("{$extension->name}/tests/{$this->name}.phpt", "w");
+                       fputs($fp, 
+"--TEST--
+{$this->name}() function
+--SKIPIF--
+<?php if (!extension_loaded('{$extension->name}')) print 'skip'; ?>
+--POST--
+--GET--
+--FILE--
+<?php 
+       echo 'no test case for {$this->name}() yet';
+?>
+--EXPECT--
+no test case for {$this->name}() yet");
+                       fclose($fp);
+               }
        }
 
 ?>
\ No newline at end of file