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"); }); }); }); }