コード例 #1
0
ファイル: NeverTest.php プロジェクト: bluetechy/Rx.PHP
 /**
  * @test
  */
 public function never_basic()
 {
     $xs = BaseObservable::never();
     $results = new MockObserver($this->scheduler);
     $xs->subscribe($results);
     $this->assertMessages([], $results->getMessages());
 }
コード例 #2
0
ファイル: AsObservableTest.php プロジェクト: bluetechy/Rx.PHP
 public function testAsObservableNever()
 {
     $results = $this->scheduler->startWithCreate(function () {
         return BaseObservable::never()->asObservable();
     });
     $this->assertMessages([], $results->getMessages());
 }
コード例 #3
0
 /**
  * @test
  */
 public function distinct_until_changed_never()
 {
     $results = $this->scheduler->startWithCreate(function () {
         $o = new EmptyObservable();
         return BaseObservable::never()->distinctUntilChanged();
     });
     $this->assertMessages([], $results->getMessages());
 }
コード例 #4
0
ファイル: FromArrayTest.php プロジェクト: bluetechy/Rx.PHP
 /**
  * @test
  */
 public function it_calls_on_complete_when_the_array_is_empte()
 {
     $xs = BaseObservable::fromArray(array(), $this->scheduler);
     $results = $this->scheduler->startWithCreate(function () use($xs) {
         return $xs;
     });
     $this->assertCount(1, $results->getMessages());
     $this->assertMessages(array(onCompleted(201)), $results->getMessages());
 }
コード例 #5
0
ファイル: MergeAllTest.php プロジェクト: bluetechy/Rx.PHP
 /**
  * @test
  */
 public function it_passes_on_completed_from_sources()
 {
     $ys = $this->createHotObservable(array(onCompleted(250)));
     $results = $this->scheduler->startWithCreate(function () use($ys) {
         return BaseObservable::mergeAll($ys);
     });
     $this->assertMessages(array(onCompleted(250)), $results->getMessages());
     $this->assertSubscriptions(array(subscribe(200, 250)), $ys->getSubscriptions());
 }
コード例 #6
0
ファイル: ScanTest.php プロジェクト: bluetechy/Rx.PHP
 public function testScanNoSeedNever()
 {
     $results = $this->scheduler->startWithCreate(function () {
         return BaseObservable::never()->scan(function ($acc, $x) {
             return $acc + $x;
         });
     });
     $this->assertMessages([], $results->getMessages());
 }
コード例 #7
0
ファイル: SkipUntilTest.php プロジェクト: zhiephie/Rx.PHP
 public function testSkipUntilNeverNever()
 {
     $l = BaseObservable::never();
     $r = BaseObservable::never();
     $results = $this->scheduler->startWithCreate(function () use($l, $r) {
         return $l->skipUntil($r);
     });
     $this->assertMessages([], $results->getMessages());
 }
コード例 #8
0
ファイル: PromiseFactory.php プロジェクト: bluetechy/Rx.PHP
 /**
  * Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.
  *
  * @param callable $factory
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable($factory)
 {
     if (!is_callable($factory)) {
         throw new InvalidArgumentException('Factory should be a callable.');
     }
     $observableFactory = function () use($factory) {
         return Promise::toObservable($factory());
     };
     return BaseObservable::defer($observableFactory);
 }
コード例 #9
0
 /**
  * @test
  *
  */
 public function promise_success()
 {
     $source = BaseObservable::just(42);
     $promise = Promise::fromObservable($source);
     $promise->then(function ($value) {
         $this->assertEquals(42, $value);
     }, function () {
         $this->assertTrue(false);
     });
 }
コード例 #10
0
ファイル: DeferOperator.php プロジェクト: bluetechy/Rx.PHP
 /**
  * @param \Rx\ObservableInterface $observable
  * @param \Rx\ObserverInterface $observer
  * @param \Rx\SchedulerInterface $scheduler
  * @return \Rx\DisposableInterface
  */
 public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
 {
     $factory = $this->factory;
     try {
         $result = $factory();
         return $result->subscribe($observer);
     } catch (\Exception $e) {
         return BaseObservable::error($e)->subscribe($observer);
     }
 }
コード例 #11
0
ファイル: Promise.php プロジェクト: bluetechy/Rx.PHP
 /**
  * Converts a Promise to an Observable sequence
  *
  * @param \React\Promise\PromiseInterface $promise
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable(PromiseInterface $promise)
 {
     return BaseObservable::defer(function () use($promise) {
         $subject = new AsyncSubject();
         $promise->then(function ($value) use($subject) {
             $subject->onNext($value);
             $subject->onCompleted();
         }, [$subject, "onError"]);
         return $subject;
     });
 }
コード例 #12
0
ファイル: DeferTest.php プロジェクト: Katakeyni/Rx.PHP
 /**
  * @test
  */
 public function defer_throw()
 {
     $invoked = 0;
     $results = $this->scheduler->startWithCreate(function () use(&$invoked) {
         return BaseObservable::defer(function () use(&$invoked) {
             $invoked++;
             throw new \Exception('error');
         });
     });
     $this->assertMessages([onError(200, new \Exception('error'))], $results->getMessages());
     $this->assertEquals(1, $invoked);
 }
コード例 #13
0
ファイル: ConcatTest.php プロジェクト: bluetechy/Rx.PHP
 public function testConcatNeverReturn()
 {
     $e1 = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onCompleted(230)]);
     $e2 = BaseObservable::never();
     $results = $this->scheduler->startWithCreate(function () use($e1, $e2) {
         return $e2->concat($e1);
     });
     $this->assertMessages([], $results->getMessages());
 }
コード例 #14
0
ファイル: ReplaySubjectTest.php プロジェクト: zhiephie/Rx.PHP
 /**
  * @test
  */
 public function it_replays_with_no_scheduler()
 {
     $rs = new ReplaySubject();
     $o = BaseObservable::fromArray(range(1, 5));
     $o->subscribe($rs);
     $result = [];
     $completed = false;
     $rs->subscribeCallback(function ($x) use(&$result) {
         $result[] = $x;
     }, function ($e) {
         $this->fail("Should not have failed");
     }, function () use(&$result, &$completed) {
         $completed = true;
         $this->assertEquals($result, range(1, 5));
     });
     $this->assertTrue($completed);
 }
コード例 #15
0
ファイル: defer.php プロジェクト: Katakeyni/Rx.PHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = \Rx\Observable\BaseObservable::defer(function () {
    return \Rx\Observable\BaseObservable::just(42);
});
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Complete!
コード例 #16
0
ファイル: concat.php プロジェクト: Katakeyni/Rx.PHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source1 = \Rx\Observable\BaseObservable::just(42);
$source2 = \Rx\Observable\BaseObservable::just(56);
$source = (new \Rx\Observable\EmptyObservable())->concat($source1)->concat($source2);
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Next value: 56
//Complete!
コード例 #17
0
ファイル: CountTest.php プロジェクト: bluetechy/Rx.PHP
 public function testCountAfterRange()
 {
     $xs = BaseObservable::fromArray(range(1, 10));
     $results = $this->scheduler->startWithCreate(function () use($xs) {
         return $xs->count();
     });
     $this->assertMessages([onNext(211, 10), onCompleted(211)], $results->getMessages());
 }
コード例 #18
0
ファイル: just.php プロジェクト: Katakeyni/Rx.PHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = \Rx\Observable\BaseObservable::just(42);
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Complete!