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