@eeue56/ts-core
Version:
Core library for TypeScript inspired by Elm
67 lines • 7.95 kB
JavaScript
import test from 'ava';
import * as Maybe from './maybe';
const aNothingValue = Maybe.Nothing();
const aRealValue = 'just something';
const aJustValue = Maybe.Just(aRealValue);
const aSecondRealValue = 'just something else';
const aSecondJustValue = Maybe.Just(aSecondRealValue);
const aThirdRealValue = 'another just something else';
const aThirdJustValue = Maybe.Just(aThirdRealValue);
test('withDefault', (t) => {
const defaultValue = 'a default';
t.deepEqual(Maybe.withDefault(defaultValue, aNothingValue), defaultValue);
t.deepEqual(Maybe.withDefault(defaultValue, aJustValue), aRealValue);
});
test('map', (t) => {
const innerValue = aRealValue.length;
const convertFunc = (str) => {
return str.length;
};
const inner = Maybe.Just(innerValue);
// Nothing => Nothing
t.deepEqual(Maybe.map(convertFunc, aNothingValue), Maybe.Nothing());
// Just => Just
t.deepEqual(Maybe.map(convertFunc, aJustValue), inner);
});
test('map2', (t) => {
const convertFunc = (first, second) => {
return first.length + second.length;
};
const inner = Maybe.Just(aRealValue.length + aSecondRealValue.length);
// Nothing => Just => Nothing
t.deepEqual(Maybe.map2(convertFunc, aNothingValue, aJustValue), Maybe.Nothing());
// Just => Nothing => Nothing
t.deepEqual(Maybe.map2(convertFunc, aJustValue, aNothingValue), Maybe.Nothing());
// Nothing => Nothing => Nothing
t.deepEqual(Maybe.map2(convertFunc, aNothingValue, aNothingValue), Maybe.Nothing());
// Just => Just => Just
t.deepEqual(Maybe.map2(convertFunc, aJustValue, aSecondJustValue), inner);
t.deepEqual(Maybe.map2(convertFunc, aSecondJustValue, aJustValue), inner);
});
test('map3', (t) => {
const convertFunc = (first, second, third) => {
return first.length + second.length + third.length;
};
const inner = Maybe.Just(aRealValue.length + aSecondRealValue.length + aThirdRealValue.length);
// Just => Nothing => Nothing => Nothing
t.deepEqual(Maybe.map3(convertFunc, aJustValue, aNothingValue, aNothingValue), Maybe.Nothing());
// Nothing => Just => Nothing => Nothing
t.deepEqual(Maybe.map3(convertFunc, aNothingValue, aJustValue, aNothingValue), Maybe.Nothing());
// Nothing => Nothing => Just => Nothing
t.deepEqual(Maybe.map3(convertFunc, aNothingValue, aNothingValue, aJustValue), Maybe.Nothing());
// Nothing => Nothing => Nothing => Nothing
t.deepEqual(Maybe.map3(convertFunc, aNothingValue, aNothingValue, aNothingValue), Maybe.Nothing());
// Just => Just => Just
t.deepEqual(Maybe.map3(convertFunc, aJustValue, aSecondJustValue, aThirdJustValue), inner);
t.deepEqual(Maybe.map3(convertFunc, aSecondJustValue, aThirdJustValue, aJustValue), inner);
});
test('andThen', (t) => {
const convertFunc = (value) => {
return Maybe.Just(value.length);
};
// Nothing => Nothing
t.deepEqual(Maybe.andThen(convertFunc, aNothingValue), Maybe.Nothing());
// Just => Just
t.deepEqual(Maybe.andThen(convertFunc, aJustValue), Maybe.Just(aRealValue.length));
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWF5YmUuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxLQUFLLENBQUM7QUFFdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFFakMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBVSxDQUFDO0FBRTlDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDO0FBQ3BDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFMUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMvQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUV0RCxNQUFNLGVBQWUsR0FBRyw2QkFBNkIsQ0FBQztBQUN0RCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRXBELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN0QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUUxRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2QsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUVyQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFF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