idea ide updates
[scannr.git] / js / flotr2 / lib / jasmine / jasmine.js
blob:a/js/flotr2/lib/jasmine/jasmine.js -> blob:b/js/flotr2/lib/jasmine/jasmine.js
--- a/js/flotr2/lib/jasmine/jasmine.js
+++ b/js/flotr2/lib/jasmine/jasmine.js
@@ -10,8 +10,8 @@
 /**
  * @private
  */
-jasmine.unimplementedMethod_ = function() {
-  throw new Error("unimplemented method");
+jasmine.unimplementedMethod_ = function () {
+    throw new Error("unimplemented method");
 };
 
 /**
@@ -39,12 +39,12 @@
  */
 jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;
 
-jasmine.getGlobal = function() {
-  function getGlobal() {
-    return this;
-  }
-
-  return getGlobal();
+jasmine.getGlobal = function () {
+    function getGlobal() {
+        return this;
+    }
+
+    return getGlobal();
 };
 
 /**
@@ -55,16 +55,16 @@
  * @param base {Object} bound 'this' for the function
  * @param name {Function} function to find
  */
-jasmine.bindOriginal_ = function(base, name) {
-  var original = base[name];
-  if (original.apply) {
-    return function() {
-      return original.apply(base, arguments);
-    };
-  } else {
-    // IE support
-    return jasmine.getGlobal()[name];
-  }
+jasmine.bindOriginal_ = function (base, name) {
+    var original = base[name];
+    if (original.apply) {
+        return function () {
+            return original.apply(base, arguments);
+        };
+    } else {
+        // IE support
+        return jasmine.getGlobal()[name];
+    }
 };
 
 jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
@@ -72,51 +72,51 @@
 jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
 jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
 
-jasmine.MessageResult = function(values) {
-  this.type = 'log';
-  this.values = values;
-  this.trace = new Error(); // todo: test better
-};
-
-jasmine.MessageResult.prototype.toString = function() {
-  var text = "";
-  for (var i = 0; i < this.values.length; i++) {
-    if (i > 0) text += " ";
-    if (jasmine.isString_(this.values[i])) {
-      text += this.values[i];
-    } else {
-      text += jasmine.pp(this.values[i]);
-    }
-  }
-  return text;
-};
-
-jasmine.ExpectationResult = function(params) {
-  this.type = 'expect';
-  this.matcherName = params.matcherName;
-  this.passed_ = params.passed;
-  this.expected = params.expected;
-  this.actual = params.actual;
-  this.message = this.passed_ ? 'Passed.' : params.message;
-
-  var trace = (params.trace || new Error(this.message));
-  this.trace = this.passed_ ? '' : trace;
+jasmine.MessageResult = function (values) {
+    this.type = 'log';
+    this.values = values;
+    this.trace = new Error(); // todo: test better
+};
+
+jasmine.MessageResult.prototype.toString = function () {
+    var text = "";
+    for (var i = 0; i < this.values.length; i++) {
+        if (i > 0) text += " ";
+        if (jasmine.isString_(this.values[i])) {
+            text += this.values[i];
+        } else {
+            text += jasmine.pp(this.values[i]);
+        }
+    }
+    return text;
+};
+
+jasmine.ExpectationResult = function (params) {
+    this.type = 'expect';
+    this.matcherName = params.matcherName;
+    this.passed_ = params.passed;
+    this.expected = params.expected;
+    this.actual = params.actual;
+    this.message = this.passed_ ? 'Passed.' : params.message;
+
+    var trace = (params.trace || new Error(this.message));
+    this.trace = this.passed_ ? '' : trace;
 };
 
 jasmine.ExpectationResult.prototype.toString = function () {
-  return this.message;
+    return this.message;
 };
 
 jasmine.ExpectationResult.prototype.passed = function () {
-  return this.passed_;
+    return this.passed_;
 };
 
 /**
  * Getter for the Jasmine environment. Ensures one gets created
  */
-jasmine.getEnv = function() {
-  var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
-  return env;
+jasmine.getEnv = function () {
+    var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
+    return env;
 };
 
 /**
@@ -125,8 +125,8 @@
  * @param value
  * @returns {Boolean}
  */
-jasmine.isArray_ = function(value) {
-  return jasmine.isA_("Array", value);
+jasmine.isArray_ = function (value) {
+    return jasmine.isA_("Array", value);
 };
 
 /**
@@ -135,8 +135,8 @@
  * @param value
  * @returns {Boolean}
  */
-jasmine.isString_ = function(value) {
-  return jasmine.isA_("String", value);
+jasmine.isString_ = function (value) {
+    return jasmine.isA_("String", value);
 };
 
 /**
@@ -145,8 +145,8 @@
  * @param value
  * @returns {Boolean}
  */
-jasmine.isNumber_ = function(value) {
-  return jasmine.isA_("Number", value);
+jasmine.isNumber_ = function (value) {
+    return jasmine.isA_("Number", value);
 };
 
 /**
@@ -156,8 +156,8 @@
  * @param value
  * @returns {Boolean}
  */
-jasmine.isA_ = function(typeName, value) {
-  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
+jasmine.isA_ = function (typeName, value) {
+    return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';
 };
 
 /**
@@ -166,10 +166,10 @@
  * @param value {Object} an object to be outputted
  * @returns {String}
  */
-jasmine.pp = function(value) {
-  var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
-  stringPrettyPrinter.format(value);
-  return stringPrettyPrinter.string;
+jasmine.pp = function (value) {
+    var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
+    stringPrettyPrinter.format(value);
+    return stringPrettyPrinter.string;
 };
 
 /**
@@ -178,8 +178,8 @@
  * @param {Object} obj object to check
  * @returns {Boolean}
  */
-jasmine.isDomNode = function(obj) {
-  return obj.nodeType > 0;
+jasmine.isDomNode = function (obj) {
+    return obj.nodeType > 0;
 };
 
 /**
@@ -192,8 +192,8 @@
  * @param {Class} clazz
  * @returns matchable object of the type clazz
  */
-jasmine.any = function(clazz) {
-  return new jasmine.Matchers.Any(clazz);
+jasmine.any = function (clazz) {
+    return new jasmine.Matchers.Any(clazz);
 };
 
 /**
@@ -255,41 +255,41 @@
  * @see spyOn, jasmine.createSpy, jasmine.createSpyObj
  * @param {String} name
  */
-jasmine.Spy = function(name) {
-  /**
-   * The name of the spy, if provided.
-   */
-  this.identity = name || 'unknown';
-  /**
-   *  Is this Object a spy?
-   */
-  this.isSpy = true;
-  /**
-   * The actual function this spy stubs.
-   */
-  this.plan = function() {
-  };
-  /**
-   * Tracking of the most recent call to the spy.
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy.mostRecentCall.args = [1, 2];
-   */
-  this.mostRecentCall = {};
-
-  /**
-   * Holds arguments for each call to the spy, indexed by call count
-   * @example
-   * var mySpy = jasmine.createSpy('foo');
-   * mySpy(1, 2);
-   * mySpy(7, 8);
-   * mySpy.mostRecentCall.args = [7, 8];
-   * mySpy.argsForCall[0] = [1, 2];
-   * mySpy.argsForCall[1] = [7, 8];
-   */
-  this.argsForCall = [];
-  this.calls = [];
+jasmine.Spy = function (name) {
+    /**
+     * The name of the spy, if provided.
+     */
+    this.identity = name || 'unknown';
+    /**
+     *  Is this Object a spy?
+     */
+    this.isSpy = true;
+    /**
+     * The actual function this spy stubs.
+     */
+    this.plan = function () {
+    };
+    /**
+     * Tracking of the most recent call to the spy.
+     * @example
+     * var mySpy = jasmine.createSpy('foo');
+     * mySpy(1, 2);
+     * mySpy.mostRecentCall.args = [1, 2];
+     */
+    this.mostRecentCall = {};
+
+    /**
+     * Holds arguments for each call to the spy, indexed by call count
+     * @example
+     * var mySpy = jasmine.createSpy('foo');
+     * mySpy(1, 2);
+     * mySpy(7, 8);
+     * mySpy.mostRecentCall.args = [7, 8];
+     * mySpy.argsForCall[0] = [1, 2];
+     * mySpy.argsForCall[1] = [7, 8];
+     */
+    this.argsForCall = [];
+    this.calls = [];
 };
 
 /**
@@ -303,9 +303,9 @@
  * // defining a spy on an existing property: foo.bar
  * spyOn(foo, 'bar').andCallThrough();
  */
-jasmine.Spy.prototype.andCallThrough = function() {
-  this.plan = this.originalValue;
-  return this;
+jasmine.Spy.prototype.andCallThrough = function () {
+    this.plan = this.originalValue;
+    return this;
 };
 
 /**
@@ -320,11 +320,11 @@
  *
  * @param {Object} value
  */
-jasmine.Spy.prototype.andReturn = function(value) {
-  this.plan = function() {
-    return value;
-  };
-  return this;
+jasmine.Spy.prototype.andReturn = function (value) {
+    this.plan = function () {
+        return value;
+    };
+    return this;
 };
 
 /**
@@ -339,11 +339,11 @@
  *
  * @param {String} exceptionMsg
  */
-jasmine.Spy.prototype.andThrow = function(exceptionMsg) {
-  this.plan = function() {
-    throw exceptionMsg;
-  };
-  return this;
+jasmine.Spy.prototype.andThrow = function (exceptionMsg) {
+    this.plan = function () {
+        throw exceptionMsg;
+    };
+    return this;
 };
 
 /**
@@ -361,9 +361,9 @@
  *
  * @param {Function} fakeFunc
  */
-jasmine.Spy.prototype.andCallFake = function(fakeFunc) {
-  this.plan = fakeFunc;
-  return this;
+jasmine.Spy.prototype.andCallFake = function (fakeFunc) {
+    this.plan = fakeFunc;
+    return this;
 };
 
 /**
@@ -380,36 +380,36 @@
  *
  * expect(foo.bar.callCount).toEqual(0);
  */
-jasmine.Spy.prototype.reset = function() {
-  this.wasCalled = false;
-  this.callCount = 0;
-  this.argsForCall = [];
-  this.calls = [];
-  this.mostRecentCall = {};
-};
-
-jasmine.createSpy = function(name) {
-
-  var spyObj = function() {
-    spyObj.wasCalled = true;
-    spyObj.callCount++;
-    var args = jasmine.util.argsToArray(arguments);
-    spyObj.mostRecentCall.object = this;
-    spyObj.mostRecentCall.args = args;
-    spyObj.argsForCall.push(args);
-    spyObj.calls.push({object: this, args: args});
-    return spyObj.plan.apply(this, arguments);
-  };
-
-  var spy = new jasmine.Spy(name);
-
-  for (var prop in spy) {
-    spyObj[prop] = spy[prop];
-  }
-
-  spyObj.reset();
-
-  return spyObj;
+jasmine.Spy.prototype.reset = function () {
+    this.wasCalled = false;
+    this.callCount = 0;
+    this.argsForCall = [];
+    this.calls = [];
+    this.mostRecentCall = {};
+};
+
+jasmine.createSpy = function (name) {
+
+    var spyObj = function () {
+        spyObj.wasCalled = true;
+        spyObj.callCount++;
+        var args = jasmine.util.argsToArray(arguments);
+        spyObj.mostRecentCall.object = this;
+        spyObj.mostRecentCall.args = args;
+        spyObj.argsForCall.push(args);
+        spyObj.calls.push({object: this, args: args});
+        return spyObj.plan.apply(this, arguments);
+    };
+
+    var spy = new jasmine.Spy(name);
+
+    for (var prop in spy) {
+        spyObj[prop] = spy[prop];
+    }
+
+    spyObj.reset();
+
+    return spyObj;
 };
 
 /**
@@ -418,8 +418,8 @@
  * @param {jasmine.Spy|Object} putativeSpy
  * @returns {Boolean}
  */
-jasmine.isSpy = function(putativeSpy) {
-  return putativeSpy && putativeSpy.isSpy;
+jasmine.isSpy = function (putativeSpy) {
+    return putativeSpy && putativeSpy.isSpy;
 };
 
 /**
@@ -429,15 +429,15 @@
  * @param {String} baseName name of spy class
  * @param {Array} methodNames array of names of methods to make spies
  */
-jasmine.createSpyObj = function(baseName, methodNames) {
-  if (!jasmine.isArray_(methodNames) || methodNames.length === 0) {
-    throw new Error('createSpyObj requires a non-empty array of method names to create spies for');
-  }
-  var obj = {};
-  for (var i = 0; i < methodNames.length; i++) {
-    obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
-  }
-  return obj;
+jasmine.createSpyObj = function (baseName, methodNames) {
+    if (!jasmine.isArray_(methodNames) || methodNames.length === 0) {
+        throw new Error('createSpyObj requires a non-empty array of method names to create spies for');
+    }
+    var obj = {};
+    for (var i = 0; i < methodNames.length; i++) {
+        obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
+    }
+    return obj;
 };
 
 /**
@@ -445,9 +445,9 @@
  *
  * Be careful not to leave calls to <code>jasmine.log</code> in production code.
  */
-jasmine.log = function() {
-  var spec = jasmine.getEnv().currentSpec;
-  spec.log.apply(spec, arguments);
+jasmine.log = function () {
+    var spec = jasmine.getEnv().currentSpec;
+    spec.log.apply(spec, arguments);
 };
 
 /**
@@ -465,8 +465,8 @@
  * @param methodName
  * @returns a Jasmine spy that can be chained with all spy methods
  */
-var spyOn = function(obj, methodName) {
-  return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
+var spyOn = function (obj, methodName) {
+    return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
 };
 if (isCommonJS) exports.spyOn = spyOn;
 
@@ -483,8 +483,8 @@
  * @param {String} desc description of this specification
  * @param {Function} func defines the preconditions and expectations of the spec
  */
-var it = function(desc, func) {
-  return jasmine.getEnv().it(desc, func);
+var it = function (desc, func) {
+    return jasmine.getEnv().it(desc, func);
 };
 if (isCommonJS) exports.it = it;
 
@@ -496,8 +496,8 @@
  * @param {String} desc description of this specification
  * @param {Function} func defines the preconditions and expectations of the spec
  */
-var xit = function(desc, func) {
-  return jasmine.getEnv().xit(desc, func);
+var xit = function (desc, func) {
+    return jasmine.getEnv().xit(desc, func);
 };
 if (isCommonJS) exports.xit = xit;
 
@@ -509,8 +509,8 @@
  *
  * @param {Object} actual Actual value to test against and expected value
  */
-var expect = function(actual) {
-  return jasmine.getEnv().currentSpec.expect(actual);
+var expect = function (actual) {
+    return jasmine.getEnv().currentSpec.expect(actual);
 };
 if (isCommonJS) exports.expect = expect;
 
@@ -519,8 +519,8 @@
  *
  * @param {Function} func Function that defines part of a jasmine spec.
  */
-var runs = function(func) {
-  jasmine.getEnv().currentSpec.runs(func);
+var runs = function (func) {
+    jasmine.getEnv().currentSpec.runs(func);
 };
 if (isCommonJS) exports.runs = runs;
 
@@ -530,8 +530,8 @@
  * @deprecated Use waitsFor() instead
  * @param {Number} timeout milliseconds to wait
  */
-var waits = function(timeout) {
-  jasmine.getEnv().currentSpec.waits(timeout);
+var waits = function (timeout) {
+    jasmine.getEnv().currentSpec.waits(timeout);
 };
 if (isCommonJS) exports.waits = waits;
 
@@ -542,8 +542,8 @@
  * @param {String} optional_timeoutMessage
  * @param {Number} optional_timeout
  */
-var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) {
-  jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments);
+var waitsFor = function (latchFunction, optional_timeoutMessage, optional_timeout) {
+    jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments);
 };
 if (isCommonJS) exports.waitsFor = waitsFor;
 
@@ -554,8 +554,8 @@
  *
  * @param {Function} beforeEachFunction
  */
-var beforeEach = function(beforeEachFunction) {
-  jasmine.getEnv().beforeEach(beforeEachFunction);
+var beforeEach = function (beforeEachFunction) {
+    jasmine.getEnv().beforeEach(beforeEachFunction);
 };
 if (isCommonJS) exports.beforeEach = beforeEach;
 
@@ -566,8 +566,8 @@
  *
  * @param {Function} afterEachFunction
  */
-var afterEach = function(afterEachFunction) {
-  jasmine.getEnv().afterEach(afterEachFunction);
+var afterEach = function (afterEachFunction) {
+    jasmine.getEnv().afterEach(afterEachFunction);
 };
 if (isCommonJS) exports.afterEach = afterEach;
 
@@ -586,8 +586,8 @@
  * @param {String} description A string, usually the class under test.
  * @param {Function} specDefinitions function that defines several specs.
  */
-var describe = function(description, specDefinitions) {
-  return jasmine.getEnv().describe(description, specDefinitions);
+var describe = function (description, specDefinitions) {
+    return jasmine.getEnv().describe(description, specDefinitions);
 };
 if (isCommonJS) exports.describe = describe;
 
@@ -597,38 +597,38 @@
  * @param {String} description A string, usually the class under test.
  * @param {Function} specDefinitions function that defines several specs.
  */
-var xdescribe = function(description, specDefinitions) {
-  return jasmine.getEnv().xdescribe(description, specDefinitions);
+var xdescribe = function (description, specDefinitions) {
+    return jasmine.getEnv().xdescribe(description, specDefinitions);
 };
 if (isCommonJS) exports.xdescribe = xdescribe;
 
 
 // Provide the XMLHttpRequest class for IE 5.x-6.x:
-jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() {
-  function tryIt(f) {
-    try {
-      return f();
-    } catch(e) {
-    }
-    return null;
-  }
-
-  var xhr = tryIt(function() {
-    return new ActiveXObject("Msxml2.XMLHTTP.6.0");
-  }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP.3.0");
+jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function () {
+    function tryIt(f) {
+        try {
+            return f();
+        } catch (e) {
+        }
+        return null;
+    }
+
+    var xhr = tryIt(function () {
+        return new ActiveXObject("Msxml2.XMLHTTP.6.0");
     }) ||
-    tryIt(function() {
-      return new ActiveXObject("Msxml2.XMLHTTP");
-    }) ||
-    tryIt(function() {
-      return new ActiveXObject("Microsoft.XMLHTTP");
-    });
-
-  if (!xhr) throw new Error("This browser does not support XMLHttpRequest.");
-
-  return xhr;
+        tryIt(function () {
+            return new ActiveXObject("Msxml2.XMLHTTP.3.0");
+        }) ||
+        tryIt(function () {
+            return new ActiveXObject("Msxml2.XMLHTTP");
+        }) ||
+        tryIt(function () {
+            return new ActiveXObject("Microsoft.XMLHTTP");
+        });
+
+    if (!xhr) throw new Error("This browser does not support XMLHttpRequest.");
+
+    return xhr;
 } : XMLHttpRequest;
 /**
  * @namespace
@@ -642,59 +642,59 @@
  * @param {Function} childClass
  * @param {Function} parentClass
  */
-jasmine.util.inherit = function(childClass, parentClass) {
-  /**
-   * @private
-   */
-  var subclass = function() {
-  };
-  subclass.prototype = parentClass.prototype;
-  childClass.prototype = new subclass();
-};
-
-jasmine.util.formatException = function(e) {
-  var lineNumber;
-  if (e.line) {
-    lineNumber = e.line;
-  }
-  else if (e.lineNumber) {
-    lineNumber = e.lineNumber;
-  }
-
-  var file;
-
-  if (e.sourceURL) {
-    file = e.sourceURL;
-  }
-  else if (e.fileName) {
-    file = e.fileName;
-  }
-
-  var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
-
-  if (file && lineNumber) {
-    message += ' in ' + file + ' (line ' + lineNumber + ')';
-  }
-
-  return message;
-};
-
-jasmine.util.htmlEscape = function(str) {
-  if (!str) return str;
-  return str.replace(/&/g, '&amp;')
-    .replace(/</g, '&lt;')
-    .replace(/>/g, '&gt;');
-};
-
-jasmine.util.argsToArray = function(args) {
-  var arrayOfArgs = [];
-  for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
-  return arrayOfArgs;
-};
-
-jasmine.util.extend = function(destination, source) {
-  for (var property in source) destination[property] = source[property];
-  return destination;
+jasmine.util.inherit = function (childClass, parentClass) {
+    /**
+     * @private
+     */
+    var subclass = function () {
+    };
+    subclass.prototype = parentClass.prototype;
+    childClass.prototype = new subclass();
+};
+
+jasmine.util.formatException = function (e) {
+    var lineNumber;
+    if (e.line) {
+        lineNumber = e.line;
+    }
+    else if (e.lineNumber) {
+        lineNumber = e.lineNumber;
+    }
+
+    var file;
+
+    if (e.sourceURL) {
+        file = e.sourceURL;
+    }
+    else if (e.fileName) {
+        file = e.fileName;
+    }
+
+    var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
+
+    if (file && lineNumber) {
+        message += ' in ' + file + ' (line ' + lineNumber + ')';
+    }
+
+    return message;
+};
+
+jasmine.util.htmlEscape = function (str) {
+    if (!str) return str;
+    return str.replace(/&/g, '&amp;')
+        .replace(/</g, '&lt;')
+        .replace(/>/g, '&gt;');
+};
+
+jasmine.util.argsToArray = function (args) {
+    var arrayOfArgs = [];
+    for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
+    return arrayOfArgs;
+};
+
+jasmine.util.extend = function (destination, source) {
+    for (var property in source) destination[property] = source[property];
+    return destination;
 };
 
 /**
@@ -702,31 +702,31 @@
  *
  * @constructor
  */
-jasmine.Env = function() {
-  this.currentSpec = null;
-  this.currentSuite = null;
-  this.currentRunner_ = new jasmine.Runner(this);
-
-  this.reporter = new jasmine.MultiReporter();
-
-  this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL;
-  this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL;
-  this.lastUpdate = 0;
-  this.specFilter = function() {
-    return true;
-  };
-
-  this.nextSpecId_ = 0;
-  this.nextSuiteId_ = 0;
-  this.equalityTesters_ = [];
-
-  // wrap matchers
-  this.matchersClass = function() {
-    jasmine.Matchers.apply(this, arguments);
-  };
-  jasmine.util.inherit(this.matchersClass, jasmine.Matchers);
-
-  jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass);
+jasmine.Env = function () {
+    this.currentSpec = null;
+    this.currentSuite = null;
+    this.currentRunner_ = new jasmine.Runner(this);
+
+    this.reporter = new jasmine.MultiReporter();
+
+    this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL;
+    this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL;
+    this.lastUpdate = 0;
+    this.specFilter = function () {
+        return true;
+    };
+
+    this.nextSpecId_ = 0;
+    this.nextSuiteId_ = 0;
+    this.equalityTesters_ = [];
+
+    // wrap matchers
+    this.matchersClass = function () {
+        jasmine.Matchers.apply(this, arguments);
+    };
+    jasmine.util.inherit(this.matchersClass, jasmine.Matchers);
+
+    jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass);
 };
 
 
@@ -739,270 +739,270 @@
  * @returns an object containing jasmine version build info, if set.
  */
 jasmine.Env.prototype.version = function () {
-  if (jasmine.version_) {
-    return jasmine.version_;
-  } else {
-    throw new Error('Version not set');
-  }
+    if (jasmine.version_) {
+        return jasmine.version_;
+    } else {
+        throw new Error('Version not set');
+    }
 };
 
 /**
  * @returns string containing jasmine version build info, if set.
  */
-jasmine.Env.prototype.versionString = function() {
-  if (!jasmine.version_) {
-    return "version unknown";
-  }
-
-  var version = this.version();
-  var versionString = version.major + "." + version.minor + "." + version.build;
-  if (version.release_candidate) {
-    versionString += ".rc" + version.release_candidate;
-  }
-  versionString += " revision " + version.revision;
-  return versionString;
+jasmine.Env.prototype.versionString = function () {
+    if (!jasmine.version_) {
+        return "version unknown";
+    }
+
+    var version = this.version();
+    var versionString = version.major + "." + version.minor + "." + version.build;
+    if (version.release_candidate) {
+        versionString += ".rc" + version.release_candidate;
+    }
+    versionString += " revision " + version.revision;
+    return versionString;
 };
 
 /**
  * @returns a sequential integer starting at 0
  */
 jasmine.Env.prototype.nextSpecId = function () {
-  return this.nextSpecId_++;
+    return this.nextSpecId_++;
 };
 
 /**
  * @returns a sequential integer starting at 0
  */
 jasmine.Env.prototype.nextSuiteId = function () {
-  return this.nextSuiteId_++;
+    return this.nextSuiteId_++;
 };
 
 /**
  * Register a reporter to receive status updates from Jasmine.
  * @param {jasmine.Reporter} reporter An object which will receive status updates.
  */
-jasmine.Env.prototype.addReporter = function(reporter) {
-  this.reporter.addReporter(reporter);
-};
-
-jasmine.Env.prototype.execute = function() {
-  this.currentRunner_.execute();
-};
-
-jasmine.Env.prototype.describe = function(description, specDefinitions) {
-  var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
-
-  var parentSuite = this.currentSuite;
-  if (parentSuite) {
-    parentSuite.add(suite);
-  } else {
-    this.currentRunner_.add(suite);
-  }
-
-  this.currentSuite = suite;
-
-  var declarationError = null;
-  try {
-    specDefinitions.call(suite);
-  } catch(e) {
-    declarationError = e;
-  }
-
-  if (declarationError) {
-    this.it("encountered a declaration exception", function() {
-      throw declarationError;
-    });
-  }
-
-  this.currentSuite = parentSuite;
-
-  return suite;
-};
-
-jasmine.Env.prototype.beforeEach = function(beforeEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.beforeEach(beforeEachFunction);
-  } else {
-    this.currentRunner_.beforeEach(beforeEachFunction);
-  }
+jasmine.Env.prototype.addReporter = function (reporter) {
+    this.reporter.addReporter(reporter);
+};
+
+jasmine.Env.prototype.execute = function () {
+    this.currentRunner_.execute();
+};
+
+jasmine.Env.prototype.describe = function (description, specDefinitions) {
+    var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
+
+    var parentSuite = this.currentSuite;
+    if (parentSuite) {
+        parentSuite.add(suite);
+    } else {
+        this.currentRunner_.add(suite);
+    }
+
+    this.currentSuite = suite;
+
+    var declarationError = null;
+    try {
+        specDefinitions.call(suite);
+    } catch (e) {
+        declarationError = e;
+    }
+
+    if (declarationError) {
+        this.it("encountered a declaration exception", function () {
+            throw declarationError;
+        });
+    }
+
+    this.currentSuite = parentSuite;
+
+    return suite;
+};
+
+jasmine.Env.prototype.beforeEach = function (beforeEachFunction) {
+    if (this.currentSuite) {
+        this.currentSuite.beforeEach(beforeEachFunction);
+    } else {
+        this.currentRunner_.beforeEach(beforeEachFunction);
+    }
 };
 
 jasmine.Env.prototype.currentRunner = function () {
-  return this.currentRunner_;
-};
-
-jasmine.Env.prototype.afterEach = function(afterEachFunction) {
-  if (this.currentSuite) {
-    this.currentSuite.afterEach(afterEachFunction);
-  } else {
-    this.currentRunner_.afterEach(afterEachFunction);
-  }
-
-};
-
-jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) {
-  return {
-    execute: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.it = function(description, func) {
-  var spec = new jasmine.Spec(this, this.currentSuite, description);
-  this.currentSuite.add(spec);
-  this.currentSpec = spec;
-
-  if (func) {
-    spec.runs(func);
-  }
-
-  return spec;
-};
-
-jasmine.Env.prototype.xit = function(desc, func) {
-  return {
-    id: this.nextSpecId(),
-    runs: function() {
-    }
-  };
-};
-
-jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) {
-  if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) {
-    return true;
-  }
-
-  a.__Jasmine_been_here_before__ = b;
-  b.__Jasmine_been_here_before__ = a;
-
-  var hasKey = function(obj, keyName) {
-    return obj !== null && obj[keyName] !== jasmine.undefined;
-  };
-
-  for (var property in b) {
-    if (!hasKey(a, property) && hasKey(b, property)) {
-      mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
-    }
-  }
-  for (property in a) {
-    if (!hasKey(b, property) && hasKey(a, property)) {
-      mismatchKeys.push("expected missing key '" + property + "', but present in actual.");
-    }
-  }
-  for (property in b) {
-    if (property == '__Jasmine_been_here_before__') continue;
-    if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) {
-      mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual.");
-    }
-  }
-
-  if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) {
-    mismatchValues.push("arrays were not the same length");
-  }
-
-  delete a.__Jasmine_been_here_before__;
-  delete b.__Jasmine_been_here_before__;
-  return (mismatchKeys.length === 0 && mismatchValues.length === 0);
-};
-
-jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
-  mismatchKeys = mismatchKeys || [];
-  mismatchValues = mismatchValues || [];
-
-  for (var i = 0; i < this.equalityTesters_.length; i++) {
-    var equalityTester = this.equalityTesters_[i];
-    var result = equalityTester(a, b, this, mismatchKeys, mismatchValues);
-    if (result !== jasmine.undefined) return result;
-  }
-
-  if (a ===