Commit 252a08a0 authored by Marco Mariani's avatar Marco Mariani

custom operators: simplified to only require .cmp()

parent 5b0db3bd
......@@ -124,47 +124,6 @@
};
JIODate.prototype.eq = function (other) {
var p = lesserPrecision(this._precision, other._precision);
return this.mom.isSame(other.mom, p);
};
JIODate.prototype.ne = function (other) {
return (!this.eq(other));
};
JIODate.prototype.gt = function (other) {
var p = lesserPrecision(this._precision, other._precision);
return this.mom.isAfter(other.mom, p);
};
JIODate.prototype.lt = function (other) {
// XXX using the lesser precision cannot change the result (but check with business calendar)
var p = lesserPrecision(this._precision, other._precision);
return this.mom.isBefore(other.mom, p);
};
JIODate.prototype.ge = function (other) {
// XXX using the lesser precision cannot change the result (but check with business calendar)
var m1 = this.mom,
m2 = other.mom,
p = lesserPrecision(this._precision, other._precision);
return m1.isAfter(m2, p) || m1.isSame(m2, p);
};
JIODate.prototype.le = function (other) {
var m1 = this.mom,
m2 = other.mom,
p = lesserPrecision(this._precision, other._precision);
return m1.isBefore(m2, p) || m1.isSame(m2, p);
};
JIODate.prototype.cmp = function (other) {
var m1 = this.mom,
m2 = other.mom,
......
......@@ -204,8 +204,8 @@ SimpleQuery.prototype["="] = function (object_value, comparison_value,
if (value === undefined) {
return false;
}
if (value.eq !== undefined) {
return value.eq(comparison_value);
if (value.cmp !== undefined) {
return value.cmp(comparison_value) === 0;
}
if (
convertStringToRegExp(
......@@ -248,11 +248,8 @@ SimpleQuery.prototype["!="] = function (object_value, comparison_value,
if (value === undefined) {
return true;
}
if (value.ne !== undefined) {
return value.ne(comparison_value);
}
if (value.eq !== undefined) {
return !value.eq(comparison_value);
if (value.cmp !== undefined) {
return value.cmp(comparison_value) !== 0;
}
if (
convertStringToRegExp(
......@@ -283,8 +280,8 @@ SimpleQuery.prototype["<"] = function (object_value, comparison_value) {
if (typeof value === 'object' && value.hasOwnProperty('content')) {
value = value.content;
}
if (value.lt !== undefined) {
return value.lt(comparison_value);
if (value.cmp !== undefined) {
return value.cmp(comparison_value) < 0;
}
return value < comparison_value;
};
......@@ -307,11 +304,8 @@ SimpleQuery.prototype["<="] = function (object_value, comparison_value) {
if (typeof value === 'object' && value.hasOwnProperty('content')) {
value = value.content;
}
if (value.le !== undefined) {
return value.le(comparison_value);
}
if (value.lt !== undefined && value.eq !== undefined) {
return value.lt(comparison_value) || value.eq(comparison_value);
if (value.cmp !== undefined) {
return value.cmp(comparison_value) <= 0;
}
return value <= comparison_value;
};
......@@ -334,11 +328,8 @@ SimpleQuery.prototype[">"] = function (object_value, comparison_value) {
if (typeof value === 'object' && value.hasOwnProperty('content')) {
value = value.content;
}
if (value.gt !== undefined) {
return value.gt(comparison_value);
}
if (value.lt !== undefined && value.eq !== undefined) {
return !(value.lt(comparison_value) || value.eq(comparison_value));
if (value.cmp !== undefined) {
return value.cmp(comparison_value) > 0;
}
return value > comparison_value;
};
......@@ -361,11 +352,8 @@ SimpleQuery.prototype[">="] = function (object_value, comparison_value) {
if (typeof value === 'object' && value.hasOwnProperty('content')) {
value = value.content;
}
if (value.ge !== undefined) {
return value.ge(comparison_value);
}
if (value.lt !== undefined) {
return !value.lt(comparison_value);
if (value.cmp !== undefined) {
return value.cmp(comparison_value) >= 0;
}
return value >= comparison_value;
};
......
......@@ -62,11 +62,11 @@
test("Passing a JIODate object to the constructor clones it", function () {
var d = JIODate('2012-05-06');
ok(d.eq(JIODate(d)));
strictEqual(d.cmp(JIODate(d)), 0);
});
test("Comparison with eq/ne/gt/lt/ge/le/cmp - any precision", function () {
test("Comparison with .cmp() - any precision", function () {
var data = [
[
jiodate.MSEC,
......@@ -122,58 +122,11 @@
mp = ' - ' + precision;
// 1 vs 2
ok(d1.eq(d2), s1 + ' == ' + s2 + mp);
ok(!d1.ne(d2), 'not (' + s1 + ' != ' + s2 + ')' + mp);
ok(!d1.gt(d2), 'not (' + s1 + ' > ' + s2 + ')' + mp);
ok(d1.ge(d2), s1 + ' >= ' + s2 + mp);
ok(!d1.lt(d2), 'not (' + s1 + ' < ' + s2 + ')' + mp);
ok(d1.le(d2), s1 + ' <= ' + s2 + mp);
strictEqual(d1.cmp(d2), 0, s1 + ' cmp ' + s2 + mp);
// 1 vs 3
ok(!d1.eq(d3), 'not (' + s1 + ' == ' + s3 + ')' + mp);
ok(d1.ne(d3), s1 + ' != ' + s3 + mp);
ok(!d1.gt(d3), 'not (' + s1 + ' > ' + s3 + ')' + mp);
ok(!d1.ge(d3), 'not (' + s1 + ' >= ' + s3 + ')' + mp);
ok(d1.lt(d3), s1 + ' < ' + s3 + mp);
ok(d1.le(d3), s1 + ' <= ' + s3 + mp);
strictEqual(d1.cmp(d3), -1, s1 + ' cmp ' + s3 + mp);
// 2 vs 1
ok(d2.eq(d1), s2 + ' == ' + s1 + mp);
ok(!d2.ne(d1), 'not (' + s2 + ' != ' + s1 + ')' + mp);
ok(!d2.gt(d1), 'not (' + s2 + ' > ' + s1 + ')' + mp);
ok(d2.ge(d1), s2 + ' >= ' + s1 + mp);
ok(!d2.lt(d1), 'not (' + s2 + ' < ' + s1 + ')' + mp);
ok(d2.le(d1), s2 + ' <= ' + s1 + mp);
strictEqual(d2.cmp(d1), 0, s2 + ' cmp ' + s1 + mp);
// 2 vs 3
ok(!d2.eq(d3), 'not (' + s2 + ' == ' + s3 + ')' + mp);
ok(d2.ne(d3), s2 + ' != ' + s3 + mp);
ok(!d2.gt(d3), 'not (' + s2 + ' > ' + s3 + ')' + mp);
ok(!d2.ge(d3), 'not (' + s2 + ' >= ' + s3 + ')' + mp);
ok(d2.lt(d3), s2 + ' < ' + s3 + mp);
ok(d2.le(d3), s2 + ' <= ' + s3 + mp);
strictEqual(d2.cmp(d3), -1, s2 + ' cmp ' + s3 + mp);
// 3 vs 1
ok(!d3.eq(d1), 'not (' + s3 + ' == ' + s1 + ')' + mp);
ok(d3.ne(d1), s3 + ' != ' + s1 + mp);
ok(d3.gt(d1), s3 + ' > ' + s1 + mp);
ok(d3.ge(d1), s3 + ' >= ' + s1 + mp);
ok(!d3.lt(d1), 'not (' + s3 + ' < ' + s1 + ')' + mp);
ok(!d3.le(d1), 'not (' + s3 + ' <= ' + s1 + ')' + mp);
strictEqual(d3.cmp(d1), 1, s3 + ' cmp ' + s1 + mp);
// 3 vs 2
ok(!d3.eq(d2), 'not (' + s3 + ' == ' + s2 + ')' + mp);
ok(d3.ne(d2), s3 + ' != ' + s2 + mp);
ok(d3.gt(d2), s3 + ' > ' + s2 + mp);
ok(d3.ge(d2), s3 + ' >= ' + s2 + mp);
ok(!d3.lt(d2), 'not (' + s3 + ' < ' + s2 + ')' + mp);
ok(!d3.le(d2), 'not (' + s3 + ' <= ' + s2 + ')' + mp);
strictEqual(d3.cmp(d2), 1, s1 + ' cmp ' + s2 + mp);
}
......@@ -267,62 +220,55 @@
dmonth = JIODate('2012-05'),
dyear = JIODate('2012');
ok(dmsec.eq(dsec));
ok(dmsec.eq(dmin));
ok(dmsec.eq(dhour));
ok(dmsec.eq(dday));
ok(dmsec.eq(dmonth));
ok(dmsec.eq(dyear));
ok(dsec.eq(dmsec));
ok(dsec.eq(dmin));
ok(dsec.eq(dhour));
ok(dsec.eq(dday));
ok(dsec.eq(dmonth));
ok(dsec.eq(dyear));
ok(dmin.eq(dmsec));
ok(dmin.eq(dsec));
ok(dmin.eq(dhour));
ok(dmin.eq(dday));
ok(dmin.eq(dmonth));
ok(dmin.eq(dyear));
ok(dhour.eq(dmsec));
ok(dhour.eq(dsec));
ok(dhour.eq(dmin));
ok(dhour.eq(dday));
ok(dhour.eq(dmonth));
ok(dhour.eq(dyear));
ok(dday.eq(dmsec));
ok(dday.eq(dsec));
ok(dday.eq(dmin));
ok(dday.eq(dhour));
ok(dday.eq(dmonth));
ok(dday.eq(dyear));
ok(dmonth.eq(dmsec));
ok(dmonth.eq(dsec));
ok(dmonth.eq(dmin));
ok(dmonth.eq(dhour));
ok(dmonth.eq(dday));
ok(dmonth.eq(dyear));
ok(dyear.eq(dmsec));
ok(dyear.eq(dsec));
ok(dyear.eq(dmin));
ok(dyear.eq(dhour));
ok(dyear.eq(dday));
ok(dyear.eq(dmonth));
ok(!dmsec.lt(JIODate('2012-05-02 06:07:08')));
ok(dmsec.lt(JIODate('2012-05-02 06:07:09')));
ok(dmsec.le(JIODate('2012-05-02 06:07:08')));
ok(!dmsec.gt(JIODate('2012-05-02 06:07:08')));
ok(dmsec.ge(JIODate('2012-05-02 06:07:08')));
ok(!dmsec.ne(JIODate('2012-05-02 06:07:08')));
ok(dmsec.eq(JIODate('2012-05-02 06:07:08')));
strictEqual(dmsec.cmp(dsec), 0);
strictEqual(dmsec.cmp(dmin), 0);
strictEqual(dmsec.cmp(dhour), 0);
strictEqual(dmsec.cmp(dday), 0);
strictEqual(dmsec.cmp(dmonth), 0);
strictEqual(dmsec.cmp(dyear), 0);
strictEqual(dsec.cmp(dmsec), 0);
strictEqual(dsec.cmp(dmin), 0);
strictEqual(dsec.cmp(dhour), 0);
strictEqual(dsec.cmp(dday), 0);
strictEqual(dsec.cmp(dmonth), 0);
strictEqual(dsec.cmp(dyear), 0);
strictEqual(dmin.cmp(dmsec), 0);
strictEqual(dmin.cmp(dsec), 0);
strictEqual(dmin.cmp(dhour), 0);
strictEqual(dmin.cmp(dday), 0);
strictEqual(dmin.cmp(dmonth), 0);
strictEqual(dmin.cmp(dyear), 0);
strictEqual(dhour.cmp(dmsec), 0);
strictEqual(dhour.cmp(dsec), 0);
strictEqual(dhour.cmp(dmin), 0);
strictEqual(dhour.cmp(dday), 0);
strictEqual(dhour.cmp(dmonth), 0);
strictEqual(dhour.cmp(dyear), 0);
strictEqual(dday.cmp(dmsec), 0);
strictEqual(dday.cmp(dsec), 0);
strictEqual(dday.cmp(dmin), 0);
strictEqual(dday.cmp(dhour), 0);
strictEqual(dday.cmp(dmonth), 0);
strictEqual(dday.cmp(dyear), 0);
strictEqual(dmonth.cmp(dmsec), 0);
strictEqual(dmonth.cmp(dsec), 0);
strictEqual(dmonth.cmp(dmin), 0);
strictEqual(dmonth.cmp(dhour), 0);
strictEqual(dmonth.cmp(dday), 0);
strictEqual(dmonth.cmp(dyear), 0);
strictEqual(dyear.cmp(dmsec), 0);
strictEqual(dyear.cmp(dsec), 0);
strictEqual(dyear.cmp(dmin), 0);
strictEqual(dyear.cmp(dhour), 0);
strictEqual(dyear.cmp(dday), 0);
strictEqual(dyear.cmp(dmonth), 0);
strictEqual(dmsec.cmp(JIODate('2012-05-02 06:07:07')), +1);
strictEqual(dmsec.cmp(JIODate('2012-05-02 06:07:08')), 0);
strictEqual(dmsec.cmp(JIODate('2012-05-02 06:07:09')), -1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment