public void ByLocale()
        {
            var policy = Application.Ioc.Resolve <ICacheIsolationPolicy>(serviceKey: "Locale");

            LocaleUtils.SetThreadLanguage("zh-CN");
            LocaleUtils.SetThreadTimezoneAutomatic("China Standard Time");
            Assert.Equals(policy.GetIsolationKey(), Pair.Create(
                              "zh-CN", LocaleUtils.GetTimezoneInfo("China Standard Time")));
            LocaleUtils.SetThreadLanguage("en-US");
            LocaleUtils.SetThreadTimezoneAutomatic("GMT Standard Time");
            Assert.Equals(policy.GetIsolationKey(), Pair.Create(
                              "en-US", LocaleUtils.GetTimezoneInfo("GMT Standard Time")));
        }
示例#2
0
        public void SetThreadTimezoneAutomatic()
        {
            var context = HttpManager.CurrentContext;

            // No cookies, with default timezone
            context.RemoveCookie(LocaleUtils.TimeZoneKey);
            LocaleUtils.SetThreadTimezoneAutomatic("China Standard Time");
            var timezone = context.GetData <TimeZoneInfo>(LocaleUtils.TimeZoneKey);

            Assert.Equals(timezone, LocaleUtils.GetTimezoneInfo("China Standard Time"));
            LocaleUtils.SetThreadTimezoneAutomatic("GMT Standard Time");
            timezone = context.GetData <TimeZoneInfo>(LocaleUtils.TimeZoneKey);
            Assert.Equals(timezone, LocaleUtils.GetTimezoneInfo("GMT Standard Time"));
            // No cookies, no default timezone
            Assert.IsTrue(!LocaleUtils.SetThreadTimezoneAutomatic(null));
            timezone = context.GetData <TimeZoneInfo>(LocaleUtils.TimeZoneKey);
            Assert.Equals(timezone, LocaleUtils.GetTimezoneInfo("GMT Standard Time"));
            // Have cookies, no default timezone
            context.PutCookie(LocaleUtils.TimeZoneKey, "China Standard Time", new HttpCookieOptions());
            Assert.IsTrue(LocaleUtils.SetThreadTimezoneAutomatic(null));
            timezone = context.GetData <TimeZoneInfo>(LocaleUtils.TimeZoneKey);
            Assert.Equals(timezone, LocaleUtils.GetTimezoneInfo("China Standard Time"));
        }