예제 #1
0
        public void DateNumberIsParsedAsSeconds()
        {
            var input   = NumberValue.Create(12345);
            var format  = new FilterArguments(new StringValue("%s"));
            var context = new TemplateContext();

            var result = MiscFilters.Date(input, format, context);

            Assert.Equal("12345", result.ToStringValue());
        }
예제 #2
0
        public async Task NoTimeZoneIsParsedAsLocal()
        {
            var input   = StringValue.Create("1970-01-01 00:00:00");
            var format  = new FilterArguments(new StringValue("%a %b %e %H:%M:%S %Y %z"));
            var context = new TemplateContext {
                TimeZone = Pacific
            };

            var result = await MiscFilters.Date(input, format, context);

            Assert.Equal("Thu Jan  1 00:00:00 1970 -0800", result.ToStringValue());
        }
예제 #3
0
        public void Date(string format, string expected)
        {
            var input = new DateTimeValue(new DateTimeOffset(new DateTime(2017, 8, 1, 17, 4, 36, 123), TimeSpan.FromHours(8)));

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.CultureInfo = new CultureInfo("en-US");

            var result = MiscFilters.Date(input, arguments, context);

            Assert.Equal(expected, result.ToStringValue());
        }
예제 #4
0
        public void Time12hFormatFormDateTimeOffset(string dateTimeOffset, string format, string expected)
        {
            var input = new DateTimeValue(DateTimeOffset.Parse(dateTimeOffset));

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.CultureInfo = CultureInfo.InvariantCulture;

            var result = MiscFilters.Date(input, arguments, context);

            Assert.Equal(expected, result.ToStringValue().Trim());
        }
예제 #5
0
        public async Task DateNumberIsParsedAsSeconds(long number, string expected)
        {
            // Converting to Unix time should not vary by TimeSone

            var input   = NumberValue.Create(number);
            var format  = new FilterArguments(new StringValue("%s"));
            var context = new TemplateContext {
                TimeZone = Eastern
            };

            var result = await MiscFilters.Date(input, format, context);

            Assert.Equal(expected, result.ToStringValue());
        }
예제 #6
0
        public async Task DefaultTimeZoneIsSetWhenNotParsed()
        {
            // This test ensures that when a TZ is specified it uses it instead of the settings one
            var input = StringValue.Create("1970-01-01 00:00:00");

            var format  = new FilterArguments(new StringValue("%s"));
            var context = new TemplateContext {
                TimeZone = Eastern
            };

            var result = await MiscFilters.Date(input, format, context);

            Assert.Equal("18000", result.ToStringValue());
        }
예제 #7
0
        public void DateIsParsed()
        {
            var input  = new StringValue("08/01/2017");
            var format = "%D";

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.CultureInfo = CultureInfo.InvariantCulture;

            var result = MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/2017", result.ToStringValue());
        }
예제 #8
0
        public void DateResolvesToday()
        {
            var input  = new StringValue("today");
            var format = "%D";

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.Now         = () => new DateTimeOffset(new DateTime(2017, 8, 1, 5, 4, 36, 123), new TimeSpan(0));
            context.CultureInfo = CultureInfo.InvariantCulture;

            var result = MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/2017", result.ToStringValue());
        }
예제 #9
0
        public async Task Time12hFormatFormDateTimeOffset(string dateTimeOffset, string format, string expected)
        {
            var input = new DateTimeValue(DateTimeOffset.Parse(dateTimeOffset));

            var arguments = new FilterArguments(new StringValue(format));
            var options   = new TemplateOptions()
            {
                CultureInfo = CultureInfo.InvariantCulture
            };
            var context = new TemplateContext(options);

            var result = await MiscFilters.Date(input, arguments, context);

            Assert.Equal(expected, result.ToStringValue().Trim());
        }
예제 #10
0
        public void ChangeTimeZoneAndApply12hFormat(string initialDateTime, string timeZone, string format, string expected)
        {
            var input            = new DateTimeValue(DateTimeOffset.Parse(initialDateTime));
            var timeZoneArgument = new FilterArguments(new StringValue(timeZone));
            var formatArgument   = new FilterArguments(new StringValue(format));
            var context          = new TemplateContext {
                CultureInfo = CultureInfo.InvariantCulture
            };

            var result = MiscFilters.ChangeTimeZone(input, timeZoneArgument, context);

            result = MiscFilters.Date(result, formatArgument, context);

            Assert.Equal(expected, result.ToStringValue().Trim());
        }
