UNPKG

@eeue56/ts-core

Version:

Core library for TypeScript inspired by Elm

92 lines 10.8 kB
import test from 'ava'; import * as Maybe from './maybe'; import * as Result from './result'; const anRealErrorValue = 'Something went wrong'; const anErrorValue = Result.Err(anRealErrorValue); const aRealValue = 'just something'; const aOkValue = Result.Ok(aRealValue); const aSecondRealValue = 'just something else'; const aSecondOkValue = Result.Ok(aSecondRealValue); const aThirdRealValue = 'another just something else'; const aThirdOkValue = Result.Ok(aThirdRealValue); test('withDefault', (t) => { const defaultValue = 'a default'; t.deepEqual(Result.withDefault(defaultValue, anErrorValue), defaultValue); t.deepEqual(Result.withDefault(defaultValue, aOkValue), aRealValue); }); test('either', (t) => { t.deepEqual(Result.either(aOkValue), aRealValue); t.deepEqual(Result.either(anErrorValue), anRealErrorValue); }); test('toMaybe', (t) => { t.deepEqual(Result.toMaybe(anErrorValue), Maybe.Nothing()); t.deepEqual(Result.toMaybe(aOkValue), Maybe.Just(aRealValue)); }); test('fromMaybe', (t) => { t.deepEqual(Result.fromMaybe('default error', Maybe.Nothing()), Result.Err('default error')); t.deepEqual(Result.fromMaybe('default error', Maybe.Just(aRealValue)), aOkValue); }); test('map', (t) => { const innerValue = aRealValue.length; const convertFunc = (str) => { return str.length; }; const inner = Result.Ok(innerValue); // Err => Err t.deepEqual(Result.map(convertFunc, anErrorValue), Result.Err(anRealErrorValue)); // Ok => Ok t.deepEqual(Result.map(convertFunc, aOkValue), inner); }); test('map2', (t) => { const convertFunc = (first, second) => { return first.length + second.length; }; const inner = Result.Ok(aRealValue.length + aSecondRealValue.length); // Err => Ok => Err t.deepEqual(Result.map2(convertFunc, anErrorValue, aOkValue), Result.Err(anRealErrorValue)); // Ok => Err => Err t.deepEqual(Result.map2(convertFunc, aOkValue, anErrorValue), Result.Err(anRealErrorValue)); // Err => Err => Err t.deepEqual(Result.map2(convertFunc, anErrorValue, anErrorValue), Result.Err(anRealErrorValue)); // Ok => Ok => Ok t.deepEqual(Result.map2(convertFunc, aOkValue, aSecondOkValue), inner); t.deepEqual(Result.map2(convertFunc, aSecondOkValue, aOkValue), inner); }); test('map3', (t) => { const convertFunc = (first, second, third) => { return first.length + second.length + third.length; }; const inner = Result.Ok(aRealValue.length + aSecondRealValue.length + aThirdRealValue.length); // Ok => Err => Err => Err t.deepEqual(Result.map3(convertFunc, aOkValue, anErrorValue, anErrorValue), Result.Err(anRealErrorValue)); // Err => Ok => Err => Err t.deepEqual(Result.map3(convertFunc, anErrorValue, aOkValue, anErrorValue), Result.Err(anRealErrorValue)); // Err => Err => Ok => Err t.deepEqual(Result.map3(convertFunc, anErrorValue, anErrorValue, aOkValue), Result.Err(anRealErrorValue)); // Err => Err => Err => Err t.deepEqual(Result.map3(convertFunc, anErrorValue, anErrorValue, anErrorValue), Result.Err(anRealErrorValue)); // Ok => Ok => Ok t.deepEqual(Result.map3(convertFunc, aOkValue, aSecondOkValue, aThirdOkValue), inner); t.deepEqual(Result.map3(convertFunc, aSecondOkValue, aThirdOkValue, aOkValue), inner); }); test('mapError', (t) => { const innerValue = anRealErrorValue.length; const convertFunc = (str) => { return str.length; }; const inner = Result.Err(innerValue); // Err => Err t.deepEqual(Result.mapError(convertFunc, anErrorValue), inner); // Ok => Ok t.deepEqual(Result.mapError(convertFunc, aOkValue), Result.Ok(aRealValue)); }); test('andThen', (t) => { const convertFunc = (value) => { return Result.Ok(value.length); }; // Err => Err t.deepEqual(Result.andThen(convertFunc, anErrorValue), Result.Err(anRealErrorValue)); // Ok => Ok t.deepEqual(Result.andThen(convertFunc, aOkValue), Result.Ok(aRealValue.length)); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Jlc3VsdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQztBQUV2QixPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEtBQUssTUFBTSxNQUFNLFVBQVUsQ0FBQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDO0FBQ2hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbEUsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7QUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBaUIsVUFBVSxDQUFDLENBQUM7QUFFdkQsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMvQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFbkQsTUFBTSxlQUFlLEdBQUcsNkJBQTZCLENBQUM7QUFDdEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUVqRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDdEIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFMUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUs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