public void TryParse_EmptyString_NoSuccess() { TimeItem ti; Assert.IsFalse(TimeItem.TryParse(string.Empty, out ti)); Assert.IsNull(ti); }
public void TryParse_HourAndMinute_ParseIt() { TimeItem ti; Assert.IsTrue(TimeItem.TryParse("1:2", out ti)); Assert.AreEqual(1, ti.Hour); Assert.AreEqual(2, ti.Minute); }
public void TryParse_OnlyHour_ParseIt() { TimeItem ti; Assert.IsTrue(TimeItem.TryParse("1", out ti)); Assert.AreEqual(1, ti.Hour); Assert.AreEqual(0, ti.Minute); }
public void TryParse_OutOfRange_Throw() { TimeItem ti; Assert.Throws <ArgumentOutOfRangeException>(() => TimeItem.TryParse("25:0", out ti)); Assert.Throws <ArgumentOutOfRangeException>(() => TimeItem.TryParse("-1:0", out ti)); Assert.Throws <ArgumentOutOfRangeException>(() => TimeItem.TryParse("0:61", out ti)); Assert.Throws <ArgumentOutOfRangeException>(() => TimeItem.TryParse("0:-1", out ti)); }
public void TryParse_HourAndMinuteNoColon_ParseIt() { TimeItem ti; Assert.IsTrue(TimeItem.TryParse("1600", out ti)); Assert.AreEqual(16, ti.Hour); Assert.AreEqual(0, ti.Minute); Assert.IsTrue(TimeItem.TryParse("630", out ti)); Assert.AreEqual(6, ti.Hour); Assert.AreEqual(30, ti.Minute); }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { var tiAsString = value as string; if (tiAsString != null) { TimeItem ti; if (TimeItem.TryParse(tiAsString, out ti)) { return(ti); } } return(Binding.DoNothing); }
public static string IncDec(string text, int stepsToIncrementBy, INCDEC_OPERATOR incDec, ref int selectionStart) { if (!String.IsNullOrWhiteSpace(text)) { var hoursToIncrementBy = stepsToIncrementBy * 15 / 60f; var parts = Enumerable.ToList(SplitIntoParts(text)); int idx; bool moveCursorLeft; int cursorInPartPosition; var part = FindPositionPart(parts, selectionStart, out idx, out cursorInPartPosition); var newPart = part; if (idx == 0 || (parts[0] == WorkDayParser.automaticPauseDeactivation && idx == 1)) { // is daystart, has no - TimeItem ti; if (TimeItem.TryParse(part, out ti)) { var tiIncremented = IncDecTimeItem(incDec, ti, hoursToIncrementBy); newPart = String.Format((string)"{0}", (object)tiIncremented.ToShortString()); } } else if (part.StartsWith(WorkDayParser.endTimeStartChar.ToString())) { TimeItem ti; if (TimeItem.TryParse(part.TrimStart(WorkDayParser.endTimeStartChar), out ti)) { var tiIncremented = IncDecTimeItem(incDec, ti, hoursToIncrementBy); newPart = String.Format("{0}{1}", WorkDayParser.endTimeStartChar, tiIncremented.ToShortString()); } } else { double t; if (Double.TryParse(part, NumberStyles.Any, CultureInfo.InvariantCulture, out t)) { double hIncremented = t; if (incDec == INCDEC_OPERATOR.INCREMENT) { hIncremented += hoursToIncrementBy; } else if ((hIncremented - hoursToIncrementBy) >= 0) { // do not go below zero hIncremented -= hoursToIncrementBy; } newPart = hIncremented.ToString(CultureInfo.InvariantCulture); } } // check if we need to move cursor to left if (cursorInPartPosition > newPart.Length) { selectionStart = selectionStart - cursorInPartPosition + newPart.Length; } if (idx >= 0) { parts[idx] = newPart; } return(parts.Aggregate(String.Empty, (aggr, s) => aggr + s)); } return(String.Empty); }