internal void DoRollAdd(bool roll, ChineseCalendar cal, int[][] tests) { String name = (roll) ? "rolling" : "adding"; for (int i = 0; i < tests.Length; i++) { int[] test = tests[i]; cal.Clear(); cal.Set(IBM.ICU.Util.Calendar.EXTENDED_YEAR, test[0]); cal.Set(IBM.ICU.Util.Calendar.MONTH, test[1] - 1); cal.Set(IBM.ICU.Util.ChineseCalendar.IS_LEAP_MONTH, test[2]); cal.Set(IBM.ICU.Util.Calendar.DAY_OF_MONTH, test[3]); if (roll) { cal.Roll(test[4], test[5]); } else { cal.Add(test[4], test[5]); } if (cal.Get(IBM.ICU.Util.Calendar.EXTENDED_YEAR) != test[6] || cal.Get(IBM.ICU.Charset.CalendarTest.MONTH) != (test[7] - 1) || cal.Get(IBM.ICU.Util.ChineseCalendar.IS_LEAP_MONTH) != test[8] || cal.Get(IBM.ICU.Charset.CalendarTest.DATE) != test[9]) { Errln("Fail: " + name + " " + YmdToString(test[0], test[1] - 1, test[2], test[3]) + " " + IBM.ICU.Charset.CalendarTest.FieldName(test[4]) + " by " + test[5] + ": expected " + YmdToString(test[6], test[7] - 1, test[8], test[9]) + ", got " + IBM.ICU.Charset.CalendarTest.YmdToString(cal)); } else if (IsVerbose()) { Logln("OK: " + name + " " + YmdToString(test[0], test[1] - 1, test[2], test[3]) + " " + IBM.ICU.Charset.CalendarTest.FieldName(test[4]) + " by " + test[5] + ": got " + IBM.ICU.Charset.CalendarTest.YmdToString(cal)); } } }