tyme4ts
Version:
Tyme是一个非常强大的日历工具库,可以看作 Lunar 的升级版,拥有更优的设计和扩展性,支持公历和农历、星座、干支、生肖、节气、法定假日等。
260 lines (215 loc) • 6.92 kB
text/typescript
import {suite, test} from '@testdeck/mocha';
import {LunarDay, LunarMonth, SolarDay} from '../lib';
import {equal} from 'assert';
class LunarMonthTest {
test0() {
equal(LunarMonth.fromYm(2359, 7).getName(), '七月');
}
/**
* 闰月
*/
test1() {
equal(LunarMonth.fromYm(2359, -7).getName(), '闰七月');
}
test2() {
equal(LunarMonth.fromYm(2023, 6).getDayCount(), 29);
}
test3() {
equal(LunarMonth.fromYm(2023, 7).getDayCount(), 30);
}
test4() {
equal(LunarMonth.fromYm(2023, 8).getDayCount(), 30);
}
test5() {
equal(LunarMonth.fromYm(2023, 9).getDayCount(), 29);
}
test6() {
equal(LunarMonth.fromYm(2023, 9).getFirstJulianDay().getSolarDay().toString(), '2023年10月15日');
}
test7() {
equal(LunarMonth.fromYm(2023, 1).getSixtyCycle().getName(), '甲寅');
}
test8() {
equal(LunarMonth.fromYm(2023, -2).getSixtyCycle().getName(), '丙辰');
}
test9() {
equal(LunarMonth.fromYm(2023, 3).getSixtyCycle().getName(), '丁巳');
}
test10() {
equal(LunarMonth.fromYm(2024, 1).getSixtyCycle().getName(), '丙寅');
}
test11() {
equal(LunarMonth.fromYm(2023, 12).getSixtyCycle().getName(), '丙寅');
}
test12() {
equal(LunarMonth.fromYm(2022, 1).getSixtyCycle().getName(), '壬寅');
}
test13() {
equal(LunarMonth.fromYm(37, -12).getName(), '闰十二月');
}
test14() {
equal(LunarMonth.fromYm(5552, -12).getName(), '闰十二月');
}
test15() {
equal(LunarMonth.fromYm(2008, 11).next(1).toString(), '农历戊子年十二月');
}
test16() {
equal(LunarMonth.fromYm(2008, 11).next(2).toString(), '农历己丑年正月');
}
test17() {
equal(LunarMonth.fromYm(2008, 11).next(6).toString(), '农历己丑年五月');
}
test18() {
equal(LunarMonth.fromYm(2008, 11).next(7).toString(), '农历己丑年闰五月');
}
test19() {
equal(LunarMonth.fromYm(2008, 11).next(8).toString(), '农历己丑年六月');
}
test20() {
equal(LunarMonth.fromYm(2008, 11).next(15).toString(), '农历庚寅年正月');
}
test21() {
equal(LunarMonth.fromYm(2008, 12).next(-1).toString(), '农历戊子年十一月');
}
test22() {
equal(LunarMonth.fromYm(2009, 1).next(-2).toString(), '农历戊子年十一月');
}
test23() {
equal(LunarMonth.fromYm(2009, 5).next(-6).toString(), '农历戊子年十一月');
}
test24() {
equal(LunarMonth.fromYm(2009, -5).next(-7).toString(), '农历戊子年十一月');
}
test25() {
equal(LunarMonth.fromYm(2009, 6).next(-8).toString(), '农历戊子年十一月');
}
test26() {
equal(LunarMonth.fromYm(2010, 1).next(-15).toString(), '农历戊子年十一月');
}
test27() {
equal(LunarMonth.fromYm(2012, -4).getDayCount(), 29);
}
test28() {
equal(LunarMonth.fromYm(2023, 9).getSixtyCycle().toString(), '癸亥');
}
test29() {
const d: LunarDay = SolarDay.fromYmd(2023, 10, 7).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '壬戌');
equal(d.getSixtyCycleDay().getMonth().toString(), '辛酉');
}
test30() {
const d: LunarDay = SolarDay.fromYmd(2023, 10, 8).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '壬戌');
equal(d.getSixtyCycleDay().getMonth().toString(), '壬戌');
}
test31() {
const d: LunarDay = SolarDay.fromYmd(2023, 10, 15).getLunarDay();
equal(d.getLunarMonth().getName(), '九月');
equal(d.getLunarMonth().getSixtyCycle().toString(), '癸亥');
equal(d.getSixtyCycleDay().getMonth().toString(), '壬戌');
}
test32() {
const d: LunarDay = SolarDay.fromYmd(2023, 11, 7).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '癸亥');
equal(d.getSixtyCycleDay().getMonth().toString(), '壬戌');
}
test33() {
const d: LunarDay = SolarDay.fromYmd(2023, 11, 8).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '癸亥');
equal(d.getSixtyCycleDay().getMonth().toString(), '癸亥');
}
test34() {
// 2023年闰2月
const m: LunarMonth = LunarMonth.fromYm(2023, 12);
equal(m.toString(), '农历癸卯年十二月');
equal(m.next(-1).toString(), '农历癸卯年十一月');
equal(m.next(-2).toString(), '农历癸卯年十月');
}
test35() {
// 2023年闰2月
const m: LunarMonth = LunarMonth.fromYm(2023, 3);
equal(m.toString(), '农历癸卯年三月');
equal(m.next(-1).toString(), '农历癸卯年闰二月');
equal(m.next(-2).toString(), '农历癸卯年二月');
equal(m.next(-3).toString(), '农历癸卯年正月');
equal(m.next(-4).toString(), '农历壬寅年十二月');
equal(m.next(-5).toString(), '农历壬寅年十一月');
}
test36() {
const d: LunarDay = SolarDay.fromYmd(1983, 2, 15).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '甲寅');
equal(d.getSixtyCycleDay().getMonth().toString(), '甲寅');
}
test37() {
const d: LunarDay = SolarDay.fromYmd(2023, 10, 30).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '癸亥');
equal(d.getSixtyCycleDay().getMonth().toString(), '壬戌');
}
test38() {
const d: LunarDay = SolarDay.fromYmd(2023, 10, 19).getLunarDay();
equal(d.getLunarMonth().getSixtyCycle().toString(), '癸亥');
equal(d.getSixtyCycleDay().getMonth().toString(), '壬戌');
}
test39() {
const m: LunarMonth = LunarMonth.fromYm(2023, 11);
equal(m.toString(), '农历癸卯年十一月');
equal(m.getSixtyCycle().toString(), '乙丑');
}
test40() {
equal(LunarMonth.fromYm(2018, 6).getSixtyCycle().toString(), '己未');
}
test41() {
equal(LunarMonth.fromYm(2017, 12).getSixtyCycle().toString(), '甲寅');
}
test42() {
equal(LunarMonth.fromYm(2018, 1).getSixtyCycle().toString(), '甲寅');
}
test43() {
equal(LunarDay.fromYmd(2018, 6, 26).getSixtyCycleDay().getMonth().toString(), '庚申');
}
}