diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index d599f879..a088955b 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -40,6 +40,7 @@ getJasmineRequireObj = (function (jasmineGlobal) { jRequire.base(j$, jasmineGlobal); j$.util = jRequire.util(); j$.Any = jRequire.Any(); + j$.Anything = jRequire.Anything(j$); j$.CallTracker = jRequire.CallTracker(); j$.MockDate = jRequire.MockDate(); j$.Clock = jRequire.Clock(); @@ -146,6 +147,10 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { return new j$.Any(clazz); }; + j$.anything = function() { + return new j$.Anything(); + }; + j$.objectContaining = function(sample) { return new j$.ObjectContaining(sample); }; @@ -967,6 +972,17 @@ getJasmineRequireObj().Any = function() { return Any; }; +getJasmineRequireObj().Anything = function(j$) { + + function Anything() {} + + Anything.prototype.asymmetricMatch = function(other) { + return !j$.util.isUndefined(other) && other !== null; + }; + + return Anything; +}; + getJasmineRequireObj().CallTracker = function() { function CallTracker() { diff --git a/spec/core/AnythingSpec.js b/spec/core/AnythingSpec.js new file mode 100644 index 00000000..5ca3f950 --- /dev/null +++ b/spec/core/AnythingSpec.js @@ -0,0 +1,38 @@ +describe("Anything", function() { + it("matches a string", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch('foo')).toBe(true); + }); + + it("matches a number", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch(42)).toBe(true); + }); + + it("matches an object", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch({ foo: 'bar' })).toBe(true); + }); + + it("matches an array", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch([1,2,3])).toBe(true); + }); + + it("doesn't match undefined", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch()).toBe(false); + expect(anything.asymmetricMatch(undefined)).toBe(false); + }); + + it("doesn't match null", function() { + var anything = new j$.Anything(); + + expect(anything.asymmetricMatch(null)).toBe(false); + }); +}); diff --git a/src/core/Anything.js b/src/core/Anything.js new file mode 100644 index 00000000..489d5f2d --- /dev/null +++ b/src/core/Anything.js @@ -0,0 +1,10 @@ +getJasmineRequireObj().Anything = function(j$) { + + function Anything() {} + + Anything.prototype.asymmetricMatch = function(other) { + return !j$.util.isUndefined(other) && other !== null; + }; + + return Anything; +}; diff --git a/src/core/base.js b/src/core/base.js index 9f295294..00f81116 100644 --- a/src/core/base.js +++ b/src/core/base.js @@ -45,6 +45,10 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { return new j$.Any(clazz); }; + j$.anything = function() { + return new j$.Anything(); + }; + j$.objectContaining = function(sample) { return new j$.ObjectContaining(sample); }; diff --git a/src/core/requireCore.js b/src/core/requireCore.js index 7759bdc0..2dbf43ee 100644 --- a/src/core/requireCore.js +++ b/src/core/requireCore.js @@ -18,6 +18,7 @@ getJasmineRequireObj = (function (jasmineGlobal) { jRequire.base(j$, jasmineGlobal); j$.util = jRequire.util(); j$.Any = jRequire.Any(); + j$.Anything = jRequire.Anything(j$); j$.CallTracker = jRequire.CallTracker(); j$.MockDate = jRequire.MockDate(); j$.Clock = jRequire.Clock();