Skip to content

Commit

Permalink
Merge pull request #11 from LoveCommunity/test/observable_tester
Browse files Browse the repository at this point in the history
test - add `ObservableTester`
  • Loading branch information
beeth0ven committed May 20, 2022
2 parents 2cc295d + 42772c5 commit 757f7e0
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 49 deletions.
18 changes: 9 additions & 9 deletions test/observables/observables/cast_observable_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@
import 'package:test/test.dart';
import 'package:scopes/scopes.dart';

import '../../toolbox/observable_tester.dart';

void main() {

test('cast observable success', () {

final List<Object> invokes = [];

final observable = Observable<String>((onData) {
onData('a');
return Disposable.empty;
});

final castObservable = observable.cast<Object>();

final OnData<Object> onData = (data) {
invokes.add(data);
};
final tester = ObservableTester(
castObservable,
);

expect(invokes, []);
final observation = castObservable.observe(onData);
expect(invokes, [
expect(tester.recorded, []);
tester.startObserve();
expect(tester.recorded, [
'a',
]);

observation.dispose();
tester.stopObserve();
});

test('cast observable failure', () {
Expand Down
54 changes: 24 additions & 30 deletions test/observables/observables/create_observable_test.dart
Original file line number Diff line number Diff line change
@@ -1,56 +1,54 @@

import 'package:test/test.dart';
import 'package:scopes/scopes.dart';

import '../../toolbox/async_toolbox.dart';
import '../../toolbox/observable_tester.dart';

void main() {

test('create observable sync', () {

final List<String> invokes = [];

final observable = Observable<String>((onData) {
onData('a');
return Disposable.empty;
});

final OnData<String> onData = (data) {
invokes.add(data);
};
expect(invokes, []);
final observation = observable.observe(onData);
expect(invokes, [
final tester = ObservableTester(
observable,
);

expect(tester.recorded, []);
tester.startObserve();
expect(tester.recorded, [
'a',
]);

observation.dispose();
tester.stopObserve();

});

test('create observable async', () async {

final List<String> invokes = [];

final observable = Observable<String>((onData) {
Future<void>(() => onData('a'));
return Disposable.empty;
});

final OnData<String> onData = (data) {
invokes.add(data);
};
final tester = ObservableTester(
observable,
);

expect(invokes, []);
final observation = observable.observe(onData);
expect(invokes, []);
expect(tester.recorded, []);
tester.startObserve();
expect(tester.recorded, []);

await delayed(30);
expect(invokes, [
expect(tester.recorded, [
'a',
]);

observation.dispose();
tester.stopObserve();

});

Expand All @@ -73,28 +71,24 @@ void main() {

test('create observable not recieve data after disposed', () async {

final List<String> invokes = [];

final observable = Observable<String>((onData) {
onData('a');
Future<void>(() => onData('b'));
return Disposable.empty;
});

final OnData<String> onData = (data) {
invokes.add(data);
};
final tester = ObservableTester(
observable,
)..startObserve();

final observation = observable.observe(onData);

expect(invokes, [
expect(tester.recorded, [
'a',
]);

observation.dispose();
tester.stopObserve();

await delayed(30);
expect(invokes, [
expect(tester.recorded, [
'a',
]);

Expand Down
19 changes: 9 additions & 10 deletions test/observables/observables/map_observable_test.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

import 'package:test/test.dart';
import 'package:scopes/scopes.dart';
import '../../toolbox/observable_tester.dart';

void main() {

test('map observable', () {

final List<int> invokes = [];

final observable = Observable<String>((onData) {
onData('a');
onData('ab');
Expand All @@ -18,19 +17,19 @@ void main() {
final mapObservable = observable
.map<int>((data) => data.length);

final OnData<int> onData = (data) {
invokes.add(data);
};

final observation = mapObservable.observe(onData);

expect(invokes, [
final tester = ObservableTester(
mapObservable,
)..startObserve();

expect(tester.recorded, [
1,
2,
3,
]);

tester.stopObserve();

observation.dispose();
});

}

20 changes: 20 additions & 0 deletions test/toolbox/observable_tester.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:scopes/scopes.dart';

class ObservableTester<T> {

ObservableTester(this._observable);

final Observable<T> _observable;

final List<T> recorded = [];

Disposable? _observation;

void startObserve() {
_observation = _observable.observe(recorded.add);
}

void stopObserve() {
_observation?.dispose();
}
}

0 comments on commit 757f7e0

Please sign in to comment.