public void ToodleDoDaysOfWeekFrequencyTest2()
        {
            ICustomFrequency    frequency = ToodleDoRecurrencyHelpers.Get2DayRecurrency("every tue, WED");
            DaysOfWeekFrequency freq      = frequency as DaysOfWeekFrequency;

            Assert.IsNotNull(freq);
            Assert.IsFalse(freq.IsMonday);
            Assert.IsTrue(freq.IsTuesday);
            Assert.IsTrue(freq.IsWednesday);
            Assert.IsFalse(freq.IsThursday);
            Assert.IsFalse(freq.IsFriday);
            Assert.IsFalse(freq.IsSaturday);
            Assert.IsFalse(freq.IsSunday);
        }
        private static string GetToodleDoDaysOfWeekRecurrency(ICustomFrequency customFrequency)
        {
            DaysOfWeekFrequency frequency = customFrequency as DaysOfWeekFrequency;

            if (frequency == null)
            {
                return(ToodleDoConstants.RecurrencyNone);
            }
            // Join all selected days of week
            List <string> selectedDays = new List <string>();

            if (frequency.IsMonday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencyMonday);
            }
            if (frequency.IsTuesday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencyTuesday);
            }
            if (frequency.IsWednesday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencyWednesday);
            }
            if (frequency.IsThursday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencyThursday);
            }
            if (frequency.IsFriday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencyFriday);
            }
            if (frequency.IsSaturday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencySaturday);
            }
            if (frequency.IsSunday)
            {
                selectedDays.Add(ToodleDoConstants.RecurrencySunday);
            }

            string daysString = String.Empty;

            if (selectedDays.Count == 7)
            {
                daysString = ToodleDoConstants.RecurrencyDay;
            }
            else if (selectedDays.Count == 2 && frequency.IsSaturday && frequency.IsSunday)
            {
                daysString = ToodleDoConstants.RecurrencyWeekend;
            }
            else if (selectedDays.Count == 5 && !frequency.IsSaturday && !frequency.IsSunday)
            {
                daysString = ToodleDoConstants.RecurrencyWeekday;
            }
            else
            {
                daysString = string.Join(ToodleDoConstants.RecurrencyDaySeparator, selectedDays);
            }

            return(string.Format(CultureInfo.InvariantCulture, ToodleDoConstants.RecurrencyDaysOfWeekPattern, daysString));
        }
        private static ICustomFrequency Get2DayDaysOfWeekFrequency(string toodleDoFrequency)
        {
            Regex regex = new Regex(ToodleDoConstants.RecurrencyToodleDoDaysOfWeekRegex, RegexOptions.IgnoreCase);
            Match match = regex.Match(toodleDoFrequency);

            if (match == null || !match.Success)
            {
                return(null);
            }
            DaysOfWeekFrequency frequency = new DaysOfWeekFrequency();
            CaptureCollection   days      = match.Groups["DayOfWeek"].Captures;

            foreach (var day in days)
            {
                DayOfWeek?dayOfWeek = GetDayOfWeekFromShortString(day.ToString());
                if (dayOfWeek != null)
                {
                    switch (dayOfWeek)
                    {
                    case DayOfWeek.Monday:
                        frequency.IsMonday = true;
                        break;

                    case DayOfWeek.Tuesday:
                        frequency.IsTuesday = true;
                        break;

                    case DayOfWeek.Wednesday:
                        frequency.IsWednesday = true;
                        break;

                    case DayOfWeek.Thursday:
                        frequency.IsThursday = true;
                        break;

                    case DayOfWeek.Friday:
                        frequency.IsFriday = true;
                        break;

                    case DayOfWeek.Saturday:
                        frequency.IsSaturday = true;
                        break;

                    case DayOfWeek.Sunday:
                        frequency.IsSunday = true;
                        break;
                    }
                }
                else if (day.ToString().Equals(ToodleDoConstants.RecurrencyWeekday, StringComparison.OrdinalIgnoreCase))
                {
                    frequency.IsMonday    = true;
                    frequency.IsTuesday   = true;
                    frequency.IsWednesday = true;
                    frequency.IsThursday  = true;
                    frequency.IsFriday    = true;
                }
                else if (day.ToString().Equals(ToodleDoConstants.RecurrencyWeekend, StringComparison.OrdinalIgnoreCase))
                {
                    frequency.IsSaturday = true;
                    frequency.IsSunday   = true;
                }
            }
            return(frequency);
        }