SetIsSubsetExpression.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. var assert = require("assert"),
  3. SetIsSubsetExpression = require("../../../../lib/pipeline/expressions/SetIsSubsetExpression"),
  4. Expression = require("../../../../lib/pipeline/expressions/Expression");
  5. module.exports = {
  6. "SetIsSubsetExpression": {
  7. "constructor()": {
  8. "should throw Error when constructing without args": function testConstructor() {
  9. assert.throws(function() {
  10. new SetIsSubsetExpression();
  11. });
  12. }
  13. },
  14. "#getOpName()": {
  15. "should return the correct op name; $setissubset": function testOpName() {
  16. assert.equal(new SetIsSubsetExpression([1,2,3],[4,5,6]).getOpName(), "$setissubset");
  17. }
  18. },
  19. "#evaluateInternal()": {
  20. "Should fail if array1 is not an array": function testArg1() {
  21. var array1 = "not an array",
  22. array2 = [6, 7, 8, 9];
  23. assert.throws(function() {
  24. Expression.parseOperand({
  25. $setissubset: ["$array1", "$array2"]
  26. }).evaluateInternal({
  27. array1: array1,
  28. array2: array2
  29. });
  30. });
  31. },
  32. "Should fail if array2 is not an array": function testArg2() {
  33. var array1 = [1, 2, 3, 4],
  34. array2 = "not an array";
  35. assert.throws(function() {
  36. Expression.parseOperand({
  37. $setissubset: ["$array1", "$array2"]
  38. }).evaluateInternal({
  39. array1: array1,
  40. array2: array2
  41. });
  42. });
  43. },
  44. "Should fail if both are not an array": function testArg1andArg2() {
  45. var array1 = "not an array",
  46. array2 = "not an array";
  47. assert.throws(function() {
  48. Expression.parseOperand({
  49. $setissubset: ["$array1", "$array2"]
  50. }).evaluateInternal({
  51. array1: array1,
  52. array2: array2
  53. });
  54. });
  55. },
  56. "Should pass and return a true": function testBasicAssignment() {
  57. var array1 = [1, 2, 3, 4, 5],
  58. array2 = [2,3];
  59. assert.strictEqual(Expression.parseOperand({
  60. $setissubset: ["$array1", "$array2"]
  61. }).evaluateInternal({
  62. array1: array1,
  63. array2: array2
  64. }), true);
  65. },
  66. "Should pass and return false": function testBasicAssignment() {
  67. var array1 = [1, 2, 3, 4, 5],
  68. array2 = [7, 8, 9];
  69. assert.strictEqual(Expression.parseOperand({
  70. $setissubset: ["$array1", "$array2"]
  71. }).evaluateInternal({
  72. array1: array1,
  73. array2: array2
  74. }), true);
  75. },
  76. }
  77. }
  78. };
  79. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run(process.exit);