11 include "helper/server.inc";
15 class Client extends http\Client {
18 class ProgressObserver1 implements SplObserver {
19 function update(SplSubject $c, $r = null) {
20 if ($c->getProgressInfo($r)) $c->pi .= "-";
23 class ProgressObserver2 implements SplObserver {
24 function update(SplSubject $c, $r = null) {
25 if ($c->getProgressInfo($r)) $c->pi .= ".";
28 class CallbackObserver implements SplObserver {
30 function __construct($callback) {
31 $this->callback = $callback;
33 function update(SplSubject $c, $r = null) {
34 call_user_func($this->callback, $c, $r);
38 server("proxy.inc", function($port) {
40 $client->attach($o1 = new ProgressObserver1);
41 $client->attach($o2 = new ProgressObserver2);
43 $o3 = new CallbackObserver(
45 $p = (array) $c->getProgressInfo($r);
49 var_dump(array_key_exists("started", $p));
50 var_dump(array_key_exists("finished", $p));
51 var_dump(array_key_exists("dlnow", $p));
52 var_dump(array_key_exists("ulnow", $p));
53 var_dump(array_key_exists("dltotal", $p));
54 var_dump(array_key_exists("ultotal", $p));
55 var_dump(array_key_exists("info", $p));
60 $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/"))->send();
61 var_dump(1 === preg_match("/(\.-)+/", $client->pi));
62 var_dump(3 === count($client->getObservers()));
64 var_dump(2 === count($client->getObservers()));
66 var_dump(1 === count($client->getObservers()));
68 var_dump(0 === count($client->getObservers()));
75 Test\n(bool\(true\)\n)+Done