function getMysqli() { $_db = new mysqli(HOST, DB_USER, DB_PASS, DB); if ($_db->connect_errno > 0) { onError("Unable to connect to database.", $_db->connect_error); } return $_db; }
/** * Adapted from RxJS * * @test */ public function sum_number_throw() { $xs = $this->createHotObservable([onNext(150, 1), onError(210, new \Exception())]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->sum(); }); $this->assertMessages([onError(210, new \Exception())], $results->getMessages()); }
/** * @test */ public function select_calls_on_error() { $xs = $this->createHotObservable(array(onError(500, new Exception()))); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->select('RxIdentity'); }); $this->assertMessages(array(onError(500, new Exception())), $results->getMessages()); }
/** * @test */ public function timestamp_error() { $error = new \Exception(); $results = $this->scheduler->startWithCreate(function () use($error) { return Observable::error($error)->timestamp($this->scheduler); }); $this->assertMessages([onError(201, $error)], $results->getMessages()); }
/** * @test */ public function startWith_error() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(150, 1), onError(250, $error)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->startWithArray([1, 2, 3]); }); $this->assertMessages([onNext(201, 1), onNext(202, 2), onNext(203, 3), onError(250, $error)], $results->getMessages()); }
public function testAsObservableThrow() { $error = new Exception(); $xs = $this->createHotObservable([onNext(150, 1), onError(250, $error)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->asObservable(); }); $this->assertMessages([onError(250, $error)], $results->getMessages()); }
/** * @test */ public function switchLatest_outer_throws() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(300, $this->createColdObservable([onNext(10, 101), onNext(20, 102), onNext(110, 103), onNext(120, 104), onNext(210, 105), onNext(220, 106), onCompleted(230)])), onNext(400, $this->createColdObservable([onNext(10, 201), onNext(20, 202), onNext(30, 203), onNext(40, 204), onCompleted(50)])), onError(500, $error)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->switchLatest(); }); $this->assertMessages([onNext(310, 101), onNext(320, 102), onNext(410, 201), onNext(420, 202), onNext(430, 203), onNext(440, 204), onError(500, $error)], $results->getMessages()); }
/** * @test */ public function pluck_object_property_missing() { $xs = $this->createHotObservable([onNext(180, (object) ['prop' => 1]), onNext(210, (object) ['prop' => 2]), onNext(240, (object) ['prop' => 3]), onNext(290, new \stdClass()), onNext(350, (object) ['prop' => 5]), onError(400, new \Exception())]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->pluck('prop'); }); $this->assertMessages([onNext(210, 2), onNext(240, 3), onError(290, new \Exception())], $results->getMessages()); $this->assertSubscriptions([subscribe(200, 290)], $xs->getSubscriptions()); }
/** * @test */ public function bufferWithCountError() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onError(250, $error)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->bufferWithCount(5); }); $this->assertMessages([onError(250, $error)], $results->getMessages()); }
/** * @test */ public function start_with_error() { $error = new \Exception(); $results = $this->scheduler->startWithCreate(function () use($error) { return Observable::start(function () use($error) { throw $error; }, $this->scheduler); }); $this->assertMessages([onError(200, $error)], $results->getMessages()); }
/** * @test */ public function subscribeOn_error() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(150, 1), onError(210, $error)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->subscribeOn($this->scheduler); }); $this->assertMessages([onError(210, $error)], $results->getMessages()); $this->assertSubscriptions([subscribe(201, 211)], $xs->getSubscriptions()); }
/** * @test */ public function calls_on_error_if_predicate_throws_an_exception() { $xs = $this->createHotObservable(array(onNext(500, 42))); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->where(function () { throw new Exception(); }); }); $this->assertMessages(array(onError(500, new Exception())), $results->getMessages()); }
/** * @test */ public function throttle_error() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onNext(250, 3), onNext(310, 4), onNext(350, 5), onError(410, $error), onNext(450, 7), onCompleted(500)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->throttle(200); }); $this->assertMessages([onNext(210, 2), onError(410, $error)], $results->getMessages()); $this->assertSubscriptions([subscribe(200, 410)], $xs->getSubscriptions()); }
/** * @test */ public function generator_throws_error() { $error = new \Exception(); $generator = $this->genError($error); $xs = new \Rx\Observable\IteratorObservable($generator); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs; }); $this->assertMessages([onError(201, $error)], $results->getMessages()); }
public function testToArrayError() { $error = new \Exception(); $xs = $this->createHotObservable([onNext(110, 1), onNext(220, 2), onNext(330, 3), onNext(440, 4), onNext(550, 5), onError(660, $error)]); /** @var MockObserver $results */ $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->toArray(); }); $this->assertMessages([onError(660, $error)], $results->getMessages()); $this->assertSubscriptions([subscribe(200, 660)], $xs->getSubscriptions()); }
/** * @test */ public function flatMapTo_it_passes_on_error() { $xs = $this->createColdObservable(array(onNext(100, 4), onNext(200, 2), onNext(300, 3), onNext(400, 1), onCompleted(510))); $ys = $this->createColdObservable(array(onNext(50, 'foo'), onNext(100, 'bar'), onNext(150, 'baz'), onError(210, new Exception()), onCompleted(250))); $results = $this->scheduler->startWithCreate(function () use($xs, $ys) { return $xs->flatMapTo($ys); }); $this->assertMessages(array(onNext(350, "foo"), onNext(400, "bar"), onNext(450, "baz"), onNext(450, "foo"), onNext(500, "bar"), onError(510, new Exception())), $results->getMessages()); $this->assertSubscriptions(array(subscribe(200, 510)), $xs->getSubscriptions()); $this->assertSubscriptions(array(subscribe(300, 510), subscribe(400, 510), subscribe(500, 510)), $ys->getSubscriptions()); }
/** * @test */ public function doOnError_should_call_after_resubscription() { $xs = $this->createColdObservable([onError(10, new \Exception("Hello")), onCompleted(20)]); $messages = []; $xs->doOnError(function ($x) use(&$messages) { $messages[] = onError($this->scheduler->getClock(), $x); })->retry(2)->subscribeCallback(null, function () { }, null, $this->scheduler); $this->scheduler->start(); $this->assertMessages([onError(10, new \Exception("Hello")), onError(20, new \Exception("Hello"))], $messages); }
public function testSkipUntilNeverError() { $error = new \Exception(); $l = Observable::never(); $r = $this->createHotObservable([onNext(150, 1), onError(225, $error)]); /** @var MockObserver $results */ $results = $this->scheduler->startWithCreate(function () use($l, $r) { return $l->skipUntil($r); }); $this->assertMessages([onError(225, $error)], $results->getMessages()); }
/** * @test */ public function it_passes_on_error_from_sources() { $xs = $this->createColdObservable(array(onNext(100, 4), onNext(200, 2), onNext(300, 3), onNext(400, 1), onCompleted(500))); $ys = $this->createColdObservable(array(onNext(50, $xs), onError(200, new Exception()), onCompleted(250))); $results = $this->scheduler->startWithCreate(function () use($ys) { return Observable::mergeAll($ys); }); $this->assertMessages(array(onNext(350, 4), onError(400, new Exception())), $results->getMessages()); $this->assertSubscriptions(array(subscribe(250, 400)), $xs->getSubscriptions()); $this->assertSubscriptions(array(subscribe(200, 400)), $ys->getSubscriptions()); }
/** * @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); }
function l_log($pinkieID, $user, $msg, $lvl) { $_db = getMysqli(); $_sql = "INSERT INTO Log (PinkieID, User, Level, Message) VALUES (?,?,?,?)"; $_stmt = $_db->prepare((string) $_sql); $_stmt->bind_param('isss', $pinkieID, $user, $lvl, $msg); $_stmt->execute(); if ($_stmt->errno) { onError("Error in Logger.php::log()", $_stmt->error); } $_stmt->close(); // Close up the database connection. $_db->close(); }
/** * @test */ public function create_error() { $error = new \Exception(); $results = $this->scheduler->startWithCreate(function () use($error) { return Observable::create(function (ObserverInterface $o) use($error) { $o->onError($error); $o->onNext(100); $o->onError(new \Exception()); $o->onCompleted(); return new EmptyDisposable(); }); }); $this->assertMessages([onError(200, $error)], $results->getMessages()); }
/** * @test */ public function doOnError_should_see_errors() { $ex = new RuntimeException('boom!'); $xs = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onError(220, $ex), onCompleted(250)]); $called = 0; $error = null; $this->scheduler->startWithCreate(function () use($xs, &$called, &$error) { return $xs->doOnError(function ($err) use(&$called, &$error) { $called++; $error = $err; }); }); $this->assertEquals(1, $called); $this->assertSame($ex, $error); }
/** * @test */ public function defer_throw() { $invoked = 0; $results = $this->scheduler->startWithCreate(function () use(&$invoked) { return Observable::defer(function () use(&$invoked) { $invoked++; throw new \Exception('error'); }); }); // Note: these tests differ from the RxJS tests that they were based on because RxJS was // explicitly using the immediate scheduler on subscribe internally. When we pass the // proper scheduler in, the subscription gets scheduled which requires an extra tick. $this->assertMessages([onError(201, new \Exception('error'))], $results->getMessages()); $this->assertEquals(1, $invoked); }
/** * @test */ public function repeatWhen_next_error() { $error = new Exception("test"); $xs = $this->createColdObservable([onNext(10, 1), onNext(20, 2), onError(30, $error), onCompleted(40)]); $results = $this->scheduler->startWithCreate(function () use($xs, $error) { return $xs->repeatWhen(function (Observable $attempts) use($error) { return $attempts->scan(function ($count) use($error) { if (++$count === 2) { throw $error; } return $count; }, 0); }); }); $this->assertMessages([onNext(210, 1), onNext(220, 2), onError(230, $error)], $results->getMessages()); $this->assertSubscriptions([subscribe(200, 230)], $xs->getSubscriptions()); }
public function testRetryObservableRetryCountDispose() { $error = new \Exception(); $xs = $this->createColdObservable([onNext(5, 1), onNext(10, 2), onNext(15, 3), onError(20, $error)]); $results = $this->scheduler->startWithDispose(function () use($xs) { return $xs->retry(3); }, 231); $this->assertMessages([onNext(205, 1), onNext(210, 2), onNext(215, 3), onNext(225, 1), onNext(230, 2)], $results->getMessages()); $this->assertSubscriptions([subscribe(200, 220), subscribe(220, 231)], $xs->getSubscriptions()); }
/** * @test */ public function distinct_until_changed_comparer_throws() { $xs = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onNext(220, 3), onCompleted(250)]); $results = $this->scheduler->startWithCreate(function () use($xs) { return $xs->distinctUntilChanged(null, function ($x, $y) { throw new \Exception('ex'); }); }); $this->assertMessages([onNext(210, 2), onError(220, new \Exception('ex'))], $results->getMessages()); }
/** * @test */ public function takeUntil_before_first_produced_remain_silent_and_proper_disposed() { $sourceNotDisposed = false; $l = $this->createHotObservable([onNext(150, 1), onError(215, new \Exception()), onCompleted(240)])->doOnNext(function () use(&$sourceNotDisposed) { $sourceNotDisposed = true; }); $r = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onCompleted(220)]); $result = $this->scheduler->startWithCreate(function () use($l, $r) { return $l->takeUntil($r); }); $this->assertMessages([onCompleted(210)], $result->getMessages()); $this->assertFalse($sourceNotDisposed); }
/** * @test */ public function partitionError() { $error = new \Exception('error1'); $xs = $this->createHotObservable([onNext(180, 5), onNext(210, 4), onNext(240, 3), onError(290, $error), onNext(350, 1), onCompleted(360)]); $observables = null; $s1 = null; $s2 = null; $r1 = $this->scheduler->createObserver(); $r2 = $this->scheduler->createObserver(); $this->scheduler->scheduleAbsolute(TestScheduler::CREATED, function () use(&$observables, $xs) { $observables = $xs->partition([$this, 'isEven']); }); $this->scheduler->scheduleAbsolute(TestScheduler::SUBSCRIBED, function () use(&$observables, &$s1, &$s2, $r1, $r2) { $s1 = $observables[0]->subscribe($r1); $s2 = $observables[1]->subscribe($r2); }); $this->scheduler->scheduleAbsolute(TestScheduler::DISPOSED, function () use(&$s1, &$s2) { $s1->dispose(); $s2->dispose(); }); $this->scheduler->start(); $this->assertMessages([onNext(210, 4), onError(290, $error)], $r1->getMessages()); $this->assertMessages([onNext(240, 3), onError(290, $error)], $r2->getMessages()); $this->assertSubscriptions([subscribe(200, 290), subscribe(200, 290)], $xs->getSubscriptions()); }
/** * @test */ public function catchError_ThrowFromNestedCatch() { $error = new \Exception(); $error2 = new \InvalidArgumentException(); $firstHandlerCalled = false; $secondHandlerCalled = false; $o1 = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onError(215, $error)]); $o2 = $this->createHotObservable([onNext(220, 3), onError(225, $error2)]); $o3 = $this->createHotObservable([onNext(230, 4), onCompleted(235)]); $results = $this->scheduler->startWithCreate(function () use($o1, $o2, $o3, &$firstHandlerCalled, &$secondHandlerCalled, $error, $error2) { return $o1->catchError(function ($e) use($o2, &$firstHandlerCalled, $error) { $firstHandlerCalled = true; $this->assertSame($e, $error); return $o2; })->catchError(function ($e) use($o3, &$secondHandlerCalled, $error2) { $secondHandlerCalled = true; $this->assertSame($e, $error2); return $o3; }); }); $this->assertMessages([onNext(210, 2), onNext(220, 3), onNext(230, 4), onCompleted(235)], $results->getMessages()); $this->assertTrue($firstHandlerCalled); $this->assertTrue($secondHandlerCalled); }