UNPKG

@drozdik.m/comparator-handler

Version:

Class that handles comparators and makes it easy for programmer to compare objects or primitive types inside more complicated classes.

84 lines (83 loc) 3.89 kB
exports.__esModule = true; var ComparatorHandler_1 = require("../src/ComparatorHandler"); var unit_test_1 = require("@drozdik.m/unit-test"); //-----TESTING CLASSES----- var NoIComparable = /** @class */ (function () { function NoIComparable(n) { this.someNumber = n; } return NoIComparable; }()); var YesIComparable = /** @class */ (function () { function YesIComparable(n) { this.someNumber = n; } YesIComparable.prototype.GetComparator = function () { return function (a, b) { if (a.someNumber < b.someNumber) return 1; if (a.someNumber > b.someNumber) return -1; return 0; }; }; return YesIComparable; }()); var unitTest = new unit_test_1.UnitTest("Comparator handler"); unitTest.AddTestCase("Default comparator", function () { var comparatorHandler1 = new ComparatorHandler_1.ComparatorHandler(); unit_test_1.Assert.AreEqual(comparatorHandler1.Compare(1, 2), -1); unit_test_1.Assert.AreEqual(comparatorHandler1.Compare(2, 1), 1); unit_test_1.Assert.AreEqual(comparatorHandler1.Compare(1, 1), 0); }); unitTest.AddTestCase("Explicit comparator", function () { var comparatorHandler2 = new ComparatorHandler_1.ComparatorHandler(function (a, b) { if (a < b) return 1; if (a > b) return -1; return 0; }); unit_test_1.Assert.AreEqual(comparatorHandler2.Compare(1, 2), 1); unit_test_1.Assert.AreEqual(comparatorHandler2.Compare(2, 1), -1); unit_test_1.Assert.AreEqual(comparatorHandler2.Compare(1, 1), 0); }); unitTest.AddTestCase("Automatic IComparable recognition", function () { var comparatorHandler3 = new ComparatorHandler_1.ComparatorHandler(); var object1 = new YesIComparable(1); var object2 = new YesIComparable(1); var object3 = new YesIComparable(2); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object3), 1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object3, object1), -1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object2), 0); comparatorHandler3.SetComparator(function (a, b) { return 2; }); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object3), 1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object3, object1), 1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object2), 1); comparatorHandler3.SetAutomaticIComparableRecognition(true); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object3), 1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object3, object1), -1); unit_test_1.Assert.AreEqual(comparatorHandler3.Compare(object1, object2), 0); }); unitTest.AddTestCase("Explicit comparator and automatic IComparable recognition", function () { var object1 = new YesIComparable(1); var object2 = new YesIComparable(1); var object3 = new YesIComparable(2); var comparatorHandler4 = new ComparatorHandler_1.ComparatorHandler(function (a, b) { return 2; }); unit_test_1.Assert.AreEqual(comparatorHandler4.Compare(object1, object3), 1); unit_test_1.Assert.AreEqual(comparatorHandler4.Compare(object3, object1), 1); unit_test_1.Assert.AreEqual(comparatorHandler4.Compare(object1, object2), 1); }); unitTest.AddTestCase("Clone", function () { var comparatorHandler4 = new ComparatorHandler_1.ComparatorHandler(function (a, b) { return 2; }); var comparatorHandler5 = comparatorHandler4.Clone(); comparatorHandler5.SetAutomaticIComparableRecognition(true); unit_test_1.Assert.AreNotEqual(comparatorHandler5.automaticIComparableRecognition, comparatorHandler4.automaticIComparableRecognition); }); unitTest.Run();