mirror of
https://github.com/PeWu/topola-viewer.git
synced 2026-07-25 05:01:50 +00:00
133 lines
4.7 KiB
TypeScript
133 lines
4.7 KiB
TypeScript
import {describe, expect, it} from '@jest/globals';
|
|
import {createIntl} from 'react-intl';
|
|
import {calcAge} from './age_util';
|
|
|
|
const intl = createIntl({
|
|
locale: 'en',
|
|
messages: {},
|
|
});
|
|
|
|
describe('calcAge()', () => {
|
|
it('age 1 year', () => {
|
|
const age = calcAge('1999', '2000', intl);
|
|
expect(age).toEqual('1 year');
|
|
});
|
|
it('age multiple years', () => {
|
|
const age = calcAge('1999', '2003', intl);
|
|
expect(age).toEqual('4 years');
|
|
});
|
|
it('0 years as Less than 1 year', () => {
|
|
const age = calcAge('1 Sep 1990', '1 Oct 1990', intl);
|
|
expect(age).toEqual('Less than 1 year');
|
|
});
|
|
it('age with qualifier', () => {
|
|
const age = calcAge('ABT 1990', '2021', intl);
|
|
expect(age).toEqual('about 31 years');
|
|
});
|
|
it('age for full dates', () => {
|
|
const age = calcAge('1 Sep 1990', '1 Sep 2021', intl);
|
|
expect(age).toEqual('31 years');
|
|
});
|
|
it('age with round down respecting leap years', () => {
|
|
const age = calcAge('2 Sep 1990', '1 Sep 2021', intl);
|
|
expect(age).toEqual('30 years');
|
|
});
|
|
it('age respecting missing leap year divisible by 100 and not divisible by 400', () => {
|
|
const age = calcAge('1890', '1921', intl);
|
|
expect(age).toEqual('31 years');
|
|
});
|
|
it('age respecting missing leap year divisible by 100 and not divisible by 400 for full dates', () => {
|
|
const age = calcAge('1 Sep 1890', '1 Sep 1921', intl);
|
|
expect(age).toEqual('31 years');
|
|
});
|
|
it('age with round down respecting missing leap year divisible by 100 and not divisible by 400', () => {
|
|
const age = calcAge('2 Sep 1890', '1 Sep 1921', intl);
|
|
expect(age).toEqual('30 years');
|
|
});
|
|
|
|
it('age with exact and range between', () => {
|
|
const age = calcAge('1990', 'BET 2020 AND 2021', intl);
|
|
expect(age).toEqual('Between 30 and 31 years');
|
|
});
|
|
it('age with exact and range after', () => {
|
|
const age = calcAge('1990', 'AFT 2021', intl);
|
|
expect(age).toEqual('More than 31 years');
|
|
});
|
|
it('age with exact and range before', () => {
|
|
const age = calcAge('1990', 'BEF 2021', intl);
|
|
expect(age).toEqual('Less than 31 years');
|
|
});
|
|
|
|
it('age with range between and exact', () => {
|
|
const age = calcAge('BET 1990 AND 1991', '2021', intl);
|
|
expect(age).toEqual('Between 30 and 31 years');
|
|
});
|
|
it('age with 2 ranges between', () => {
|
|
const age = calcAge('BET 1990 AND 1991', 'BET 2020 AND 2021', intl);
|
|
expect(age).toEqual('Between 29 and 31 years');
|
|
});
|
|
it('age with range between and range after', () => {
|
|
const age = calcAge('BET 1990 AND 1991', 'AFT 2021', intl);
|
|
expect(age).toEqual('More than 30 years');
|
|
});
|
|
it('age with range between and range before', () => {
|
|
const age = calcAge('BET 1990 AND 1991', 'BEF 2021', intl);
|
|
expect(age).toEqual('Less than 31 years');
|
|
});
|
|
|
|
it('age with range after and exact', () => {
|
|
const age = calcAge('AFT 1990', '2021', intl);
|
|
expect(age).toEqual('Less than 31 years');
|
|
});
|
|
it('age with range after and range between', () => {
|
|
const age = calcAge('AFT 1990', 'BET 2020 AND 2021', intl);
|
|
expect(age).toEqual('Less than 31 years');
|
|
});
|
|
it('age with range after and before', () => {
|
|
const age = calcAge('AFT 1990', 'BEF 2021', intl);
|
|
expect(age).toEqual('Less than 31 years');
|
|
});
|
|
it('age with 2 ranges after cannot be calculated', () => {
|
|
const age = calcAge('AFT 1990', 'AFT 2021', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
|
|
it('age with range before and exact', () => {
|
|
const age = calcAge('BEF 1990', '2021', intl);
|
|
expect(age).toEqual('More than 31 years');
|
|
});
|
|
it('age with ranges before and between', () => {
|
|
const age = calcAge('BEF 1990', 'BET 2020 AND 2021', intl);
|
|
expect(age).toEqual('More than 30 years');
|
|
});
|
|
it('age with ranges before and after', () => {
|
|
const age = calcAge('BEF 1990', 'AFT 2021', intl);
|
|
expect(age).toEqual('More than 31 years');
|
|
});
|
|
it('age with 2 ranges before cannot be calculated', () => {
|
|
const age = calcAge('BEF 1990', 'BEF 2021', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
|
|
it('age with death before birth cannot be calculated', () => {
|
|
const age = calcAge('2021', '1990', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
it('age with overlapping between ranges cannot be calculated', () => {
|
|
const age = calcAge('BET 1990 AND 2000', 'BET 1999 AND 2021 ', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
it('age with invalid between range cannot be calculated', () => {
|
|
const age = calcAge('BET 1999 AND 1990', ' 2021 ', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
it('age without birth cannot be calculated', () => {
|
|
const age = calcAge('', '2021', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
it('age without death cannot be calculated', () => {
|
|
const age = calcAge('1990', '', intl);
|
|
expect(age).toBeUndefined();
|
|
});
|
|
});
|