public static Lunar SolarToLunar(Solar solar) { var lunar = new Lunar(); int index = solar.solarYear - solar_1_1[0]; int data = (solar.solarYear << 9) | (solar.solarMonth << 5) | (solar.solarDay); int solar11 = 0; if (solar_1_1[index] > data) { index--; } solar11 = solar_1_1[index]; int y = GetBitInt(solar11, 12, 9); int m = GetBitInt(solar11, 4, 5); int d = GetBitInt(solar11, 5, 0); long offset = SolarToInt(solar.solarYear, solar.solarMonth, solar.solarDay) - SolarToInt(y, m, d); int days = lunar_month_days[index]; int leap = GetBitInt(days, 4, 13); int lunarY = index + solar_1_1[0]; int lunarM = 1; int lunarD = 1; offset += 1; for (int i = 0; i < 13; i++) { int dm = GetBitInt(days, 1, 12 - i) == 1 ? 30 : 29; if (offset > dm) { lunarM++; offset -= dm; } else { break; } } lunarD = (int) (offset); lunar.lunarYear = lunarY; lunar.lunarMonth = lunarM; lunar.isleap = false; if (leap != 0 && lunarM > leap) { lunar.lunarMonth = lunarM - 1; if (lunarM == leap + 1) { lunar.isleap = true; } } lunar.lunarDay = lunarD; return lunar; }
public static Solar LunarToSolar(Lunar lunar) { int days = lunar_month_days[lunar.lunarYear - lunar_month_days[0]]; int leap = GetBitInt(days, 4, 13); int offset = 0; int loopend = leap; if (!lunar.isleap) { if (lunar.lunarMonth <= leap || leap == 0) { loopend = lunar.lunarMonth - 1; } else { loopend = lunar.lunarMonth; } } for (int i = 0; i < loopend; i++) { offset += GetBitInt(days, 1, 12 - i) == 1 ? 30 : 29; } offset += lunar.lunarDay; int solar11 = solar_1_1[lunar.lunarYear - solar_1_1[0]]; int y = GetBitInt(solar11, 12, 9); int m = GetBitInt(solar11, 4, 5); int d = GetBitInt(solar11, 5, 0); return SolarFromInt(SolarToInt(y, m, d) + offset - 1); }
public void test8() { Solar solar = new Solar(2011, 8, 23); Lunar lunar = solar.getLunar(); Fu fu = lunar.getFu(); Assert.IsNull(fu); }
public void Luna对象Test() { Lunar lunar = new Lunar(); lunar.yueLiCalc(2017, 1); Assert.AreEqual(31, lunar.lun.Count); Assert.AreEqual(1, lunar.m); Assert.AreEqual(2017, lunar.y); }
public void test3() { Solar solar = new Solar(2020, 1, 7); Lunar lunar = solar.getLunar(); ShuJiu shuJiu = lunar.getShuJiu(); Assert.AreEqual("二九", shuJiu.toString(), solar.toYmd()); Assert.AreEqual("二九第8天", shuJiu.toFullString(), solar.toYmd()); }
public void test2() { Solar solar = new Solar(2020, 12, 22); Lunar lunar = solar.getLunar(); ShuJiu shuJiu = lunar.getShuJiu(); Assert.AreEqual("一九", shuJiu.toString(), solar.toYmd()); Assert.AreEqual("一九第2天", shuJiu.toFullString(), solar.toYmd()); }
public void test6() { Solar solar = new Solar(2021, 3, 5); Lunar lunar = solar.getLunar(); ShuJiu shuJiu = lunar.getShuJiu(); Assert.AreEqual("九九", shuJiu.toString(), solar.toYmd()); Assert.AreEqual("九九第3天", shuJiu.toFullString(), solar.toYmd()); }
public void test5() { Solar solar = new Solar(2021, 1, 8); Lunar lunar = solar.getLunar(); ShuJiu shuJiu = lunar.getShuJiu(); Assert.AreEqual("三九", shuJiu.toString(), solar.toYmd()); Assert.AreEqual("三九第1天", shuJiu.toFullString(), solar.toYmd()); }
public XiaoYun(DaYun daYun, int index, bool forward) { this.daYun = daYun; this.lunar = daYun.getLunar(); this.index = index; this.year = daYun.getStartYear() + index; this.age = daYun.getStartAge() + index; this.forward = forward; }
/* we should allocate object on a separate stack */ private WeakReference RegisterDummyDelegate(string name) { Dummy dummy = new Dummy(); WeakReference reference = new WeakReference(new CommandAction <string[]>(dummy.Execute)); Lunar.RegisterCommand(name, dummy.Execute); return(reference); }
internal static void Break() { Debug.Break(); Lunar.RegisterCommand("continue", delegate() { CRegistery.Unregister("continue"); EditorApplication.ExecuteMenuItem("Edit/Pause"); }); }
public void test3() { Solar solar = new Solar(2011, 7, 24); Lunar lunar = solar.getLunar(); Fu fu = lunar.getFu(); Assert.AreEqual("中伏", fu.toString(), solar.toYmd()); Assert.AreEqual("中伏第1天", fu.toFullString(), solar.toYmd()); }
public void test14() { Solar solar = new Solar(2020, 8, 24); Lunar lunar = solar.getLunar(); Fu fu = lunar.getFu(); Assert.AreEqual("末伏", fu.toString(), solar.toYmd()); Assert.AreEqual("末伏第10天", fu.toFullString(), solar.toYmd()); }
public void testXunKong1() { Solar solar = new Solar(2020, 11, 19, 0, 0, 0); Lunar lunar = solar.getLunar(); Assert.AreEqual("辰巳", lunar.getYearXunKong()); Assert.AreEqual("午未", lunar.getMonthXunKong()); Assert.AreEqual("戌亥", lunar.getDayXunKong()); }
public void testQiYun() { Solar solar = new Solar(1983, 2, 15, 20, 0, 0); Lunar lunar = solar.getLunar(); EightChar bazi = lunar.getEightChar(); Yun yun = bazi.getYun(0); Assert.AreEqual(6, yun.getStartYear()); Assert.AreEqual(2, yun.getStartMonth()); Assert.AreEqual(20, yun.getStartDay()); Assert.AreEqual("1989-05-05", yun.getStartSolar().toYmd()); solar = new Solar(2013, 7, 13, 16, 17, 0); lunar = solar.getLunar(); bazi = lunar.getEightChar(); yun = bazi.getYun(0); Assert.AreEqual(8, yun.getStartYear()); Assert.AreEqual(4, yun.getStartMonth()); Assert.AreEqual(0, yun.getStartDay()); Assert.AreEqual("2021-11-13", yun.getStartSolar().toYmd()); solar = new Solar(2020, 8, 18, 10, 0, 0); lunar = solar.getLunar(); bazi = lunar.getEightChar(); yun = bazi.getYun(0); Assert.AreEqual(3, yun.getStartYear()); Assert.AreEqual(8, yun.getStartMonth()); Assert.AreEqual(0, yun.getStartDay()); Assert.AreEqual("2024-04-18", yun.getStartSolar().toYmd()); solar = new Solar(1972, 6, 15, 0, 0, 0); lunar = solar.getLunar(); bazi = lunar.getEightChar(); yun = bazi.getYun(1); Assert.AreEqual(7, yun.getStartYear()); Assert.AreEqual(5, yun.getStartMonth()); Assert.AreEqual(10, yun.getStartDay()); Assert.AreEqual("1979-11-25", yun.getStartSolar().toYmd()); solar = new Solar(1968, 11, 22, 0, 0, 0); lunar = solar.getLunar(); bazi = lunar.getEightChar(); yun = bazi.getYun(1); Assert.AreEqual(5, yun.getStartYear()); Assert.AreEqual(1, yun.getStartMonth()); Assert.AreEqual(20, yun.getStartDay()); Assert.AreEqual("1974-01-11", yun.getStartSolar().toYmd()); solar = new Solar(1968, 11, 23, 0, 0, 0); lunar = solar.getLunar(); bazi = lunar.getEightChar(); yun = bazi.getYun(1); Assert.AreEqual(4, yun.getStartYear()); Assert.AreEqual(9, yun.getStartMonth()); Assert.AreEqual(20, yun.getStartDay()); Assert.AreEqual("1973-09-12", yun.getStartSolar().toYmd()); }
public void test12() { Solar solar = new Solar(2020, 7, 17); Lunar lunar = solar.getLunar(); Fu fu = lunar.getFu(); Assert.AreEqual("初伏", fu.toString(), solar.toYmd()); Assert.AreEqual("初伏第2天", fu.toFullString(), solar.toYmd()); }
public void TestDelegateActionCommand() { Lunar.RegisterCommand("action", (string[] args) => { AddResult("action: {0}", CStringUtils.Join(args, ", ")); }); Execute("action arg1 arg2 arg3"); AssertResult("action: arg1, arg2, arg3"); }
public void TestBool3() { Lunar.RegisterCommand("action", (bool[] args) => { AddResult("action " + CStringUtils.Join(args, " ")); }); Execute("action 1 0 1"); AssertResult("action True False True"); }
public void TestFloat3() { Lunar.RegisterCommand("action", (float[] args) => { AddResult("action " + CStringUtils.Join(args, " ")); }); Execute("action 3.14 3.15 3.16"); AssertResult("action 3.14 3.15 3.16"); }
public void TestInts3() { Lunar.RegisterCommand("action", (int[] args) => { AddResult("action " + CStringUtils.Join(args, " ")); }); Execute("action 10 20 30"); AssertResult("action 10 20 30"); }
public void TestStrings3() { Lunar.RegisterCommand("action", (string[] args) => { AddResult("action " + CStringUtils.Join(args, " ")); }); Execute("action arg1 arg2 arg3"); AssertResult("action arg1 arg2 arg3"); }
public void TestVector4() { Lunar.RegisterCommand("action", (Vector4 arg) => { AddResult("action " + arg); }); Execute("action 1.0 2.0 3.0 4.0"); AssertResult("action (1.0, 2.0, 3.0, 4.0)"); }
public void TestStringArg3() { Lunar.RegisterCommand("action", (string arg1, string arg2, string arg3) => { AddResult("action " + arg1 + " " + arg2 + " " + arg3); }); Execute("action arg1 arg2 arg3"); AssertResult("action arg1 arg2 arg3"); }
public void TestDelegateAction() { Lunar.RegisterCommand("action", () => { AddResult("action"); }); Execute("action"); AssertResult("action"); }
public void TestStringArg() { Lunar.RegisterCommand("action", (string arg) => { AddResult("action " + arg); }); Execute("action arg1"); AssertResult("action arg1"); }
public void TestFloatArg3() { Lunar.RegisterCommand("action", (float arg1, float arg2, float arg3) => { AddResult("action " + arg1 + " " + arg2 + " " + arg3); }); Execute("action 3.14 3.15 3.16"); AssertResult("action 3.14 3.15 3.16"); }
public void TestFloatArg() { Lunar.RegisterCommand("action", (float arg) => { AddResult("action " + arg); }); Execute("action 3.14"); AssertResult("action 3.14"); }
public void TestIntArg3() { Lunar.RegisterCommand("action", (int arg1, int arg2, int arg3) => { AddResult("action " + arg1 + " " + arg2 + " " + arg3); }); Execute("action 10 20 30"); AssertResult("action 10 20 30"); }
public void TestIntArg() { Lunar.RegisterCommand("action", (int arg) => { AddResult("action " + arg); }); Execute("action 10"); AssertResult("action 10"); }
public void TestWrongNumberOfArgs() { Lunar.RegisterCommand("action", () => { Assert.Fail("Command should not get executed"); }); Execute("action arg", false); AssertResult(" Wrong number of arguments", " usage: action"); }
public void TestWrongNumberOfArgs3() { Lunar.RegisterCommand("action", (string arg1, string arg2) => { Assert.Fail("Command should not get executed"); }); Execute("action arg1 arg2 arg3", false); AssertResult(" Wrong number of arguments", " usage: action <arg1> <arg2>"); }
public void TestBoolArg3() { Lunar.RegisterCommand("action", (bool arg1, bool arg2, bool arg3) => { AddResult("action " + arg1 + " " + arg2 + " " + arg3); }); Execute("action 1 0 1"); AssertResult("action True False True"); }