all files / src/ fixed-queue.ts

84.21% Statements 16/19
100% Branches 2/2
80% Functions 4/5
81.25% Lines 13/16
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   16×   17×   16×     221× 221× 221×               221×    
import * as Collections from "typescript-collections";
 
export class FixedQueue<T> extends Collections.Queue<T> {
    public maxSize = 0;
 
    constructor(maxSize: number) {
        super();
        this.maxSize = maxSize;
    }
 
    enqueue(elem: T): boolean {
        const val = super.enqueue(elem);
        this.enforceSize();
        return val;
    }
 
    add(elem: T): boolean {
        const val = super.add(elem);
        this.enforceSize();
        return val;
    }
 
    protected enforceSize() {
        while (this.size() > this.maxSize) { this.dequeue(); }
    }
};