All four basic arithmetic operators

pull/2/head
Louis Chatriot 12 years ago
parent e255cde1a2
commit 357d83a2ba
  1. 15
      lib/model.js
  2. 27
      test/model.test.js

@ -302,10 +302,25 @@ function areComparable (a, b) {
} }
/**
* Arithmetic comparators
*/
comparisonFunctions.$lt = function (a, b) { comparisonFunctions.$lt = function (a, b) {
return areComparable(a, b) && a < b; return areComparable(a, b) && a < b;
}; };
comparisonFunctions.$lte = function (a, b) {
return areComparable(a, b) && a <= b;
};
comparisonFunctions.$gt = function (a, b) {
return areComparable(a, b) && a > b;
};
comparisonFunctions.$gte = function (a, b) {
return areComparable(a, b) && a >= b;
};
/** /**
* Match any of the subqueries * Match any of the subqueries

@ -434,7 +434,8 @@ describe('Model', function () {
it('Can compare numbers, with or without dot notation', function () { it('Can compare numbers, with or without dot notation', function () {
model.match({ a: 5 }, { a: { $lt: 6 } }).should.equal(true); model.match({ a: 5 }, { a: { $lt: 6 } }).should.equal(true);
model.match({ a: 5 }, { a: { $lt: 3 } }).should.equal(false); model.match({ a: 5 }, { a: { $lt: 5 } }).should.equal(false);
model.match({ a: 5 }, { a: { $lt: 4 } }).should.equal(false);
model.match({ a: { b: 5 } }, { "a.b": { $lt: 6 } }).should.equal(true); model.match({ a: { b: 5 } }, { "a.b": { $lt: 6 } }).should.equal(true);
model.match({ a: { b: 5 } }, { "a.b": { $lt: 3 } }).should.equal(false); model.match({ a: { b: 5 } }, { "a.b": { $lt: 3 } }).should.equal(false);
@ -457,6 +458,30 @@ describe('Model', function () {
}); });
// General behaviour is tested in the block about $lt. Here we just test operators work
describe('Other comparison operators: $lte, $gt, $gte', function () {
it('$lte', function () {
model.match({ a: 5 }, { a: { $lte: 6 } }).should.equal(true);
model.match({ a: 5 }, { a: { $lte: 5 } }).should.equal(true);
model.match({ a: 5 }, { a: { $lte: 4 } }).should.equal(false);
});
it('$gt', function () {
model.match({ a: 5 }, { a: { $gt: 6 } }).should.equal(false);
model.match({ a: 5 }, { a: { $gt: 5 } }).should.equal(false);
model.match({ a: 5 }, { a: { $gt: 4 } }).should.equal(true);
});
it('$gte', function () {
model.match({ a: 5 }, { a: { $gte: 6 } }).should.equal(false);
model.match({ a: 5 }, { a: { $gte: 5 } }).should.equal(true);
model.match({ a: 5 }, { a: { $gte: 4 } }).should.equal(true);
});
});
describe('Logical operators $or, $and', function () { describe('Logical operators $or, $and', function () {
it('Any of the subqueries should match for an $or to match', function () { it('Any of the subqueries should match for an $or to match', function () {

Loading…
Cancel
Save