angular-cn/modules/angular2/test/common/pipes/replace_pipe_spec.ts

74 lines
2.1 KiB
TypeScript

import {
ddescribe,
describe,
it,
iit,
xit,
expect,
beforeEach,
afterEach,
browserDetection,
inject,
TestComponentBuilder,
AsyncTestCompleter
} from 'angular2/testing_internal';
import {ReplacePipe} from 'angular2/common';
import {RegExpWrapper, StringJoiner} from 'angular2/src/facade/lang';
export function main() {
describe("ReplacePipe", () => {
var someNumber: number;
var str;
var pipe;
beforeEach(() => {
someNumber = 42;
str = 'Douglas Adams';
pipe = new ReplacePipe();
});
describe("transform", () => {
it("should not support input other than strings and numbers", () => {
expect(() => pipe.transform({}, ["Douglas", "Hugh"])).toThrow();
expect(() => pipe.transform([1, 2, 3], ["Douglas", "Hugh"])).toThrow();
});
it("should not support patterns other than strings and regular expressions", () => {
expect(() => pipe.transform(str, [{}, "Hugh"])).toThrow();
expect(() => pipe.transform(str, [null, "Hugh"])).toThrow();
expect(() => pipe.transform(str, [123, "Hugh"])).toThrow();
});
it("should not support replacements other than strings and functions", () => {
expect(() => pipe.transform(str, ["Douglas", {}])).toThrow();
expect(() => pipe.transform(str, ["Douglas", null])).toThrow();
expect(() => pipe.transform(str, ["Douglas", 123])).toThrow();
});
it("should return a new string with the pattern replaced", () => {
var result1 = pipe.transform(str, ["Douglas", "Hugh"]);
var result2 = pipe.transform(str, [RegExpWrapper.create("a"), "_"]);
var result3 = pipe.transform(str, [RegExpWrapper.create("a", "i"), "_"]);
var f = (x => { return "Adams!"; });
var result4 = pipe.transform(str, ["Adams", f]);
var result5 = pipe.transform(someNumber, ["2", "4"]);
expect(result1).toEqual("Hugh Adams");
expect(result2).toEqual("Dougl_s Ad_ms");
expect(result3).toEqual("Dougl_s _d_ms");
expect(result4).toEqual("Douglas Adams!");
expect(result5).toEqual("44");
});
});
});
}