ArrayRunner.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";
  2. var assert = require("assert"),
  3. Runner = require("../../../lib/query/Runner"),
  4. ArrayRunner = require("../../../lib/query/ArrayRunner");
  5. module.exports = {
  6. "ArrayRunner": {
  7. "#constructor": {
  8. "should accept an array of data": function(){
  9. assert.doesNotThrow(function(){
  10. var ar = new ArrayRunner([1,2,3]);
  11. });
  12. },
  13. "should fail if not given an array": function(){
  14. assert.throws(function(){
  15. var ar = new ArrayRunner();
  16. });
  17. assert.throws(function(){
  18. var ar = new ArrayRunner(123);
  19. });
  20. }
  21. },
  22. "#getNext": {
  23. "should return the next item in the array": function(done){
  24. var ar = new ArrayRunner([1,2,3]);
  25. ar.getNext(function(err, out, state){
  26. assert.strictEqual(state, Runner.RunnerState.RUNNER_ADVANCED);
  27. assert.strictEqual(out, 1);
  28. ar.getNext(function(err, out, state){
  29. assert.strictEqual(state, Runner.RunnerState.RUNNER_ADVANCED);
  30. assert.strictEqual(out, 2);
  31. ar.getNext(function(err, out, state){
  32. assert.strictEqual(state, Runner.RunnerState.RUNNER_ADVANCED);
  33. assert.strictEqual(out, 3);
  34. done();
  35. });
  36. });
  37. });
  38. },
  39. "should return EOF if there is nothing left in the array": function(done){
  40. var ar = new ArrayRunner([1]);
  41. ar.getNext(function(err, out, state){
  42. assert.strictEqual(state, Runner.RunnerState.RUNNER_ADVANCED);
  43. assert.strictEqual(out, 1);
  44. ar.getNext(function(err, out, state){
  45. assert.strictEqual(state, Runner.RunnerState.RUNNER_EOF);
  46. assert.strictEqual(out, undefined);
  47. done();
  48. });
  49. });
  50. }
  51. },
  52. "#getInfo": {
  53. "should return nothing if explain flag is not set": function(){
  54. var ar = new ArrayRunner([1,2,3]);
  55. assert.strictEqual(ar.getInfo(), undefined);
  56. },
  57. "should return information about the runner if explain flag is set": function(){
  58. var ar = new ArrayRunner([1,2,3]);
  59. assert.deepEqual(ar.getInfo(true), {
  60. "type":"ArrayRunner",
  61. "nDocs":3,
  62. "position":0,
  63. "state": Runner.RunnerState.RUNNER_ADVANCED
  64. });
  65. }
  66. },
  67. "#reset": {
  68. "should clear out the runner": function(){
  69. var ar = new ArrayRunner([1,2,3]);
  70. ar.reset();
  71. assert.deepEqual(ar.getInfo(true), {
  72. "type":"ArrayRunner",
  73. "nDocs":0,
  74. "position":0,
  75. "state": Runner.RunnerState.RUNNER_DEAD
  76. });
  77. }
  78. }
  79. }
  80. };
  81. if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).run();