Signet Macros
-
type-level macros
- should support option type macro
- File location: ./test/macros.test.js
-
function () { assert.equal(signet.isTypeOf('?string')(undefined), true); assert.equal(signet.isTypeOf('?string')('foo'), true); assert.equal(signet.isTypeOf('?string')({}), false); }
- should support defined type macro
- File location: ./test/macros.test.js
-
function () { assert.equal(signet.isTypeOf('!*')(undefined), false); assert.equal(signet.isTypeOf('!*')(null), false); assert.equal(signet.isTypeOf('!*')({}), true); }
- should support an empty parentheses "any" type macro
- File location: ./test/macros.test.js
-
function () { assert.equal(signet.isTypeOf('()')('foo'), true); assert.doesNotThrow(signet.enforce('() => undefined', function () { })); }
- should support a not macro
- File location: ./test/macros.test.js
-
function () { assert.equal(signet.isTypeOf('^string')('foo'), false); assert.equal(signet.isTypeOf('^string')(null), true); }
-
Signature-level Macros
- should parse function definition with nested function definition
- File location: ./test/macros.test.js
-
function () { var doStuff = signet.sign('(* => boolean) => array', () => []); assert.equal(doStuff.signature, 'function<* => boolean> => array'); }
-
Macro handling
- should properly sign a function using macros
- File location: ./test/macros.test.js
-
function () { var expectedValue = 'something:[not<variant<undefined, null>>], somethingElse:[variant<undefined;null;string>], aFunction:function<* => *> => null'; var testFn = signet.enforce( 'something:[!*], somethingElse:[?string], aFunction:(* => *) => null', () => null ); assert.equal(testFn.signature, expectedValue); }