-
Notifications
You must be signed in to change notification settings - Fork 2
/
test.ts
76 lines (65 loc) · 3.49 KB
/
test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { expect } from "chai";
import { japaneseYear, gregorianYearRange } from "./index";
describe("#japaneseYear", () => {
it("should convert the Gregorian date to the appropriate Japanese calendar year", () => {
const heiseiExactYear = japaneseYear(new Date(1989, 0, 9));
const showaYear2 = japaneseYear(new Date(1989, 0, 6));
const showaYear = japaneseYear(new Date(1987, 6, 6));
const meijiExactYear = japaneseYear(new Date(1869, 6, 6));
expect(heiseiExactYear.names.english).to.include("Heisei");
expect(showaYear2.names.english).to.include("Showa");
expect(heiseiExactYear.currentJapaneseYear).to.equal(1);
expect(showaYear.names.english).to.include("Showa");
expect(showaYear.currentJapaneseYear).to.equal(62);
expect(meijiExactYear.names.english).to.include("Meiji");
expect(meijiExactYear.currentJapaneseYear).to.equal(2);
});
it("should convert any date above the last emperor calendar date", () => {
const heiseiYear = japaneseYear(new Date(1990, 1, 1));
const tokyoOlympicYear = japaneseYear(new Date(2020, 6, 7));
expect(heiseiYear.names.english).to.include("Heisei");
expect(heiseiYear.currentJapaneseYear).to.equal(2);
expect(tokyoOlympicYear.names.english).to.include("Reiwa");
expect(tokyoOlympicYear.currentJapaneseYear).to.equal(2);
});
it("should convert any date below the first recorded emperor calendar date to undefined", () => {
const gennaYear = japaneseYear(new Date(1615, 6, 1));
const firstAdYear = japaneseYear(new Date(1600, 1, 1));
expect(gennaYear.names.english).to.include("Genna");
expect(firstAdYear).to.equal(undefined);
});
it("should convert the Gregorian date in date format to the appropriate Japanese calendar year", () => {
const heiseiExactYear = japaneseYear(new Date(1989, 2));
const showaYear = japaneseYear(new Date(1987, 0));
const meijiExactYear = japaneseYear(new Date(1868, 11));
expect(heiseiExactYear.names.english).to.include("Heisei");
expect(heiseiExactYear.currentJapaneseYear).to.equal(1);
expect(showaYear.names.english).to.include("Showa");
expect(showaYear.currentJapaneseYear).to.equal(62);
expect(meijiExactYear.names.english).to.include("Meiji");
expect(meijiExactYear.currentJapaneseYear).to.equal(1);
});
});
describe("#gregorianYearRange", () => {
it("should convert the Japanese calendar year to the Gregorian year", () => {
const reiwaPeriodRange = gregorianYearRange("令和");
const reiwaPeriodRangeEnglish = gregorianYearRange("Reiwa");
const reiwaPeriodRangeHiragana = gregorianYearRange("れいわ");
const heiseiPeriodRange = gregorianYearRange("平成");
const meijiPeriodRange = gregorianYearRange("明治");
const genjiPeriodRange = gregorianYearRange("元治");
const doesntExistPeriodRange = gregorianYearRange("横浜");
expect(reiwaPeriodRange.startYear).to.equal(2019);
expect(reiwaPeriodRangeEnglish.startYear).to.equal(2019);
expect(reiwaPeriodRangeHiragana.startYear).to.equal(2019);
expect(heiseiPeriodRange.startYear).to.equal(1989);
expect(meijiPeriodRange.startYear).to.equal(1868);
expect(genjiPeriodRange.startYear).to.equal(1864);
expect(reiwaPeriodRange.endYear).to.equal(undefined);
expect(reiwaPeriodRangeEnglish.endYear).to.equal(undefined);
expect(heiseiPeriodRange.endYear).to.equal(2018);
expect(meijiPeriodRange.endYear).to.equal(1911);
expect(genjiPeriodRange.endYear).to.equal(1864);
expect(doesntExistPeriodRange).to.equal(undefined);
});
});