"use strict";
var it = require('it'),
assert = require('assert'),
extended = require("../");
it.describe("extended",function (it) {
var isolated;
it.beforeEach(function () {
isolated = extended();
});
it.describe(".register", function () {
it.should("register new plugins", function () {
isolated.register(require("./extenders/extended1"));
assert.isTrue(isolated.isString(""));
assert.isTrue(isolated("hello").isString().value());
assert.isUndefined(extended.isString);
});
it.should("register multiple plugins", function () {
isolated.register(require("./extenders/extended1")).register(require("./extenders/extended2"));
assert.isTrue(isolated.isString(""));
assert.isTrue(isolated("hello").isString().value());
assert.isUndefined(extended.isString);
assert.equal(isolated.multiply("hello", 5), "hellohellohellohellohello");
assert.equal(isolated("hello").multiply(5).value(), "hellohellohellohellohello");
});
it.should("register multiple plugins with aliases", function () {
isolated.register("is", require("./extenders/extended1")).register("string", require("./extenders/extended2"));
assert.isTrue(isolated.is.isString(""));
assert.isTrue(isolated.is("hello").isString().value());
assert.equal(isolated.string.multiply("hello", 5), "hellohellohellohellohello");
assert.equal(isolated.string("hello").multiply(5).value(), "hellohellohellohellohello");
});
});
}).as(module);