/// <inheritdoc /> public async Task <HtmlString> PartialAsync([NotNull] string partialViewName, object model, ViewDataDictionary viewData) { using (var writer = new StringCollectionTextWriter(Encoding.UTF8)) { await RenderPartialCoreAsync(partialViewName, model, viewData, writer); return(new HtmlString(writer)); } }
public async Task WriteLines_WritesCharBuffer() { // Arrange var newLine = Environment.NewLine; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.WriteLine(); await writer.WriteLineAsync(); // Assert var actual = writer.Buffer.BufferEntries; Assert.Equal<object>(new[] { newLine, newLine }, actual); }
public void Copy_WritesContent_IfTargetTextWriterIsNotAStringCollectionTextWriter() { // Arrange var source = new StringCollectionTextWriter(Encoding.UTF8); var target = new StringWriter(); var expected = @"Hello world" + Environment.NewLine + "abc"; // Act source.WriteLine("Hello world"); source.Write(new[] { 'x', 'a', 'b', 'c' }, 1, 3); source.CopyTo(target); // Assert Assert.Equal(expected, target.ToString()); }
public async Task WriteLines_WritesCharBuffer() { // Arrange var newLine = Environment.NewLine; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.WriteLine(); await writer.WriteLineAsync(); // Assert var actual = writer.Buffer.BufferEntries; Assert.Equal <object>(new[] { newLine, newLine }, actual); }
public void WriteLine_WritesDataTypes_ToBuffer() { // Arrange var newLine = Environment.NewLine; var expected = new List<object> { "False", newLine, "1.1", newLine, "3", newLine }; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.WriteLine(false); writer.WriteLine(1.1f); writer.WriteLine(3L); // Assert Assert.Equal(expected, writer.Buffer.BufferEntries); }
public void WriteLine_WritesDataTypes_ToBuffer() { // Arrange var newLine = Environment.NewLine; var expected = new List <object> { "False", newLine, "1.1", newLine, "3", newLine }; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.WriteLine(false); writer.WriteLine(1.1f); writer.WriteLine(3L); // Assert Assert.Equal(expected, writer.Buffer.BufferEntries); }
public void Copy_CopiesContent_IfTargetTextWriterIsAStringCollectionTextWriter() { // Arrange var source = new StringCollectionTextWriter(Encoding.UTF8); var target = new StringCollectionTextWriter(Encoding.UTF8); // Act source.Write("Hello world"); source.Write(new char[1], 0, 1); source.CopyTo(target); // Assert // Make sure content was written to the source. Assert.Equal(2, source.Buffer.BufferEntries.Count); Assert.Equal(1, target.Buffer.BufferEntries.Count); Assert.Same(source.Buffer.BufferEntries, target.Buffer.BufferEntries[0]); }
public void Write_WritesDataTypes_ToBuffer() { // Arrange var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718", "m" }; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(true); writer.Write(3); writer.Write(ulong.MaxValue); writer.Write(new TestClass()); writer.Write(3.14); writer.Write(2.718m); writer.Write('m'); // Assert Assert.Equal <object>(expected, writer.Buffer.BufferEntries); }
public void Write_WritesDataTypes_ToBuffer() { // Arrange var expected = new[] { "True", "3", "18446744073709551615", "Hello world", "3.14", "2.718", "m" }; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(true); writer.Write(3); writer.Write(ulong.MaxValue); writer.Write(new TestClass()); writer.Write(3.14); writer.Write(2.718m); writer.Write('m'); // Assert Assert.Equal<object>(expected, writer.Buffer.BufferEntries); }
public void Copy_CopiesContent_IfTargetTextWriterIsAStringCollectionTextWriter() { // Arrange var source = new StringCollectionTextWriter(Encoding.UTF8); var target = new StringCollectionTextWriter(Encoding.UTF8); // Act source.Write("Hello world"); source.Write(new char[1], 0, 1); source.CopyTo(target, new CommonTestEncoder()); // Assert // Make sure content was written to the source. Assert.Equal(2, source.Content.Entries.Count); Assert.Equal(1, target.Content.Entries.Count); var result = Assert.Single(target.Content.Entries); var bufferedHtmlContent = Assert.IsType <BufferedHtmlContent>(result); Assert.Same(source.Content.Entries, bufferedHtmlContent.Entries); }
public async Task Write_WritesCharBuffer() { // Arrange var input1 = new ArraySegment<char>(new char[] { 'a', 'b', 'c', 'd' }, 1, 3); var input2 = new ArraySegment<char>(new char[] { 'e', 'f' }, 0, 2); var input3 = new ArraySegment<char>(new char[] { 'g', 'h', 'i', 'j' }, 3, 1); var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(input1.Array, input1.Offset, input1.Count); await writer.WriteAsync(input2.Array, input2.Offset, input2.Count); await writer.WriteLineAsync(input3.Array, input3.Offset, input3.Count); // Assert var buffer = writer.Buffer.BufferEntries; Assert.Equal(4, buffer.Count); Assert.Equal("bcd", buffer[0]); Assert.Equal("ef", buffer[1]); Assert.Equal("j", buffer[2]); Assert.Equal(Environment.NewLine, buffer[3]); }
public async Task Write_WritesStringBuffer() { // Arrange var newLine = Environment.NewLine; var input1 = "Hello"; var input2 = "from"; var input3 = "ASP"; var input4 = ".Net"; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(input1); writer.WriteLine(input2); await writer.WriteAsync(input3); await writer.WriteLineAsync(input4); // Assert var actual = writer.Buffer.BufferEntries; Assert.Equal <object>(new[] { input1, input2, newLine, input3, input4, newLine }, actual); }
public async Task Write_WritesCharBuffer() { // Arrange var input1 = new ArraySegment <char>(new char[] { 'a', 'b', 'c', 'd' }, 1, 3); var input2 = new ArraySegment <char>(new char[] { 'e', 'f' }, 0, 2); var input3 = new ArraySegment <char>(new char[] { 'g', 'h', 'i', 'j' }, 3, 1); var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(input1.Array, input1.Offset, input1.Count); await writer.WriteAsync(input2.Array, input2.Offset, input2.Count); await writer.WriteLineAsync(input3.Array, input3.Offset, input3.Count); // Assert var buffer = writer.Buffer.BufferEntries; Assert.Equal(4, buffer.Count); Assert.Equal("bcd", buffer[0]); Assert.Equal("ef", buffer[1]); Assert.Equal("j", buffer[2]); Assert.Equal(Environment.NewLine, buffer[3]); }
public async Task WriteTagHelperToAsync_WritesToSpecifiedWriter() { // Arrange var writer = new StringCollectionTextWriter(Encoding.UTF8); var context = CreateViewContext(new StringWriter()); var tagHelperExecutionContext = new TagHelperExecutionContext( tagName: "p", selfClosing: false, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { return Task.FromResult(result: true); }, startTagHelperWritingScope: () => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); tagHelperExecutionContext.Output = new TagHelperOutput("p", new TagHelperAttributeList()); tagHelperExecutionContext.Output.Content.SetContent("Hello World!"); // Act var page = CreatePage(p => { p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait(); }, context); await page.ExecuteAsync(); // Assert Assert.Equal("<p>Hello World!</p>", writer.ToString()); }
public async Task WriteTagHelperToAsync_WritesFormattedTagHelper(TagHelperOutput output, string expected) { // Arrange var writer = new StringCollectionTextWriter(Encoding.UTF8); var context = CreateViewContext(new StringWriter()); var tagHelperExecutionContext = new TagHelperExecutionContext( tagName: output.TagName, selfClosing: output.SelfClosing, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => Task.FromResult(result: true), startTagHelperWritingScope: () => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); tagHelperExecutionContext.Output = output; // Act var page = CreatePage(p => { p.HtmlEncoder = new CommonTestEncoder(); p.WriteTagHelperToAsync(writer, tagHelperExecutionContext).Wait(); }, context); await page.ExecuteAsync(); // Assert Assert.Equal(expected, writer.ToString()); }
/// <summary> /// Initializes a new instance of <see cref="HtmlString"/> that is backed by <paramref name="writer"/>. /// </summary> /// <param name="writer"></param> public HtmlString([NotNull] StringCollectionTextWriter writer) { _writer = writer; }
public async Task Write_WithHtmlString_WritesValueWithoutEncoding() { // Arrange var writer = new RazorTextWriter(TextWriter.Null, Encoding.UTF8); var stringCollectionWriter = new StringCollectionTextWriter(Encoding.UTF8); stringCollectionWriter.Write("text1"); stringCollectionWriter.Write("text2"); var page = CreatePage(p => { p.Write(new HtmlString("Hello world")); p.Write(new HtmlString(stringCollectionWriter)); }); page.ViewContext.Writer = writer; // Act await page.ExecuteAsync(); // Assert var buffer = writer.BufferedWriter.Buffer; Assert.Equal(3, buffer.BufferEntries.Count); Assert.Equal("Hello world", buffer.BufferEntries[0]); Assert.Equal("text1", buffer.BufferEntries[1]); Assert.Equal("text2", buffer.BufferEntries[2]); }
/// <summary> /// Creates a new instance of <see cref="RazorTextWriter"/>. /// </summary> /// <param name="unbufferedWriter">The <see cref="TextWriter"/> to write output to when this instance /// is no longer buffering.</param> /// <param name="encoding">The character <see cref="Encoding"/> in which the output is written.</param> public RazorTextWriter(TextWriter unbufferedWriter, Encoding encoding) { UnbufferedWriter = unbufferedWriter; BufferedWriter = new StringCollectionTextWriter(encoding); TargetWriter = BufferedWriter; }
public async Task WriteTagHelperAsync_WritesContentAppropriately( bool childContentRetrieved, string input, string expected) { // Arrange var defaultTagHelperContent = new DefaultTagHelperContent(); var writer = new StringCollectionTextWriter(Encoding.UTF8); var context = CreateViewContext(writer); var tagHelperExecutionContext = new TagHelperExecutionContext( tagName: "p", selfClosing: false, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { defaultTagHelperContent.SetContent(input); return Task.FromResult(result: true); }, startTagHelperWritingScope: () => { }, endTagHelperWritingScope: () => defaultTagHelperContent); tagHelperExecutionContext.Output = new TagHelperOutput("p", new TagHelperAttributeList()); if (childContentRetrieved) { await tagHelperExecutionContext.GetChildContentAsync(); } // Act var page = CreatePage(p => { p.HtmlEncoder = new CommonTestEncoder(); p.WriteTagHelperAsync(tagHelperExecutionContext).Wait(); }, context); await page.ExecuteAsync(); // Assert Assert.Equal(expected, writer.ToString()); }
public async Task Write_WritesStringBuffer() { // Arrange var newLine = Environment.NewLine; var input1 = "Hello"; var input2 = "from"; var input3 = "ASP"; var input4 = ".Net"; var writer = new StringCollectionTextWriter(Encoding.UTF8); // Act writer.Write(input1); writer.WriteLine(input2); await writer.WriteAsync(input3); await writer.WriteLineAsync(input4); // Assert var actual = writer.Buffer.BufferEntries; Assert.Equal<object>(new[] { input1, input2, newLine, input3, input4, newLine }, actual); }
public IHtmlContent Render() { var defaultActions = GetDefaultActions(); var modeViewPath = _readOnly ? DisplayTemplateViewPath : EditorTemplateViewPath; foreach (string viewName in GetViewNames()) { var fullViewName = modeViewPath + "/" + viewName; var viewEngineResult = _viewEngine.FindPartialView(_viewContext, fullViewName); if (viewEngineResult.Success) { using (var writer = new StringCollectionTextWriter(_viewContext.Writer.Encoding)) { // Forcing synchronous behavior so users don't have to await templates. var view = viewEngineResult.View; using (view as IDisposable) { var viewContext = new ViewContext(_viewContext, viewEngineResult.View, _viewData, writer); var renderTask = viewEngineResult.View.RenderAsync(viewContext); renderTask.GetAwaiter().GetResult(); return writer.Content; } } } Func<IHtmlHelper, IHtmlContent> defaultAction; if (defaultActions.TryGetValue(viewName, out defaultAction)) { return defaultAction(MakeHtmlHelper(_viewContext, _viewData)); } } throw new InvalidOperationException( Resources.FormatTemplateHelpers_NoTemplate(_viewData.ModelExplorer.ModelType.FullName)); }
public void Copy_CopiesContent_IfTargetTextWriterIsAStringCollectionTextWriter() { // Arrange var source = new StringCollectionTextWriter(Encoding.UTF8); var target = new StringCollectionTextWriter(Encoding.UTF8); // Act source.Write("Hello world"); source.Write(new char[1], 0, 1); source.CopyTo(target, new CommonTestEncoder()); // Assert // Make sure content was written to the source. Assert.Equal(2, source.Content.Entries.Count); Assert.Equal(1, target.Content.Entries.Count); var result = Assert.Single(target.Content.Entries); var bufferedHtmlContent = Assert.IsType<BufferedHtmlContent>(result); Assert.Same(source.Content.Entries, bufferedHtmlContent.Entries); }