| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- "use strict";
- var assert = require("assert"),
- Variables = require("../../../../lib/pipeline/expressions/Variables");
- // Mocha one-liner to make these tests self-hosted
- if (!module.parent)return(require.cache[__filename] = null, (new (require("mocha"))({ui: "exports", reporter: "spec", grep: process.env.TEST_GREP})).addFile(__filename).run(process.exit));
- exports.Variables = {
- "constructor": {
- "should be able to construct empty variables": function() {
- new Variables();
- },
- "should be able to give number of variables": function() {
- new Variables(5);
- },
- "should throw if not given a number": function() {
- assert.throws(function() {
- new Variables('hi');
- });
- assert.throws(function() {
- new Variables({});
- });
- assert.throws(function() {
- new Variables([]);
- });
- assert.throws(function() {
- new Variables(new Date());
- });
- },
- "setValue throws if no args given": function() {
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue(1, 'hi');
- });
- },
- },
- "#setRoot": {
- "should set the _root variable to the passed value": function() {
- var variables = new Variables(),
- root = {'hi':'hi'};
- variables.setRoot(root);
- assert.equal(root, variables._root);
- },
- "must be an object": function mustBeObject() {
- var variables = new Variables(),
- root = 'hi';
- assert.throws(function() {
- variables.setRoot(root);
- });
- },
- },
- "#clearRoot": {
- "should set the _root variable to empty obj": function() {
- var variables = new Variables(),
- root = {'hi':'hi'};
- variables.setRoot(root);
- variables.clearRoot();
- assert.deepEqual({}, variables._root);
- },
- },
- "#getRoot": {
- "should return the _root variable": function() {
- var variables = new Variables(),
- root = {'hi':'hi'};
- variables.setRoot(root);
- assert.equal(root, variables.getRoot());
- },
- },
- "#setValue": {
- "id must be number": function() {
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue('hi', 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue(null, 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue(new Date(), 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue([], 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.setValue({}, 5);
- });
- assert.doesNotThrow(function() {
- var variables = new Variables(5);
- variables.setValue(1, 5);
- });
- },
- "cannot use root id": function() {
- assert.throws(function() {
- var variables = new Variables(5);
- variables.setValue(Variables.ROOT_ID, 'hi');
- });
- },
- "cannot use id larger than initial size": function() {
- assert.throws(function() {
- var variables = new Variables(5);
- variables.setValue(5, 'hi'); //off by one check
- });
- assert.throws(function() {
- var variables = new Variables(5);
- variables.setValue(6, 'hi');
- });
- },
- "sets the value": function() {
- var variables = new Variables(5);
- variables.setValue(1, 'hi'); //off by one check
- assert.equal(variables._rest[1], 'hi');
- },
- },
- "#getValue": {
- "id must be number": function() {
- assert.throws(function() {
- var variables = new Variables();
- variables.getValue('hi', 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getValue(null, 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getValue(new Date(), 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getValue([], 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getValue({}, 5);
- });
- assert.doesNotThrow(function() {
- var variables = new Variables(5);
- variables.getValue(1, 5);
- });
- },
- "returns root when given root id": function() {
- var variables = new Variables(5),
- root = {hi:'hi'};
- variables.setRoot(root);
- variables.getValue(Variables.ROOT_ID, root);
- },
- "cannot use id larger than initial size": function() {
- assert.throws(function() {
- var variables = new Variables(5);
- variables.getValue(5, 'hi'); //off by one check
- });
- assert.throws(function() {
- var variables = new Variables(5);
- variables.getValue(6, 'hi');
- });
- },
- "gets the value": function() {
- var variables = new Variables(5);
- variables.setValue(1, 'hi');
- assert.equal(variables.getValue(1), 'hi');
- },
- },
- "#getDocument": {
- "id must be number": function() {
- assert.throws(function() {
- var variables = new Variables();
- variables.getDocument('hi', 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getDocument(null, 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getDocument(new Date(), 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getDocument([], 5);
- });
- assert.throws(function() {
- var variables = new Variables();
- variables.getDocument({}, 5);
- });
- assert.doesNotThrow(function() {
- var variables = new Variables(5);
- variables.getDocument(1, 5);
- });
- },
- "returns root when given root id": function() {
- var variables = new Variables(5),
- root = {hi:'hi'};
- variables.setRoot(root);
- variables.getDocument(Variables.ROOT_ID, root);
- },
- "cannot use id larger than initial size": function() {
- assert.throws(function() {
- var variables = new Variables(5);
- variables.getDocument(5, 'hi'); //off by one check
- });
- assert.throws(function() {
- var variables = new Variables(5);
- variables.getDocument(6, 'hi');
- });
- },
- "gets the value": function() {
- var variables = new Variables(5),
- value = {hi:'hi'};
- variables.setValue(1, value);
- assert.equal(variables.getDocument(1), value);
- },
- "only returns documents": function() {
- var variables = new Variables(5),
- value = 'hi';
- variables.setValue(1, value);
- assert.deepEqual(variables.getDocument(1), {});
- },
- },
- };
|