Пример #1
0
        public void TryParse_EmptyString_NoSuccess()
        {
            TimeItem ti;

            Assert.IsFalse(TimeItem.TryParse(string.Empty, out ti));
            Assert.IsNull(ti);
        }
Пример #2
0
        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);
        }
Пример #3
0
        public void TryParse_OnlyHour_ParseIt()
        {
            TimeItem ti;

            Assert.IsTrue(TimeItem.TryParse("1", out ti));
            Assert.AreEqual(1, ti.Hour);
            Assert.AreEqual(0, ti.Minute);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
 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);
 }