All files / patterns/iterator/src iterator.ts

100% Statements 11/11
100% Branches 2/2
100% Functions 3/3
100% Lines 11/11

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  2x 2x     5x 5x     7x 7x 6x 6x   7x     10x     2x                  
export interface IteratorInterface<Element> {
    next(): Element | null;
    hasNext(): boolean;
}
 
export class Iterator<Element> implements IteratorInterface<Element> {
    private readonly collection: Element[];
    private position: number;
 
    public constructor(collection: Element[]) {
        this.collection = collection;
        this.position = 0;
    }
 
    public next(): Element | null {
        let result = null;
 
        if (this.hasNext()) {
            result = this.collection[this.position];
            this.position += 1;
        }
 
        return result;
    }
 
    public hasNext(): boolean {
        return this.position < this.collection.length;
    }
}