typed-utilities
Version:
Strongly typed general purpose utilities
30 lines (25 loc) • 1.16 kB
JavaScript
;
var _ = require("..");
test(`Option`, () => {
expect(_.Option.is.some(_.Option.of.some(1))).toEqual(true);
expect(_.Option.is.none(_.Option.of.some(1))).toEqual(false);
expect(() => _.Option.assert.some(_.Option.of.some(1))).not.toThrow();
expect(() => _.Option.assert.none(_.Option.of.some(1))).toThrow();
expect(_.Option.is.some(_.Option.of.none())).toEqual(false);
expect(_.Option.is.none(_.Option.of.none())).toEqual(true);
expect(() => _.Option.assert.some(_.Option.of.none())).toThrow();
expect(() => _.Option.assert.none(_.Option.of.none())).not.toThrow();
expect(_.Option.to.someValue(_.Option.of.some(1))).toEqual(1);
const t1 = [1, 2, 3].map(_.Option.of.some);
for (const m of t1) {
expect(_.Option.is.some(m));
}
const keepOdd = v => v % 2 === 1 ? _.Option.of.some(v) : _.Option.of.none();
const t2 = t1.map(m => _.Option.match(m, {
some: keepOdd,
none: _.Option.of.none
}));
expect(t2).toEqual([_.Option.of.some(1), _.Option.of.none(), _.Option.of.some(3)]);
expect(t2.filter(_.Option.is.some).map(_.Option.to.someValue)).toEqual([1, 3]);
});
//# sourceMappingURL=Option.test.js.map