All files test-channel.ts

100% Statements 37/37
100% Branches 7/7
100% Functions 5/5
100% Lines 37/37

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 381x 1x 1x 44x 44x 44x 44x 44x 108x 108x 108x 108x 44x 44x 44x 44x 44x 44x 44x 44x 108x 108x 108x 108x 44x 44x 44x 44x 22x 22x 22x 22x 22x 22x 22x 22x 44x  
import { Subject } from "rxjs";
import { RPCChannel } from "./channel";
 
export class TestChannel implements RPCChannel {
    private _received = new Subject<string>();
    get received() { return this._received.asObservable(); }
 
    send(message: string) {
        setTimeout(() => {
            this.otherChannel.receive(message);
        }, this.sendDelay);
    }
 
    /**
     * How long do you want messages received to be delayed by.
     */
    receiveDelay = 0;
    sendDelay = 0;
 
    private receive(message: string) {
        setTimeout(() => {
            this._received.next(message);
        }, this.receiveDelay);
    }
    
    private otherChannel: TestChannel;
 
    static makePair(): [ TestChannel, TestChannel ] {
        let a = new TestChannel();
        let b = new TestChannel();
 
        a.otherChannel = b;
        b.otherChannel = a;
 
        return [a, b];
    }
}