summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/t/php/construct.t
blob: b04731503863f509030f4f343a963dc76c1a6552 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use strict;
use warnings FATAL => 'all';

use Apache::Test;
use Apache::TestRequest;

plan tests => 2, need_php4;

## testing PHP OO bug (#7515)
## php src:
## <?php
## class obj {
##         function method() {}
##     }
## 
## function test($o_copy) {
##         $o_copy->root->set_in_copied_o=TRUE;
##         var_dump($o_copy);?><BR><?php }
## 
## $o->root=new obj();
## 
## ob_start();
## var_dump($o);
## $x=ob_get_contents();
## ob_end_clean();
## 
## $o->root->method();
## 
## ob_start();
## var_dump($o);
## $y=ob_get_contents();
## ob_end_clean();
## 
## // $o->root->method() makes ob_get_contents() have a '&' in front of object
## // so this does not work.
## // echo ($x==$y) ? 'success':'failure';
## 
## echo "x = $x";
## echo "y = $y";
## ?>
## 
## output should be:
## x = object(stdClass)(1) {
##  ["root"]=>
##  object(obj)(0) {
##  }
## }
## y = object(stdClass)(1) {
##  ["root"]=>
##  &object(obj)(0) {
##  }
## }

my $result = GET_BODY "/php/construct.php";

## get rid of newlines to make compairon easier.
$result =~ s/\n//g;

my ($x, $y);
if ($result =~ /x = (.*)y = (.*)/) {
    $x = $1;
    $y = $2;
}

ok $x eq "object(stdClass)(1) {  [\"root\"]=>  object(obj)(0) {  }}";
ok $y eq "object(stdClass)(1) {  [\"root\"]=>  &object(obj)(0) {  }}";