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