test('duration', () => {
const duration = (1).years().add((6).months()).toString();
expect(duration).toBe("547d 21h 0m 0s 0ns");
});
test('optional', () => {
const value = 42;
const optional = Optional.of(value);
const result = optional.filter((x) => x === 42);
expect(result.isPresent()).toBe(true);
expect(result.get()).toBe(value);
});
test('reducer', () => {
const people = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 }
];
const minOfAge = reducerOf(people)
.minOfWith((person) => person.age, (a, b) => a - b);
expect(minOfAge).toEqual({ name: 'Bob', age: 25 });
});
test('range', () => {
const result = rangeTo(1, 5);
expect(result).toEqual([1, 2, 3, 4, 5]);
});
test('result', () => {
const okInstance = Ok.ok(5);
const mappedResult = okInstance.flatMap(value => Ok.ok(value * 2));
expect(mappedResult instanceof Ok).toBe(true);
expect(mappedResult.get()).toBe(10);
});
test('collection', () => {
type User = { name:string; age:number; }
const sortedUsers = mutableListOf<User>([
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 },
]).sortBy((a, b) => a.age - b.age);
expect(sortedUsers)
.toEqual([
{ name: 'Alice', age: 25 },
{ name: 'John', age: 30 },
{ name: 'Bob', age: 35 },
]);
});