'use strict';

// add function.bind polyfill
if (!Function.prototype.bind) {
    Function.prototype.bind = function(oThis) {
        if (typeof this !== "function") {
            // closest thing possible to the ECMAScript 5 internal IsCallable function
            throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
        }

        var aArgs = Array.prototype.slice.call(arguments, 1),
            fToBind = this,
            FNOP = function() {},
            fBound = function() {
                return fToBind.apply(this instanceof FNOP && oThis ? this : oThis,
                    aArgs.concat(Array.prototype.slice.call(arguments)));
            };

        FNOP.prototype = this.prototype;
        fBound.prototype = new FNOP();

        return fBound;
    };
}

require.config({
    baseUrl: 'lib',
    paths: {
        'forge': 'forge.min'
    },
    shim: {
        sinon: {
            exports: 'sinon',
        },
        forge: {
            exports: 'forge'
        }
    }
});

mocha.setup('bdd');
require(['../tcp-socket-test'], function() {
    (window.mochaPhantomJS || window.mocha).run();
});
