##// END OF EJS Templates
linting
linting

File last commit:

r108:d644dced936e default
r109:4a375b9c654a default
Show More
observable-tests.ts
51 lines | 1.1 KiB | video/mp2t | TypeScriptLexer
/ djx / src / test / ts / observable-tests.ts
import { observe } from "./observable";
import * as t from "tap";
const subj1 = observe<number>(({ next, complete }) => {
next(1);
complete();
next(2);
});
const consumer1 = {
sum: 0,
next(v: number) {
this.sum += v;
}
};
subj1.subscribe(consumer1);
t.equal(consumer1.sum, 1, "Should get only one value");
subj1.subscribe(consumer1);
t.equal(consumer1.sum, 2, "Should get the value again");
const consumer2 = {
value: 0,
completed: false,
next(v: number) { this.value = v; },
complete() { this.completed = true; }
};
let maps = 0;
subj1
.map(v => {
t.comment(`map1: ${v * 2}`);
maps++;
return v * 2;
})
.map (v => {
t.comment(`map2: ${v * 2}`);
maps++;
return v * 2;
})
.map(v => {
t.comment(`map3: ${v * 2}`);
maps++;
return v * 2;
})
.subscribe(consumer2);
t.equal(consumer2.value, 8, "Should map");
t.equal(maps, 3, "The map chain should not be executed after completion");
t.ok(consumer2.completed, "The completion signal should pass through");