Пример #1
0
        public void AC_HtmlToken()
        {
            TextTokenTestModel      model           = new TextTokenTestModel();
            AssemblyCompilerOptions compilerOptions = new AssemblyCompilerOptions()
            {
                ModelType = model.GetType()
            };

#if !NETCOREAPP
            compilerOptions.AssemblyDirectory = TestContext.CurrentContext.TestDirectory;
            compilerOptions.AllowSaveAssembly = true;
#endif
            AssemblyCompiler            compiler    = new AssemblyCompiler(compilerOptions);
            AssemblyCompilerTypeContext typeContext = compiler.AddType("TextTokenTest", typeof(ITextTokenTestResultModel));
            typeContext.AddProperty("TextProperty", "{html:TextProperty}", OutputFormat.Text);
            typeContext.AddProperty("HtmlProperty", "{html:HtmlProperty}", OutputFormat.Text);
            typeContext.AddProperty("EncodedHtmlProperty", "{html:HtmlProperty}", OutputFormat.Html);
            typeContext.AddProperty("IntProperty", "{html:IntProperty}", OutputFormat.Text);
            typeContext.AddProperty("FormattedIntProperty", "{html:IntProperty:0000.00}", OutputFormat.Text);
            typeContext.AddProperty("FloatProperty", "{html:FloatProperty}", OutputFormat.Text);
            typeContext.AddProperty("FormattedFloatProperty", "{html:FloatProperty:0.##}", OutputFormat.Text);
            typeContext.AddProperty("DateTimeProperty", "{html:DateTimeProperty:dd.MM.yyyy}", OutputFormat.Text);
            typeContext.AddProperty("FormattedDateTimeProperty", "{html:DateTimeProperty:dd.MM.yyyy HH:mm:ss}", OutputFormat.Text);
#if NETCOREAPP
            Type[] compiledTypes = compiler.GetCompiledTypes();
#else
            Type[] compiledTypes = compiler.GetCompiledTypes(true);
#endif
            Assert.IsNotNull(compiledTypes);
            Assert.AreEqual(1, compiledTypes.Length);
            Type type = compiledTypes[0];
            Assert.IsNotNull(type);
            Assert.IsNotNull(type.GetInterface(typeof(ITextTokenTestResultModel).FullName));
            CultureInfo[] cultureArr = new[] { CultureInfo.InvariantCulture, CultureInfo.GetCultureInfo(1049) };
            foreach (CultureInfo culture in cultureArr)
            {
                ITextTokenTestResultModel result = AssemblyCompiler.CreateTypeInstance <ITextTokenTestResultModel>(type, model, culture);
                Assert.AreEqual(model.TextProperty, result.TextProperty);
                Assert.AreEqual(model.HtmlProperty, result.HtmlProperty);
                Assert.AreEqual(model.HtmlProperty, result.EncodedHtmlProperty);
                Assert.AreEqual(String.Format(culture, "{0}", model.IntProperty), result.IntProperty);
                Assert.AreEqual(String.Format(culture, "{0:0000.00}", model.IntProperty), result.FormattedIntProperty);
                Assert.AreEqual(String.Format(culture, "{0}", model.FloatProperty), result.FloatProperty);
                Assert.AreEqual(String.Format(culture, "{0:0.##}", model.FloatProperty), result.FormattedFloatProperty);
                Assert.AreEqual(String.Format(culture, "{0:dd.MM.yyyy}", model.DateTimeProperty), result.DateTimeProperty);
                Assert.AreEqual(String.Format(culture, "{0:dd.MM.yyyy HH:mm:ss}", model.DateTimeProperty), result.FormattedDateTimeProperty);
            }
        }
Пример #2
0
        public void RC_HtmlToken()
        {
            var model      = new TextTokenTestModel();
            var cultureArr = new[] { CultureInfo.InvariantCulture, CultureInfo.GetCultureInfo(1049) };

            foreach (CultureInfo culture in cultureArr)
            {
                RuntimeCompiler compiler = new RuntimeCompiler(new CompilerOptions());
                Assert.AreEqual(model.TextProperty, compiler.Compile(model.GetType(), "{html:TextProperty}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(model.HtmlProperty, compiler.Compile(model.GetType(), "{html:HtmlProperty}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(model.HtmlProperty, compiler.Compile(model.GetType(), "{html:HtmlProperty}", OutputFormat.Html).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0}", model.IntProperty), compiler.Compile(model.GetType(), "{html:IntProperty}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0:0000.00}", model.IntProperty), compiler.Compile(model.GetType(), "{html:IntProperty:0000.00}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0}", model.FloatProperty), compiler.Compile(model.GetType(), "{html:FloatProperty}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0:0.##}", model.FloatProperty), compiler.Compile(model.GetType(), "{html:FloatProperty:0.##}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0:dd.MM.yyyy}", model.DateTimeProperty), compiler.Compile(model.GetType(), "{html:DateTimeProperty:dd.MM.yyyy}", OutputFormat.Text).DynamicInvoke(model, culture));
                Assert.AreEqual(String.Format(culture, "{0:dd.MM.yyyy HH:mm:ss}", model.DateTimeProperty), compiler.Compile(model.GetType(), "{html:DateTimeProperty:dd.MM.yyyy hh:mm:ss}", OutputFormat.Text).DynamicInvoke(model, culture));
            }
        }