index.test.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. import {
  2. getLunarDate,
  3. getLunarDatesInRange,
  4. getSolarDateFromLunar,
  5. } from "../../src";
  6. describe("solar_lunar", () => {
  7. test("getLunarDate should return correct lunar date for a given solar date", () => {
  8. let result = getLunarDate("2057-09-28");
  9. expect(result).toEqual({
  10. date: "2057-09-28",
  11. lunarYear: 2057,
  12. lunarMon: 8,
  13. lunarDay: 30,
  14. isLeap: false,
  15. lunarDayCN: "三十",
  16. lunarMonCN: "八月",
  17. lunarYearCN: "二零五七",
  18. yearCyl: "丁丑",
  19. monCyl: "己酉",
  20. dayCyl: "戊子",
  21. zodiac: "牛",
  22. });
  23. result = getLunarDate("2097-08-07");
  24. expect(result).toEqual({
  25. date: "2097-08-07",
  26. dayCyl: "丙寅",
  27. isLeap: false,
  28. lunarDay: 1,
  29. lunarDayCN: "初一",
  30. lunarMon: 7,
  31. lunarMonCN: "七月",
  32. lunarYear: 2097,
  33. lunarYearCN: "二零九七",
  34. monCyl: "戊申",
  35. yearCyl: "丁巳",
  36. zodiac: "蛇",
  37. });
  38. result = getLunarDate("2001-04-27");
  39. expect(result.isLeap).toBe(false);
  40. result = getLunarDate("2001-05-27");
  41. expect(result.isLeap).toBe(true);
  42. });
  43. test("getSolarDateFromLunar should return correct solar date for a given lunar date", () => {
  44. let result = getSolarDateFromLunar("2001-03-05");
  45. expect(result).toEqual({ date: "2001-03-29", leapMonthDate: undefined });
  46. result = getSolarDateFromLunar("2001-04-05");
  47. expect(result).toEqual({ date: "2001-04-27", leapMonthDate: "2001-05-27" });
  48. });
  49. test("getLunarDatesInRange should return correct lunar dates for a given solar date range", () => {
  50. let result = getLunarDatesInRange("2001-05-21", "2001-05-26");
  51. expect(result).toEqual([
  52. {
  53. date: "2001-05-21",
  54. lunarYear: 2001,
  55. lunarMon: 4,
  56. lunarDay: 29,
  57. isLeap: false,
  58. zodiac: "蛇",
  59. yearCyl: "辛巳",
  60. monCyl: "癸巳",
  61. dayCyl: "甲申",
  62. lunarYearCN: "二零零一",
  63. lunarMonCN: "四月",
  64. lunarDayCN: "廿九",
  65. },
  66. {
  67. date: "2001-05-22",
  68. lunarYear: 2001,
  69. lunarMon: 4,
  70. lunarDay: 30,
  71. isLeap: false,
  72. zodiac: "蛇",
  73. yearCyl: "辛巳",
  74. monCyl: "癸巳",
  75. dayCyl: "乙酉",
  76. lunarYearCN: "二零零一",
  77. lunarMonCN: "四月",
  78. lunarDayCN: "三十",
  79. },
  80. {
  81. date: "2001-05-23",
  82. lunarYear: 2001,
  83. lunarMon: 5,
  84. lunarDay: 1,
  85. isLeap: false,
  86. zodiac: "蛇",
  87. yearCyl: "辛巳",
  88. monCyl: "甲午",
  89. dayCyl: "丙戌",
  90. lunarYearCN: "二零零一",
  91. lunarMonCN: "五月",
  92. lunarDayCN: "初一",
  93. },
  94. {
  95. date: "2001-05-24",
  96. lunarYear: 2001,
  97. lunarMon: 4,
  98. lunarDay: 2,
  99. isLeap: true,
  100. zodiac: "蛇",
  101. yearCyl: "辛巳",
  102. monCyl: "癸巳",
  103. dayCyl: "丁亥",
  104. lunarYearCN: "二零零一",
  105. lunarMonCN: "四月",
  106. lunarDayCN: "初二",
  107. },
  108. {
  109. date: "2001-05-25",
  110. lunarYear: 2001,
  111. lunarMon: 4,
  112. lunarDay: 3,
  113. isLeap: true,
  114. zodiac: "蛇",
  115. yearCyl: "辛巳",
  116. monCyl: "癸巳",
  117. dayCyl: "戊子",
  118. lunarYearCN: "二零零一",
  119. lunarMonCN: "四月",
  120. lunarDayCN: "初三",
  121. },
  122. {
  123. date: "2001-05-26",
  124. lunarYear: 2001,
  125. lunarMon: 4,
  126. lunarDay: 4,
  127. isLeap: true,
  128. zodiac: "蛇",
  129. yearCyl: "辛巳",
  130. monCyl: "癸巳",
  131. dayCyl: "己丑",
  132. lunarYearCN: "二零零一",
  133. lunarMonCN: "四月",
  134. lunarDayCN: "初四",
  135. },
  136. ]);
  137. });
  138. });