Commit bad49713 authored by Grand Francois's avatar Grand Francois
Browse files

ticket #36 : ajout d'un iterateur de tableau commençant par la fin

Showing with 68 additions and 2 deletions
+68 -2
/// <reference path="../node_modules/@types/jasmine/index.d.ts" />
import { ArrayReverseIterator } from "../src/util/iterator";
describe('iterator : ', () => {
it("reverse ( undefined )", () => {
const arr: Object[] = undefined;
const it = new ArrayReverseIterator<Object>(arr);
expect(it.next().done).toBeTruthy();
});
it("reverse( [] )", () => {
const arr: Object[] = [];
const it = new ArrayReverseIterator<Object>(arr);
expect(it.next().done).toBeTruthy();
});
it("reverse( [1] )", () => {
const arr: number[] = [1];
const it = new ArrayReverseIterator<number>(arr);
const v1 = it.next();
expect(v1.done).toBeFalsy();
expect(v1.value).toEqual(1);
const v2 = it.next();
expect(v2.done).toBeTruthy();
});
it("reverse( [1,2] )", () => {
const arr: number[] = [1, 2];
const it = new ArrayReverseIterator<number>(arr);
const v1 = it.next();
expect(v1.done).toBeFalsy();
expect(v1.value).toEqual(2);
const v2 = it.next();
expect(v2.done).toBeFalsy();
expect(v2.value).toEqual(1);
const v3 = it.next();
expect(v3.done).toBeTruthy();
});
});
......@@ -22,3 +22,4 @@ export * from "./util/pair";
export * from "./util/interval";
export * from "./pab/pab_dimension";
export * from "./pab/pab_puissance";
export * from "./util/iterator";
export class ArrayReverseIterator<T> implements IterableIterator<T> {
private _index: number;
constructor(private _arr: any[]) {
this._index = this._arr == undefined ? 0 : this._arr.length - 1;
}
public next(): IteratorResult<T> {
if (this._arr != undefined && this._index >= 0) {
return {
done: false,
value: this._arr[this._index--]
}
} else {
return {
done: true,
value: null
}
}
}
[Symbol.iterator](): IterableIterator<T> {
return this;
}
}
{
"compilerOptions": {
"target": "es5",
"target": "es6",
"module": "commonjs",
"outDir": "./build",
"noImplicitAny": true,
......@@ -12,4 +12,4 @@
"exclude": [
"node_modules"
]
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment