@drozdik.m/event
Version:
Object for handling events.
99 lines (98 loc) • 3.24 kB
JavaScript
exports.__esModule = true;
var unit_test_1 = require("@drozdik.m/unit-test");
var Event_1 = require("../src/Event");
var unitTest = new unit_test_1.UnitTest("Event");
var Foo = /** @class */ (function () {
function Foo(id) {
if (id === void 0) { id = 5; }
this.id = id;
}
return Foo;
}());
var Args = /** @class */ (function () {
function Args(value) {
this.value = value;
}
return Args;
}());
unitTest.AddTestCase("Add, Invoke", function () {
var event = new Event_1.Event();
var counter = 0;
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(0, counter);
event.Add(function (caller, args) {
counter++;
unit_test_1.Assert.IsNull(caller);
unit_test_1.Assert.IsNull(args);
});
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(1, counter);
event.Add(function (caller, args) {
counter++;
unit_test_1.Assert.IsNull(caller);
unit_test_1.Assert.IsNull(args);
});
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(3, counter);
});
unitTest.AddTestCase("Remove", function () {
var event = new Event_1.Event();
var counter = 0;
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(0, counter);
event.Add(function (caller, args) {
counter++;
unit_test_1.Assert.IsNull(caller);
unit_test_1.Assert.IsNull(args);
});
function NullCallback(caller, args) {
counter++;
unit_test_1.Assert.IsNull(caller);
unit_test_1.Assert.IsNull(args);
}
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(1, counter);
event.Add(NullCallback);
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(3, counter);
for (var i = 1; i < 4; i++) {
event.Remove(NullCallback);
event.Invoke(null, null);
unit_test_1.Assert.AreEqual(3 + i, counter);
}
});
unitTest.AddTestCase("Invoke with args", function () {
var event = new Event_1.Event();
var counter = 0;
event.Add(function (caller, args) {
counter += args.value;
unit_test_1.Assert.IsNull(caller);
});
event.Invoke(null, new Args(1));
unit_test_1.Assert.AreEqual(1, counter);
event.Invoke(null, new Args(4));
unit_test_1.Assert.AreEqual(5, counter);
event.Add(function (caller, args) {
counter += args.value;
unit_test_1.Assert.IsNull(caller);
});
event.Invoke(null, new Args(2));
unit_test_1.Assert.AreEqual(9, counter);
});
unitTest.AddTestCase("Count, Empty, Clear", function () {
var event = new Event_1.Event();
unit_test_1.Assert.AreEqual(0, event.Count());
unit_test_1.Assert.IsTrue(event.IsEmpty());
event.Add(function (caller, args) {
});
unit_test_1.Assert.AreEqual(1, event.Count());
unit_test_1.Assert.IsFalse(event.IsEmpty());
event.Add(function (caller, args) {
});
unit_test_1.Assert.AreEqual(2, event.Count());
unit_test_1.Assert.IsFalse(event.IsEmpty());
event.Clear();
unit_test_1.Assert.AreEqual(0, event.Count());
unit_test_1.Assert.IsTrue(event.IsEmpty());
});
unitTest.Run();