예제 #11
0
        public async Task DateNumberIsParsedInLocalTimeZone()
        {
            // This test is issued from a template running in Ruby on a system with -5 TZ
            // {{ 0 | date: '%c' }}

            var input   = NumberValue.Create(0);
            var format  = new FilterArguments(new StringValue("%+"));
            var context = new TemplateContext {
                TimeZone = Eastern
            };

            var result = await MiscFilters.Date(input, format, context);

            Assert.Equal("Wed Dec 31 19:00:00 -05:00 1969", result.ToStringValue());
        }
예제 #12
0
        public async Task Date(string format, string expected)
        {
            var input = new DateTimeValue(new DateTimeOffset(
                                              new DateTime(2017, 8, 1, 17, 4, 36, 123), TimeSpan.FromHours(8)));

            var arguments = new FilterArguments(new StringValue(format));
            var options   = new TemplateOptions()
            {
                CultureInfo = new CultureInfo("en-US"), TimeZone = TimeZoneInfo.Utc
            };
            var context = new TemplateContext(options);

            var result = await MiscFilters.Date(input, arguments, context);

            Assert.Equal(expected, result.ToStringValue());
        }
예제 #13
0
        public async Task DateIsParsed()
        {
            var input  = new StringValue("08/01/2017");
            var format = "%D";

            var arguments = new FilterArguments(new StringValue(format));
            var options   = new TemplateOptions()
            {
                CultureInfo = CultureInfo.InvariantCulture, TimeZone = TimeZoneInfo.Utc
            };
            var context = new TemplateContext(options);

            var result = await MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/17", result.ToStringValue());
        }
예제 #14
0
        public void DateIsParsedWithCulture()
        {
            var input  = new StringValue("08/01/2017");
            var format = "%d/%m/%Y";

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.CultureInfo = new CultureInfo("fr-FR");
            var resultFR = MiscFilters.Date(input, arguments, context);

            context.CultureInfo = new CultureInfo("en-US");
            var resultUS = MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/2017", resultFR.ToStringValue());
            Assert.Equal("01/08/2017", resultUS.ToStringValue());
        }
예제 #15
0
        public void DateIsRenderedWithCulture()
        {
            var input  = new StringValue("08/01/2017");
            var format = "%c";

            var arguments = new FilterArguments(new StringValue(format));
            var context   = new TemplateContext();

            context.CultureInfo = new CultureInfo("fr-FR");
            var resultFR = MiscFilters.Date(input, arguments, context);

            context.CultureInfo = new CultureInfo("en-US");
            var resultUS = MiscFilters.Date(input, arguments, context);

            Assert.Equal("dimanche 8 janvier 2017 00:00:00", resultFR.ToStringValue());
            Assert.Equal("Tuesday, August 1, 2017 12:00:00 AM", resultUS.ToStringValue());
        }
예제 #16
0
        public async Task DateResolvesToday()
        {
            var input  = new StringValue("today");
            var format = "%D";

            var arguments = new FilterArguments(new StringValue(format));
            var options   = new TemplateOptions()
            {
                CultureInfo = CultureInfo.InvariantCulture,
                Now         = () => new DateTimeOffset(new DateTime(2017, 8, 1, 5, 4, 36, 123), new TimeSpan(0))
            };
            var context = new TemplateContext(options);

            var result = await MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/17", result.ToStringValue());
        }
예제 #17
0
        public async Task DateIsParsedWithCulture()
        {
            var input  = new StringValue("08/01/2017");
            var format = "%d/%m/%Y";

            var arguments = new FilterArguments(new StringValue(format));

            var context = new TemplateContext(new TemplateOptions {
                CultureInfo = new CultureInfo("fr-FR"), TimeZone = TimeZoneInfo.Utc
            });
            var resultFR = await MiscFilters.Date(input, arguments, context);

            context = new TemplateContext(new TemplateOptions {
                CultureInfo = new CultureInfo("en-US"), TimeZone = TimeZoneInfo.Utc
            });
            var resultUS = await MiscFilters.Date(input, arguments, context);

            Assert.Equal("08/01/2017", resultFR.ToStringValue());
            Assert.Equal("01/08/2017", resultUS.ToStringValue());
        }
예제 #18
0
        public async Task DefaultTimeZoneAppliesDaylightSaving()
        {
            // This test ensures that the DST is respected when TZ is rendered

            var input = StringValue.Create("2021-01-01 00:00:00");

            var format  = new FilterArguments(new StringValue("%z"));
            var context = new TemplateContext {
                TimeZone = Pacific
            };

            var result = await MiscFilters.Date(input, format, context);

            Assert.Equal("-0800", result.ToStringValue());

            input = StringValue.Create("2021-06-01 00:00:00");

            result = await MiscFilters.Date(input, format, context);

            Assert.Equal("-0700", result.ToStringValue());
        }