On Mar 25, 2:01 am, Ates <
ates.go...@gmail.com> wrote:
> I've just committed a change with new/improved assertion functions.
> These will be going into v0.6. The full set has now become:
>
> assertEqual: function (expected, actual, message)
> assertException: function (fn, message)
> assertFalse: function (actual, message)
> assertIdentical: function (expected, actual, message)
> assertInstanceOf: function (cls, actual, message)
> assertMatch: function (re, actual, message)
> assertNaN: function (actual, message)
> assertNotEqual: function (expected, actual, message)
> assertNotIdentical: function (expected, actual, message)
> assertNotInstanceOf: function (cls, actual, message)
> assertNotMatch: function (re, actual, message)
> assertNotNaN: function (actual, message)
> assertNotNull: function (actual, message)
> assertNotTypeOf: function (typ, actual, message)
> assertNotUndefined: function (actual, message)
> assertNull: function (actual, message)
> assertTrue: function (actual, message)
> assertTypeOf: function (typ, actual, message)
> assertUndefined: function (actual, message)
> fail: function (message)
I've opted not to have separate assert[Enum/Hash]Equal functions
because assertEqual does a lax comparison that can compare arrays/
objects through a rudimentary hash string. In contrast,
assertIndentical does a strict comparison. Here are the tests against
these functions to illustrate their behaviour:
function testAssertIdenticalPositive() {
a.assertIdentical(1, 1);
a.assertIdentical(null, null);
a.assertIdentical(undefined, undefined);
var obj = {};
a.assertIdentical(obj, obj);
}
function testAssertIdenticalNegative() {
a.assertException(function () {
a.assertIdentical(1, "1");
});
a.assertException(function () {
a.assertIdentical(null, undefined);
});
a.assertException(function () {
a.assertIdentical(false, 0);
});
}
function testAssertNotIdenticalPositive() {
a.assertNotIdentical("1", 1);
a.assertNotIdentical(undefined, null);
a.assertNotIdentical(1, true);
var obj1 = {};
var obj2 = {};
a.assertNotIdentical(obj1, obj2);
}
function testAssertNotIdenticalNegative() {
a.assertException(function () {
a.assertNotIdentical(1, 1);
});
a.assertException(function () {
a.assertNotIdentical(null, null);
});
a.assertException(function () {
a.assertNotIdentical(undefined, undefined);
});
var obj = {};
a.assertException(function () {
a.assertNotIdentical(obj, obj);
});
}
function testAssertEqualPositive() {
a.assertEqual(1, "1");
a.assertEqual({ a: 1, b: [ 2, 3 ] }, { a: 1, b: [ 2, 3 ] });
}
function testAssertEqualNegative() {
a.assertException(function () {
a.assertEqual("2", 1);
});
a.assertException(function () {
a.assertEqual({}, null);
});
a.assertException(function () {
a.assertEqual(undefined, null);
});
}
function testAssertNotEqualPositive() {
a.assertNotEqual(1, "2");
a.assertNotEqual(null, {});
}
function testAssertNotEqualNegative() {
a.assertException(function () {
a.assertNotEqual("2", 2);
});
a.assertException(function () {
a.assertNotEqual({ a: 1, b: [ 2, 3 ] }, { a: 1, b: [ 2,
3 ] });
});
}