|
| 1 | +// Asserting APIs: |
| 2 | +// - generated by Traceur (based on type annotations) |
| 3 | +// - can be also used in tests for instance |
| 4 | +assert.type(something, Type); |
| 5 | +assert.returnType(returnValue, Type); |
| 6 | +assert.argumentTypes(firstArg, Type, secondArg, Type); |
| 7 | + |
| 8 | +// this can be used anywhere in the code |
| 9 | +// (useful inside test, when we don't wanna define an interface) |
| 10 | +assert(value).is(...) |
| 11 | + |
| 12 | + |
| 13 | +// Custom type assert: |
| 14 | +// - i have a custom type |
| 15 | +// - adding an assert methos |
| 16 | +assert.define(MyUser, function(value) { |
| 17 | + assert(value).is(Type, Type2); // or |
| 18 | + assert(value, 'name').is(assert.string); |
| 19 | + assert(value, 'contact').is(assert.structure({ |
| 20 | + email: assert.string, |
| 21 | + cell: assert.string |
| 22 | + })); |
| 23 | + assert(value, 'contacts').is(assert.arrayOf(assert.structure({email: assert.string}))); |
| 24 | +}); |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | +// Define interface (an empty type with assert method) |
| 29 | +// - returns an empty class with assert method |
| 30 | +var Email = assert.define('IEmail', function(value) { |
| 31 | + assert(value).is(String); |
| 32 | + |
| 33 | + if (value.indexOf('@') !== -1) { |
| 34 | + assert.fail('has to contain "@"'); |
| 35 | + } |
| 36 | +}); |
| 37 | + |
| 38 | + |
| 39 | +// Predefined types |
| 40 | +assert.string |
| 41 | +assert.number |
| 42 | +assert.boolean |
| 43 | +assert.arrayOf(...types) |
| 44 | +assert.structure(object) |
0 commit comments