import { describe, it } from '@ephox/bedrock-client'; import * as Fun from 'ephox/katamari/api/Fun'; import { Optional } from 'ephox/katamari/api/Optional'; import * as Optionals from 'ephox/katamari/api/Optionals'; import { assertNone, assertOptional } from 'ephox/katamari/test/AssertOptional'; const boom = Fun.die('should not be called'); describe('atomic.katamari.api.optional.OptionalsLiftNTest', () => { it('Optionals.lift2', () => { assertNone(Optionals.lift2(Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift2(Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift2(Optional.some('a'), Optional.none(), boom)); assertOptional(Optionals.lift2(Optional.some('a'), Optional.some(11), (a, b) => a + b), Optional.some('a11')); }); it('Optionals.lift3', () => { assertNone(Optionals.lift3(Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift3(Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift3(Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift3(Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift3(Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift3(Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertOptional(Optionals.lift3(Optional.some('z'), Optional.some('a'), Optional.some(11), (a, b, c) => a + b + c), Optional.some('za11')); }); it('Optionals.lift4', () => { assertNone(Optionals.lift4(Optional.none(), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.none(), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift4(Optional.none(), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.none(), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.none(), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift4(Optional.none(), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift4(Optional.some(1), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertOptional(Optionals.lift4(Optional.some(2), Optional.some('z'), Optional.some('a'), Optional.some(11), (a, b, c, d) => a + b + c + d), Optional.some('2za11')); }); it('Optionals.lift5', () => { assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.none(), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.none(), Optional.some(1), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.none(), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.none(), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.none(), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.none(), Optional.some('a'), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.some('z'), Optional.none(), Optional.none(), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.some('z'), Optional.none(), Optional.some(3), boom)); assertNone(Optionals.lift5(Optional.some(true), Optional.some(1), Optional.some('z'), Optional.some('a'), Optional.none(), boom)); assertOptional(Optionals.lift5(Optional.some(false), Optional.some(2), Optional.some('z'), Optional.some('a'), Optional.some(11), (a, b, c, d, e) => a + '' + b + c + d + e), Optional.some('false2za11')); }); });