Matcher2.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. "use strict";
  2. var assert = require("assert"),
  3. MatchDetails = require("../../../../lib/pipeline/matcher/MatchDetails.js"),
  4. Matcher2 = require("../../../../lib/pipeline/matcher/Matcher2.js");
  5. module.exports = {
  6. "Matcher2": {
  7. "Constructor": function() {
  8. var m = new Matcher2({"a":1});
  9. },
  10. "Basic": function() {
  11. var query = {"a":"b"},
  12. m = new Matcher2(query);
  13. assert(m.matches(query));
  14. },
  15. "DoubleEqual": function() {
  16. var query = {"a":5},
  17. m = new Matcher2(query);
  18. assert(m.matches(query));
  19. },
  20. "MixedNumericEqual": function() { //not sure if we need this. Same as DoubleEqual in munge
  21. var query = {"a":5},
  22. m = new Matcher2(query);
  23. assert(m.matches(query));
  24. },
  25. "MixedNumericGt": function() {
  26. var query = {"a":{"$gt":4}},
  27. m = new Matcher2(query);
  28. assert.ok(m.matches({"a":5}));
  29. },
  30. "MixedNumericIN": function() {
  31. var query = {"a":{"$in":[4,6]}},
  32. m = new Matcher2(query);
  33. assert.ok(m.matches({"a":4.0}));
  34. assert.ok(!m.matches({"a":5.0}));
  35. assert.ok(m.matches({"a":4}));
  36. },
  37. "MixedNumericEmbedded": function() {
  38. var query = {"a":{"x":1}},
  39. m = new Matcher2(query);
  40. assert.ok(m.matches({"a":{"x":1}}));
  41. assert.ok(m.matches({"a":{"x":1.0}}));
  42. },
  43. "Size": function() {
  44. var query = {"a":{"$size":4}},
  45. m = new Matcher2(query);
  46. assert.ok(m.matches({"a":[1,2,3,4]}));
  47. assert.ok(!m.matches({"a":[1,2,3]}));
  48. assert.ok(!m.matches({"a":[1,2,3,'a','b']}));
  49. assert.ok(!m.matches({"a":[[1,2,3,4]]}));
  50. },
  51. "WithinBox - mongo Geo function, not porting": function() {},
  52. "WithinPolygon - mongo Geo function, not porting": function() {},
  53. "WithinCenter - mongo Geo function, not porting": function() {},
  54. "ElemMatchKey": function() {
  55. var query = {"a.b":1},
  56. m = new Matcher2(query),
  57. md = new MatchDetails();
  58. md.requestElemMatchKey();
  59. assert.ok(!md.hasElemMatchKey());
  60. assert.ok(m.matches({"a":[{"b":1}]}, md));
  61. assert.ok(md.hasElemMatchKey());
  62. assert.equal("0", md.elemMatchKey());
  63. },
  64. "WhereSimple1 - mongo MapReduce function, not available ": function() {
  65. },
  66. "AllTiming - mongo benchmarking function, not available": function() {
  67. }
  68. }
  69. };
  70. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);