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