public void TestDateFormatParserFromCulture(string cultureInfoName, params string[] expectedDateParts)
        {
            var culture = CultureInfo.GetCultureInfo(cultureInfoName);

            var datePattern = GetDateAndTimeFormat(culture);

            var sections = Parser.ParseSections(datePattern, out bool syntaxError);

            var message = $"Culture: {culture.EnglishName}, Actual date pattern: {datePattern}";

            Assert.IsFalse(syntaxError, message);

            var dateSection = sections.FirstOrDefault();

            Assert.IsNotNull(dateSection);

            var dateParts = dateSection
                            .GeneralTextDateDurationParts
                            .Where(Token.IsDatePart)
                            .Select(p => DateFormatPartAdjuster.AdjustDateTimeFormatPart(p))
                            .ToArray();

            Assert.AreEqual(expectedDateParts.Length, dateParts.Length, message);

            for (var i = 0; i < expectedDateParts.Length; i++)
            {
                var expected = expectedDateParts[i];
                var actual   = dateParts[i];
                Assert.AreEqual(expected, actual, message);
            }
        }
Beispiel #2
0
        private void InitCustomRects(Section dateSection)
        {
            this.dateParts = dateSection
                             .GeneralTextDateDurationParts
                             .Select(p => DateFormatPartAdjuster.AdjustDateTimeFormatPart(p))
                             .ToArray();

            Rectangle rect         = this.ClientRectangle;
            int       oneCharWidth = rect.Width / dateParts.Sum(s => s.Length);
            int       left         = rect.Left;

            this.digitRects.Clear();
            for (var i = 0; i < dateParts.Length; i++)
            {
                var datePart = dateParts[i];
                var s        = datePart.Length * oneCharWidth;
                this.digitRects.Add(new Rectangle(left, rect.Top, s, rect.Height));
                left += s;
            }
        }