diff --git a/test/unit/operation.js b/test/unit/operation.js new file mode 100644 index 0000000..de2a12e --- /dev/null +++ b/test/unit/operation.js @@ -0,0 +1,22 @@ +const o = require('../../src/operation') + +describe('Operation', function() { + + it('op_prefix', function() { + o.op_prefix('arst').should.deep.equal({name: 'arst', operation: 'add'}) + o.op_prefix('+arst').should.deep.equal({name: 'arst', operation: 'add'}) + o.op_prefix('-arst').should.deep.equal({name: 'arst', operation: 'subtract'}) + o.op_prefix('~arst').should.deep.equal({name: 'arst', operation: 'intersect'}) + o.op_prefix('^arst').should.deep.equal({name: 'arst', operation: 'stack'}) + }) + + it('operation', function() { + // without choices, it's the same as op_prefix + o.operation('arst').should.deep.equal({name: 'arst', operation: 'add'}) + // with choices, it propagates type where it found the name + o.operation('arst', {bad: [], good: ['arst']}).should.deep.equal({name: 'arst', operation: 'add', type: 'good'}) + // it also respects order when overridden + o.operation('arst', {first: ['arst'], second: ['arst']}, ['second', 'first']).should.deep.equal({name: 'arst', operation: 'add', type: 'second'}) + }) + +}) \ No newline at end of file