test reafactoring; release beta5
[m6w6/ext-http] / tests / client013.phpt
1 --TEST--
2 client observers
3 --SKIPIF--
4 <?php
5 include "skipif.inc";
6 ?>
7 --FILE--
8 <?php
9
10 echo "Test\n";
11
12 class Client extends http\Client {
13 public $pi;
14 }
15 class ProgressObserver1 implements SplObserver {
16 function update(SplSubject $c, $r = null) {
17 if ($c->getProgressInfo($r)) $c->pi .= "-";
18 }
19 }
20 class ProgressObserver2 implements SplObserver {
21 function update(SplSubject $c, $r = null) {
22 if ($c->getProgressInfo($r)) $c->pi .= ".";
23 }
24 }
25 class CallbackObserver implements SplObserver {
26 public $callback;
27 function __construct($callback) {
28 $this->callback = $callback;
29 }
30 function update(SplSubject $c, $r = null) {
31 call_user_func($this->callback, $c, $r);
32 }
33 }
34
35 $client = new Client;
36 $client->attach($o1 = new ProgressObserver1);
37 $client->attach($o2 = new ProgressObserver2);
38 $client->attach(
39 $o3 = new CallbackObserver(
40 function ($c, $r) {
41 $p = (array) $c->getProgressInfo($r);
42 var_dump(array_key_exists("started", $p));
43 var_dump(array_key_exists("finished", $p));
44 var_dump(array_key_exists("dlnow", $p));
45 var_dump(array_key_exists("ulnow", $p));
46 var_dump(array_key_exists("dltotal", $p));
47 var_dump(array_key_exists("ultotal", $p));
48 var_dump(array_key_exists("info", $p));
49 }
50 )
51 );
52
53 $client->enqueue(new http\Client\Request("GET", "http://dev.iworks.at/ext-http/"))->send();
54 var_dump(1 === preg_match("/(\.-)+/", $client->pi));
55 var_dump(3 === count($client->getObservers()));
56 $client->detach($o1);
57 var_dump(2 === count($client->getObservers()));
58 $client->detach($o2);
59 var_dump(1 === count($client->getObservers()));
60 $client->detach($o3);
61 var_dump(0 === count($client->getObservers()));
62
63 ?>
64 Done
65 --EXPECTREGEX--
66 Test\n(bool\(true\)\n)+Done