public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementHyperlink();

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyInlineProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyInlineProperties(element, elementMetadata);

            ApplyReference(element, buildContext, elementMetadata);

            // Генерация содержимого элемента

            var inlines = buildContext.ElementBuilder.BuildElements(buildContext, elementMetadata.Inlines);

            if (inlines != null)
            {
                foreach (var inline in inlines)
                {
                    element.Inlines.Add(inline);
                }
            }

            BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.PostApplyTextProperties(element, elementMetadata);

            return(element);
        }
        public void ShouldBuildInlines()
        {
            // Given

            dynamic inline1 = new DynamicWrapper();

            inline1.Run      = new DynamicWrapper();
            inline1.Run.Text = "Inline1";

            dynamic inline2 = new DynamicWrapper();

            inline2.Run      = new DynamicWrapper();
            inline2.Run.Text = "Inline2";

            dynamic elementMetadata = new DynamicWrapper();

            elementMetadata.Inlines = new[] { inline1, inline2 };

            // When
            PrintElementHyperlink element = BuildTestHelper.BuildHyperlink(elementMetadata);

            // Then
            Assert.IsNotNull(element);
            Assert.IsNotNull(element.Inlines);
            Assert.AreEqual(2, element.Inlines.Count);
            Assert.IsInstanceOf <PrintElementRun>(element.Inlines.First());
            Assert.IsInstanceOf <PrintElementRun>(element.Inlines.Last());
            Assert.AreEqual("Inline1", ((PrintElementRun)element.Inlines.First()).Text);
            Assert.AreEqual("Inline2", ((PrintElementRun)element.Inlines.Last()).Text);
        }
        private static void ApplyReference(PrintElementHyperlink element, PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            string referenceSting = BuildHelper.FormatValue(buildContext, elementMetadata.Reference, elementMetadata.SourceFormat);

            if (!string.IsNullOrEmpty(referenceSting))
            {
                Uri referenceUri;

                if (Uri.TryCreate(referenceSting, UriKind.RelativeOrAbsolute, out referenceUri))
                {
                    element.Reference = referenceUri;
                }
            }
        }
        public void ShouldApplyReference()
        {
            // Given
            dynamic elementMetadata = new DynamicWrapper();

            elementMetadata.Reference = "http://some.com";

            // When
            PrintElementHyperlink element = BuildTestHelper.BuildHyperlink(elementMetadata);

            // Then
            Assert.IsNotNull(element);
            Assert.AreEqual(new Uri("http://some.com"), element.Reference);
        }
Example #5
0
        public void ShouldBuildHyperlink()
        {
            //Given
            var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext();
            var element = new PrintElementHyperlink();
            var result  = new TextWriterWrapper();

            element.Reference = new Uri("http://google.com");

            var run = new PrintElementRun {
                Text = "Hyperlink Google"
            };

            element.Inlines.Add(run);

            //When
            context.Build(element, result.Writer);

            //Then
            Assert.AreEqual(Resources.ResultTestShouldBuildHyperlink, result.GetText());
        }