import { describe, it } from '@ephox/bedrock-client'; import { Pprint, Testable } from '@ephox/dispute'; import { assert } from 'chai'; import fc from 'fast-check'; import { Result } from 'ephox/katamari/api/Result'; import { tResult } from 'ephox/katamari/api/ResultInstances'; import { assertResult } from 'ephox/katamari/test/AssertResult'; const { tNumber, tString } = Testable; describe('atomic.katamari.api.optional.ResultInstancesTest', () => { it('value(x) = value(x)', () => { fc.assert(fc.property(fc.integer(), (i) => { assertResult(Result.value(i), Result.value(i)); })); }); it('error(x) = error(x)', () => { fc.assert(fc.property(fc.integer(), (i) => { assertResult(Result.error(i), Result.error(i)); })); }); it('value(a) != error(e)', () => { fc.assert(fc.property(fc.integer(), fc.string(), (a, e) => { assert.isFalse(tResult(tNumber, tString).eq( Result.value(a), Result.error(e) )); assert.isFalse(tResult(tNumber, tString).eq( Result.error(e), Result.value(a) )); })); }); it('(a = b) = (value(a) = value(b))', () => { fc.assert(fc.property(fc.integer(), fc.integer(), (a, b) => { assert.equal(tResult(tNumber, tString).eq( Result.value(a), Result.value(b) ), a === b); })); }); it('(a = b) = (error(a) = error(b))', () => { fc.assert(fc.property(fc.string(), fc.string(), (a, b) => { assert.equal(tResult(tNumber, tString).eq( Result.error(a), Result.error(b) ), a === b); })); }); it('ResultInstances.pprint', () => { fc.assert(fc.property(fc.integer(), (i) => { assert.equal(Pprint.render(Result.value(i), tResult(tNumber, tString)), `Result.value( ${i} )`); assert.equal(Pprint.render(Result.error(i), tResult(tString, tNumber)), `Result.error( ${i} )`); })); }); });