##// END OF EJS Templates
Close v1.3 branch
Close v1.3 branch

File last commit:

r102:c65ea2350b1a v1.3
r103:4a1b0098cd9e v1.3
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");