Matcher2_test.js 2.3 KB

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