Add tests

This commit is contained in:
Kanchalai Tanglertsampan 2017-02-22 10:24:00 -08:00
parent f55167e565
commit 43cb2f5646
2 changed files with 83 additions and 0 deletions

View file

@ -0,0 +1,40 @@
// @module: commonjs
// @target: es6
// @noImplicitAny: true
export interface StrategicState {
lastStrategyApplied?: string;
}
export function strategy<T extends StrategicState>(stratName: string, gen: (a: T) => IterableIterator<T | undefined>): (a: T) => IterableIterator<T | undefined> {
return function*(state) {
for (const next of gen(state)) {
if (next) {
next.lastStrategyApplied = stratName;
}
yield next;
}
}
}
export interface Strategy<T> {
(a: T): IterableIterator<T | undefined>;
}
export interface State extends StrategicState {
foo: number;
}
export const Nothing1: Strategy<State> = strategy("Nothing", function*(state: State) {
return state;
});
export const Nothing2: Strategy<State> = strategy("Nothing", function*(state: State) {
yield state;
});
export const Nothing3: Strategy<State> = strategy("Nothing", function* (state: State) {
yield ;
return state;
});

View file

@ -0,0 +1,43 @@
// @module: commonjs
// @target: es6
// @noImplicitAny: true
export interface StrategicState {
lastStrategyApplied?: string;
}
export function strategy<T extends StrategicState>(stratName: string, gen: (a: T) => IterableIterator<T | undefined>): (a: T) => IterableIterator<T | undefined> {
return function*(state) {
for (const next of gen(state)) {
if (next) {
next.lastStrategyApplied = stratName;
}
yield next;
}
}
}
export interface Strategy<T> {
(a: T): IterableIterator<T | undefined>;
}
export interface State extends StrategicState {
foo: number;
}
export const Nothing: Strategy<State> = strategy("Nothing", function* (state: State) {
yield 1;
return state;
});
export const Nothing1: Strategy<State> = strategy("Nothing", function* (state: State) {
});
export const Nothing2: Strategy<State> = strategy("Nothing", function* (state: State) {
return 1;
});
export const Nothing3: Strategy<State> = strategy("Nothing", function* (state: State) {
yield state;
return 1;
});