parent
c76cb9248d
commit
6526022f6c
|
|
@ -108,7 +108,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 1),
|
||||
frame => AssertFrame.Markup(frame, "\n <div></div>\n", 2));
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ namespace Test
|
|||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContentString", 3, 0),
|
||||
frame => AssertFrame.Attribute(frame, "Value", "HI", 1),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 2),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 4),
|
||||
frame => AssertFrame.Text(frame, "hi", 5),
|
||||
|
|
@ -158,7 +158,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 1),
|
||||
frame => AssertFrame.Markup(frame, "\n <div></div>\n ", 2));
|
||||
}
|
||||
|
||||
|
|
@ -183,10 +183,10 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 0),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 1),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 2),
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 3),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 4),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 4),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 6),
|
||||
frame => AssertFrame.Markup(frame, "\n <div></div>\n ", 5));
|
||||
}
|
||||
|
|
@ -208,7 +208,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "hi", 1));
|
||||
}
|
||||
|
|
@ -230,7 +230,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContentString", 3, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3),
|
||||
frame => AssertFrame.Attribute(frame, "Value", "HI", 4),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "hi", 1));
|
||||
|
|
@ -253,7 +253,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "hi", 1));
|
||||
}
|
||||
|
|
@ -275,7 +275,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "hi", 1));
|
||||
}
|
||||
|
|
@ -299,7 +299,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.RenderChildContent", 2, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "hi", 1));
|
||||
}
|
||||
|
|
@ -327,7 +327,7 @@ namespace Test
|
|||
frame => AssertFrame.Attribute(frame, "Name", "billg", 3),
|
||||
frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment<string>), 4),
|
||||
frame => AssertFrame.Attribute(frame, "Value", "HI", 5),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 0),
|
||||
frame => AssertFrame.Text(frame, "billg", 1),
|
||||
|
|
@ -360,7 +360,7 @@ namespace Test
|
|||
frame => AssertFrame.Attribute(frame, "Name", "billg", 1),
|
||||
frame => AssertFrame.Attribute(frame, "Value", "HI", 2),
|
||||
frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment<string>), 3),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 4),
|
||||
frame => AssertFrame.Text(frame, "billg", 5),
|
||||
|
|
@ -395,7 +395,7 @@ namespace Test
|
|||
frame => AssertFrame.Attribute(frame, "Name", "billg", 1),
|
||||
frame => AssertFrame.Attribute(frame, "Value", "HI", 2),
|
||||
frame => AssertFrame.Attribute(frame, "Header", typeof(RenderFragment<string>), 3),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", typeof(RenderFragment<string>), 6),
|
||||
frame => AssertFrame.Attribute(frame, "Footer", typeof(RenderFragment), 10),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 4),
|
||||
frame => AssertFrame.Text(frame, "billg", 5),
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@ namespace Test
|
|||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.MyComponent", 3, 0),
|
||||
frame => AssertFrame.Attribute(frame, "MyAttr", "abc", 1),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2));
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 2));
|
||||
|
||||
// Assert: Captured ChildContent frames are correct
|
||||
var childFrames = GetFrames((RenderFragment)frames[2].AttributeValue);
|
||||
|
|
@ -385,7 +385,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
frames,
|
||||
frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 0),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 1));
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 1));
|
||||
|
||||
// Assert: first level of ChildContent is correct
|
||||
// Note that we don't really need the sequence numbers to continue on from the
|
||||
|
|
@ -397,7 +397,7 @@ namespace Test
|
|||
Assert.Collection(
|
||||
innerFrames,
|
||||
frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 2),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 3));
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 3));
|
||||
|
||||
// Assert: second level of ChildContent is correct
|
||||
Assert.Collection(
|
||||
|
|
@ -540,7 +540,7 @@ namespace Test
|
|||
frame => AssertFrame.Element(frame, "body", 5, 3),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 4),
|
||||
frame => AssertFrame.Component(frame, "Test.MyComponent", 2, 5),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 6),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 6),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 16),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 17));
|
||||
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ namespace Test
|
|||
frames,
|
||||
frame => AssertFrame.Component(frame, genericComponentType.FullName, 3, 0),
|
||||
frame => AssertFrame.Attribute(frame, "Items", typeof(List<int>), 1),
|
||||
frame => AssertFrame.Attribute(frame, RenderTreeBuilder.ChildContent, 2),
|
||||
frame => AssertFrame.Attribute(frame, "ChildContent", 2),
|
||||
frame => AssertFrame.MarkupWhitespace(frame, 3),
|
||||
frame => AssertFrame.Element(frame, "div", 2, 4),
|
||||
frame => AssertFrame.Text(frame, "0", 5),
|
||||
|
|
|
|||
|
|
@ -397,7 +397,7 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test
|
|||
|
||||
protected ArrayRange<RenderTreeFrame> GetFrames(RenderFragment fragment)
|
||||
{
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
fragment(builder);
|
||||
return builder.GetFrames();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Components.Performance
|
|||
|
||||
// A simple component for basic tests -- this is similar to what MVC scaffolding generates
|
||||
// for bootstrap3 form fields, but modified to be more Component-like.
|
||||
original = new RenderTreeBuilder(renderer);
|
||||
original = new RenderTreeBuilder();
|
||||
original.OpenElement(0, "div");
|
||||
original.AddAttribute(1, "class", "form-group");
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Components.Performance
|
|||
original.CloseElement();
|
||||
|
||||
// Now simulate some input
|
||||
modified = new RenderTreeBuilder(renderer);
|
||||
modified = new RenderTreeBuilder();
|
||||
modified.OpenElement(0, "div");
|
||||
modified.AddAttribute(1, "class", "form-group");
|
||||
|
||||
|
|
|
|||
|
|
@ -555,15 +555,12 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
public ArrayRange(T[] array, int count) { throw null; }
|
||||
public Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T> Clone() { throw null; }
|
||||
}
|
||||
public partial class RenderTreeBuilder : System.IDisposable
|
||||
public sealed partial class RenderTreeBuilder : System.IDisposable
|
||||
{
|
||||
public const string ChildContent = "ChildContent";
|
||||
public RenderTreeBuilder(Microsoft.AspNetCore.Components.Rendering.Renderer renderer) { }
|
||||
public RenderTreeBuilder() { }
|
||||
public void AddAttribute(int sequence, in Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame frame) { }
|
||||
public void AddAttribute(int sequence, string name, Microsoft.AspNetCore.Components.EventCallback value) { }
|
||||
public void AddAttribute(int sequence, string name, System.Action value) { }
|
||||
public void AddAttribute(int sequence, string name, bool value) { }
|
||||
public void AddAttribute(int sequence, string name, System.Func<System.Threading.Tasks.Task> value) { }
|
||||
public void AddAttribute(int sequence, string name, System.MulticastDelegate value) { }
|
||||
public void AddAttribute(int sequence, string name, object value) { }
|
||||
public void AddAttribute(int sequence, string name, string value) { }
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Components.Rendering;
|
||||
|
||||
namespace Microsoft.AspNetCore.Components.RenderTree
|
||||
{
|
||||
|
|
@ -17,13 +16,12 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
/// <summary>
|
||||
/// Provides methods for building a collection of <see cref="RenderTreeFrame"/> entries.
|
||||
/// </summary>
|
||||
public class RenderTreeBuilder : IDisposable
|
||||
public sealed class RenderTreeBuilder : IDisposable
|
||||
{
|
||||
private readonly static object BoxedTrue = true;
|
||||
private readonly static object BoxedFalse = false;
|
||||
private readonly static string ComponentReferenceCaptureInvalidParentMessage = $"Component reference captures may only be added as children of frames of type {RenderTreeFrameType.Component}";
|
||||
|
||||
private readonly Renderer _renderer;
|
||||
private readonly ArrayBuilder<RenderTreeFrame> _entries = new ArrayBuilder<RenderTreeFrame>();
|
||||
private readonly Stack<int> _openElementIndices = new Stack<int>();
|
||||
private RenderTreeFrameType? _lastNonAttributeFrameType;
|
||||
|
|
@ -33,16 +31,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
/// <summary>
|
||||
/// The reserved parameter name used for supplying child content.
|
||||
/// </summary>
|
||||
public const string ChildContent = nameof(ChildContent);
|
||||
|
||||
/// <summary>
|
||||
/// Constructs an instance of <see cref="RenderTreeBuilder"/>.
|
||||
/// </summary>
|
||||
/// <param name="renderer">The associated <see cref="Renderer"/>.</param>
|
||||
public RenderTreeBuilder(Renderer renderer)
|
||||
{
|
||||
_renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
|
||||
}
|
||||
private const string ChildContent = nameof(ChildContent);
|
||||
|
||||
/// <summary>
|
||||
/// Appends a frame representing an element, i.e., a container for other frames.
|
||||
|
|
@ -206,40 +195,6 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// Appends a frame representing an <see cref="Action"/>-valued attribute.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// The attribute is associated with the most recently added element. If the value is <c>null</c> and the
|
||||
/// current element is not a component, the frame will be omitted.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="sequence">An integer that represents the position of the instruction in the source code.</param>
|
||||
/// <param name="name">The name of the attribute.</param>
|
||||
/// <param name="value">The value of the attribute.</param>
|
||||
public void AddAttribute(int sequence, string name, Action value)
|
||||
{
|
||||
AddAttribute(sequence, name, (MulticastDelegate)value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// Appends a frame representing a <see cref="Func{Task}"/>-valued attribute.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// The attribute is associated with the most recently added element. If the value is <c>null</c> and the
|
||||
/// current element is not a component, the frame will be omitted.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="sequence">An integer that represents the position of the instruction in the source code.</param>
|
||||
/// <param name="name">The name of the attribute.</param>
|
||||
/// <param name="value">The value of the attribute.</param>
|
||||
public void AddAttribute(int sequence, string name, Func<Task> value)
|
||||
{
|
||||
AddAttribute(sequence, name, (MulticastDelegate)value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// Appends a frame representing a delegate-valued attribute.
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
Component = component ?? throw new ArgumentNullException(nameof(component));
|
||||
_renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
|
||||
_cascadingParameters = CascadingParameterState.FindCascadingParameters(this);
|
||||
CurrrentRenderTree = new RenderTreeBuilder(renderer);
|
||||
_renderTreeBuilderPrevious = new RenderTreeBuilder(renderer);
|
||||
CurrentRenderTree = new RenderTreeBuilder();
|
||||
_renderTreeBuilderPrevious = new RenderTreeBuilder();
|
||||
|
||||
if (_cascadingParameters != null)
|
||||
{
|
||||
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
public int ComponentId { get; }
|
||||
public IComponent Component { get; }
|
||||
public ComponentState ParentComponentState { get; }
|
||||
public RenderTreeBuilder CurrrentRenderTree { get; private set; }
|
||||
public RenderTreeBuilder CurrentRenderTree { get; private set; }
|
||||
|
||||
public void RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
|
||||
{
|
||||
|
|
@ -61,17 +61,17 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
}
|
||||
|
||||
// Swap the old and new tree builders
|
||||
(CurrrentRenderTree, _renderTreeBuilderPrevious) = (_renderTreeBuilderPrevious, CurrrentRenderTree);
|
||||
(CurrentRenderTree, _renderTreeBuilderPrevious) = (_renderTreeBuilderPrevious, CurrentRenderTree);
|
||||
|
||||
CurrrentRenderTree.Clear();
|
||||
renderFragment(CurrrentRenderTree);
|
||||
CurrentRenderTree.Clear();
|
||||
renderFragment(CurrentRenderTree);
|
||||
|
||||
var diff = RenderTreeDiffBuilder.ComputeDiff(
|
||||
_renderer,
|
||||
batchBuilder,
|
||||
ComponentId,
|
||||
_renderTreeBuilderPrevious.GetFrames(),
|
||||
CurrrentRenderTree.GetFrames());
|
||||
CurrentRenderTree.GetFrames());
|
||||
batchBuilder.UpdatedComponentDiffs.Append(diff);
|
||||
}
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
disposable.Dispose();
|
||||
}
|
||||
|
||||
RenderTreeDiffBuilder.DisposeFrames(batchBuilder, CurrrentRenderTree.GetFrames());
|
||||
RenderTreeDiffBuilder.DisposeFrames(batchBuilder, CurrentRenderTree.GetFrames());
|
||||
|
||||
if (_hasAnyCascadingParameterSubscriptions)
|
||||
{
|
||||
|
|
@ -188,7 +188,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
private void DisposeBuffers()
|
||||
{
|
||||
((IDisposable)_renderTreeBuilderPrevious).Dispose();
|
||||
((IDisposable)CurrrentRenderTree).Dispose();
|
||||
((IDisposable)CurrentRenderTree).Dispose();
|
||||
_latestDirectParametersSnapshot?.Dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
/// </summary>
|
||||
/// <param name="componentId">The id for the component.</param>
|
||||
/// <returns>The <see cref="RenderTreeBuilder"/> representing the current render tree.</returns>
|
||||
private protected ArrayRange<RenderTreeFrame> GetCurrentRenderTreeFrames(int componentId) => GetRequiredComponentState(componentId).CurrrentRenderTree.GetFrames();
|
||||
private protected ArrayRange<RenderTreeFrame> GetCurrentRenderTreeFrames(int componentId) => GetRequiredComponentState(componentId).CurrentRenderTree.GetFrames();
|
||||
|
||||
/// <summary>
|
||||
/// Performs the first render for a root component, waiting for this component and all
|
||||
|
|
@ -644,7 +644,7 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
if (componentState != null)
|
||||
{
|
||||
RenderTreeUpdater.UpdateToMatchClientState(
|
||||
componentState.CurrrentRenderTree,
|
||||
componentState.CurrentRenderTree,
|
||||
eventHandlerId,
|
||||
fieldInfo.FieldValue);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -484,10 +484,10 @@ namespace Microsoft.AspNetCore.Components
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<Task<AuthenticationState>>>(0);
|
||||
builder.AddAttribute(1, nameof(CascadingValue<Task<AuthenticationState>>.Value), AuthenticationState);
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, (RenderFragment)(builder =>
|
||||
builder.AddAttribute(2, "ChildContent", (RenderFragment)(builder =>
|
||||
{
|
||||
builder.OpenComponent<NeverReRenderComponent>(0);
|
||||
builder.AddAttribute(1, RenderTreeBuilder.ChildContent, _childContent);
|
||||
builder.AddAttribute(1, "ChildContent", _childContent);
|
||||
builder.CloseComponent();
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||
{
|
||||
builder.OpenComponent<CascadingAuthenticationState>(0);
|
||||
builder.AddAttribute(1, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(1, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<ReceiveAuthStateComponent>(0);
|
||||
childBuilder.CloseComponent();
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<string>>(0);
|
||||
builder.AddAttribute(1, "Value", "Hello");
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<CascadingParameterConsumerComponent<string>>(0);
|
||||
childBuilder.AddAttribute(1, "RegularParameter", "Goodbye");
|
||||
|
|
@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<string>>(0);
|
||||
builder.AddAttribute(1, "Value", "Hello");
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<CascadingParameterConsumerComponent<string>>(0);
|
||||
childBuilder.AddAttribute(1, "RegularParameter", regularParameterValue);
|
||||
|
|
@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<string>>(0);
|
||||
builder.AddAttribute(1, "Value", providedValue);
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<CascadingParameterConsumerComponent<string>>(0);
|
||||
childBuilder.AddAttribute(1, "RegularParameter", "Goodbye");
|
||||
|
|
@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<string>>(0);
|
||||
builder.AddAttribute(1, "Value", "Unchanging value");
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<CascadingParameterConsumerComponent<string>>(0);
|
||||
childBuilder.AddAttribute(1, "RegularParameter", "Goodbye");
|
||||
|
|
@ -192,12 +192,12 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
builder.OpenComponent<CascadingValue<int>>(0);
|
||||
builder.AddAttribute(1, "Value", 123);
|
||||
builder.AddAttribute(2, "IsFixed", true);
|
||||
builder.AddAttribute(3, RenderTreeBuilder.ChildContent, new RenderFragment(builder2 =>
|
||||
builder.AddAttribute(3, "ChildContent", new RenderFragment(builder2 =>
|
||||
{
|
||||
// Then also have a non-fixed cascading value so we can show that unsubscription works
|
||||
builder2.OpenComponent<CascadingValue<string>>(0);
|
||||
builder2.AddAttribute(1, "Value", providedValue);
|
||||
builder2.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(builder3 =>
|
||||
builder2.AddAttribute(2, "ChildContent", new RenderFragment(builder3 =>
|
||||
{
|
||||
if (displayNestedComponent)
|
||||
{
|
||||
|
|
@ -258,7 +258,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
builder.OpenComponent<CascadingValue<string>>(0);
|
||||
builder.AddAttribute(1, "Value", providedValue);
|
||||
builder.AddAttribute(2, "IsFixed", true);
|
||||
builder.AddAttribute(3, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(3, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
if (shouldIncludeChild)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -459,7 +459,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
|
||||
public ParameterCollection Build()
|
||||
{
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenComponent<FakeComponent>(0);
|
||||
foreach (var kvp in _keyValuePairs)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,20 +16,11 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
public class RenderTreeBuilderTest
|
||||
{
|
||||
[Fact]
|
||||
public void RequiresNonnullRenderer()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() =>
|
||||
{
|
||||
new RenderTreeBuilder(null);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StartsEmpty()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Assert
|
||||
var frames = builder.GetFrames();
|
||||
|
|
@ -41,7 +32,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddText()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var nullString = (string)null;
|
||||
|
||||
// Act
|
||||
|
|
@ -61,7 +52,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddMarkup()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "some elem");
|
||||
|
|
@ -84,7 +75,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// as opposed to calling builder.AddMarkupContent directly.
|
||||
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act - can use either constructor or cast
|
||||
builder.AddContent(0, (MarkupString)"Some markup");
|
||||
|
|
@ -101,7 +92,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddNullMarkup()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.AddMarkupContent(0, null);
|
||||
|
|
@ -116,7 +107,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddNonStringValueAsText()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var nullObject = (object)null;
|
||||
|
||||
// Act
|
||||
|
|
@ -134,7 +125,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void UnclosedElementsHaveNoSubtreeLength()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "my element");
|
||||
|
|
@ -148,7 +139,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ClosedEmptyElementsHaveSubtreeLengthOne()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.AddContent(0, "some frame so that the element isn't at position zero");
|
||||
|
|
@ -165,7 +156,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ClosedElementsHaveCorrectSubtreeLength()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "my element");
|
||||
|
|
@ -184,7 +175,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanNestElements()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.AddContent(0, "standalone text 1"); // 0: standalone text 1
|
||||
|
|
@ -224,7 +215,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddAttributes()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<UIEventArgs> eventHandler = eventInfo => { };
|
||||
|
||||
// Act
|
||||
|
|
@ -251,7 +242,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddMultipleAttributes_AllowsNull()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "myelement");
|
||||
|
|
@ -269,7 +260,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddMultipleAttributes_InterspersedWithOtherAttributes()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<UIEventArgs> eventHandler = eventInfo => { };
|
||||
|
||||
// Act
|
||||
|
|
@ -367,7 +358,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
private void CanAddMultipleAttributesTest(IEnumerable<KeyValuePair<string, object>> attributes)
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "myelement");
|
||||
|
|
@ -389,7 +380,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddAttributeAtRoot()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -402,7 +393,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddDelegateAttributeAtRoot()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -415,7 +406,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddAttributeToText()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -430,7 +421,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddEventHandlerAttributeToText()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -445,7 +436,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddAttributeToRegion()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -459,7 +450,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddAttributeToElementReferenceCapture()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -474,7 +465,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddAttributeToComponentReferenceCapture()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -489,7 +480,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddChildComponentsUsingGenericParam()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(10, "parent"); // 0: <parent>
|
||||
|
|
@ -516,7 +507,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddChildComponentsUsingTypeArgument()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
var componentType = typeof(TestComponent);
|
||||
|
|
@ -544,7 +535,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddRegions()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(10, "parent"); // 0: <parent>
|
||||
|
|
@ -572,7 +563,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddFragments()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
RenderFragment fragment = fragmentBuilder =>
|
||||
{
|
||||
fragmentBuilder.AddContent(0, "Hello from the fragment");
|
||||
|
|
@ -599,7 +590,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddElementReferenceCaptureInsideElement()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<ElementReference> referenceCaptureAction = elementReference => { };
|
||||
|
||||
// Act
|
||||
|
|
@ -621,7 +612,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddElementReferenceCaptureWithNoParent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -634,7 +625,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddElementReferenceCaptureInsideComponent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -648,7 +639,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddElementReferenceCaptureInsideRegion()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -667,7 +658,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// just works.
|
||||
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<ElementReference> referenceCaptureAction1 = elementReference => { };
|
||||
Action<ElementReference> referenceCaptureAction2 = elementReference => { };
|
||||
|
||||
|
|
@ -688,7 +679,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddComponentReferenceCaptureInsideComponent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<object> myAction = elementReference => { };
|
||||
|
||||
// Act
|
||||
|
|
@ -710,7 +701,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddComponentReferenceCaptureWithNoParent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -723,7 +714,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddComponentReferenceCaptureInsideElement()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -737,7 +728,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddComponentReferenceCaptureInsideRegion()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -756,7 +747,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// just works.
|
||||
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
Action<object> referenceCaptureAction1 = elementReference => { };
|
||||
Action<object> referenceCaptureAction2 = elementReference => { };
|
||||
|
||||
|
|
@ -777,7 +768,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanClear()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.AddContent(0, "some text");
|
||||
|
|
@ -794,7 +785,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_BoolTrue_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -812,7 +803,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_BoolFalse_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -831,7 +822,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_Bool_SetsAttributeValue(bool value)
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -849,7 +840,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_StringValue_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -867,7 +858,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_StringNull_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -886,7 +877,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_StringValue_SetsAttributeValue(string value)
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -904,7 +895,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventHandler_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action<UIEventArgs>((e) => { });
|
||||
|
||||
|
|
@ -924,7 +915,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_NullEventHandler_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -941,7 +932,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_Action_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action(() => { });
|
||||
|
||||
|
|
@ -961,7 +952,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_NullAction_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -985,7 +976,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_EventHandlerValue_SetsAttributeValue(Action<UIEventArgs> value)
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -1003,7 +994,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallback_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = new EventCallback(null, new Action(() => { }));
|
||||
|
||||
// Act
|
||||
|
|
@ -1022,7 +1013,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallback_Default_DoesNotAddFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = default(EventCallback);
|
||||
|
||||
// Act
|
||||
|
|
@ -1040,7 +1031,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallbackWithReceiver_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback(receiver, new Action(() => { }));
|
||||
|
||||
|
|
@ -1060,7 +1051,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_EventCallback_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback(receiver, new Action(() => { }));
|
||||
|
||||
|
|
@ -1080,7 +1071,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallbackOfT_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = new EventCallback<string>(null, new Action<string>((s) => { }));
|
||||
|
||||
// Act
|
||||
|
|
@ -1099,7 +1090,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallbackOfT_Default_DoesNotAddFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = default(EventCallback<string>);
|
||||
|
||||
// Act
|
||||
|
|
@ -1117,7 +1108,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_EventCallbackWithReceiverOfT_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback<string>(receiver, new Action<string>((s) => { }));
|
||||
|
||||
|
|
@ -1137,7 +1128,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_EventCallbackOfT_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback<string>(receiver, new Action<string>((s) => { }));
|
||||
|
||||
|
|
@ -1157,7 +1148,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectBoolTrue_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -1175,7 +1166,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectBoolFalse_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -1194,7 +1185,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_ObjectBoolValue_SetsAttributeValue(bool value)
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -1212,7 +1203,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectStringValue_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -1230,7 +1221,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_ObjectStringValue_SetsAttributeValue()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -1248,7 +1239,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventHandler_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action<UIEventArgs>((e) => { });
|
||||
|
||||
|
|
@ -1268,7 +1259,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_ObjectUIEventHandleValue_SetsAttributeValue()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action<UIEventArgs>((e) => { });
|
||||
|
||||
|
|
@ -1288,7 +1279,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectAction_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action(() => { });
|
||||
|
||||
|
|
@ -1308,7 +1299,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_ObjectAction_SetsAttributeValue()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
var value = new Action(() => { });
|
||||
|
||||
|
|
@ -1328,7 +1319,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallback_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = new EventCallback(null, new Action(() => { }));
|
||||
|
||||
// Act
|
||||
|
|
@ -1347,7 +1338,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallback_Default_DoesNotAddFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = default(EventCallback);
|
||||
|
||||
// Act
|
||||
|
|
@ -1365,7 +1356,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallbackWithReceiver_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback(receiver, new Action(() => { }));
|
||||
|
||||
|
|
@ -1385,7 +1376,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Component_ObjectEventCallback_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback(receiver, new Action(() => { }));
|
||||
|
||||
|
|
@ -1405,7 +1396,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallbackOfT_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = new EventCallback<string>(null, new Action<string>((s) => { }));
|
||||
|
||||
// Act
|
||||
|
|
@ -1424,7 +1415,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallbackOfT_Default_DoesNotAddFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var callback = default(EventCallback<string>);
|
||||
|
||||
// Act
|
||||
|
|
@ -1442,7 +1433,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectEventCallbackWithReceiverOfT_AddsFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var receiver = Mock.Of<IHandleEvent>();
|
||||
var callback = new EventCallback<string>(receiver, new Action<string>((s) => { }));
|
||||
|
||||
|
|
@ -1462,7 +1453,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void AddAttribute_Element_ObjectNull_IgnoresFrame()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -1479,7 +1470,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddKeyToElement()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var keyValue = new object();
|
||||
|
||||
// Act
|
||||
|
|
@ -1505,7 +1496,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CanAddKeyToComponent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
var keyValue = new object();
|
||||
|
||||
// Act
|
||||
|
|
@ -1531,7 +1522,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddKeyOutsideComponentOrElement_TreeRoot()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
var ex = Assert.Throws<InvalidOperationException>(() =>
|
||||
|
|
@ -1545,7 +1536,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void CannotAddKeyOutsideComponentOrElement_RegionRoot()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act/Assert
|
||||
builder.OpenElement(0, "some element");
|
||||
|
|
@ -1561,7 +1552,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void IgnoresNullElementKey()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenElement(0, "elem");
|
||||
|
|
@ -1582,7 +1573,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void IgnoresNullComponentKey()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
|
||||
// Act
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
|
|
@ -1603,7 +1594,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_DoesNotRemoveDuplicatesWithoutAddMultipleAttributes()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddAttribute(0, "id", "bye");
|
||||
|
|
@ -1627,7 +1618,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var capture = (Action<ElementReference>)((_) => { });
|
||||
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1652,7 +1643,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_StopsAtFirstNonAttributeFrame_Content()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1677,7 +1668,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_CanRemoveDuplicateInsideElement()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1700,7 +1691,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_CanRemoveDuplicateInsideComponent()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1724,7 +1715,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_SilentFrameFollowedBySameAttribute()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenComponent<TestComponent>(0);
|
||||
builder.AddAttribute(0, "id", (string)null);
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1747,7 +1738,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_DoesNotRemoveDuplicatesInsideChildElement()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "id", "hi");
|
||||
builder.AddMultipleAttributes(0, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
|
||||
|
|
@ -1777,7 +1768,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public void ProcessDuplicateAttributes_CanRemoveOverwrittenAttributes()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "div");
|
||||
builder.AddAttribute(0, "A", "hi");
|
||||
builder.AddAttribute(0, "2", new EventCallback(null, (Action)(() => { })));
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
public RenderTreeDiffBuilderTest()
|
||||
{
|
||||
renderer = new FakeRenderer();
|
||||
oldTree = new RenderTreeBuilder(renderer);
|
||||
newTree = new RenderTreeBuilder(renderer);
|
||||
oldTree = new RenderTreeBuilder();
|
||||
newTree = new RenderTreeBuilder();
|
||||
}
|
||||
|
||||
void IDisposable.Dispose()
|
||||
|
|
@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
oldTree.SetKey("retained key");
|
||||
oldTree.AddAttribute(1, "ParamName", "Param old value");
|
||||
oldTree.CloseComponent();
|
||||
using var initial = new RenderTreeBuilder(renderer);
|
||||
using var initial = new RenderTreeBuilder();
|
||||
GetRenderedBatch(initial, oldTree, false); // Assign initial IDs
|
||||
var oldComponent = GetComponents<CaptureSetParametersComponent>(oldTree).Single();
|
||||
|
||||
|
|
@ -265,7 +265,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
oldTree.CloseComponent();
|
||||
|
||||
// Instantiate initial components
|
||||
using var initial = new RenderTreeBuilder(renderer);
|
||||
using var initial = new RenderTreeBuilder();
|
||||
GetRenderedBatch(initial, oldTree, false);
|
||||
var oldComponents = GetComponents(oldTree);
|
||||
|
||||
|
|
@ -297,7 +297,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
oldTree.CloseComponent();
|
||||
|
||||
// Instantiate initial component
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
GetRenderedBatch(renderTreeBuilder, oldTree, false);
|
||||
var oldComponent = GetComponents(oldTree).Single();
|
||||
Assert.NotNull(oldComponent);
|
||||
|
|
@ -736,7 +736,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
oldTree.OpenComponent<FakeComponent>(123);
|
||||
oldTree.CloseComponent();
|
||||
using var initial = new RenderTreeBuilder(renderer);
|
||||
using var initial = new RenderTreeBuilder();
|
||||
GetRenderedBatch(initial, oldTree, false); // Assign initial IDs
|
||||
newTree.OpenComponent<FakeComponent2>(123);
|
||||
newTree.CloseComponent();
|
||||
|
|
@ -1553,7 +1553,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
newTree.CloseElement(); // </container>
|
||||
|
||||
using var batchBuilder = new RenderBatchBuilder();
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames());
|
||||
var originalFakeComponentInstance = oldTree.GetFrames().Array[2].Component;
|
||||
var originalFakeComponent2Instance = oldTree.GetFrames().Array[3].Component;
|
||||
|
|
@ -1639,7 +1639,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
newTree.CloseComponent();
|
||||
|
||||
using var batchBuilder = new RenderBatchBuilder();
|
||||
using var renderTree = new RenderTreeBuilder(renderer);
|
||||
using var renderTree = new RenderTreeBuilder();
|
||||
RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTree.GetFrames(), oldTree.GetFrames());
|
||||
var originalComponentInstance = (FakeComponent)oldTree.GetFrames().Array[0].Component;
|
||||
|
||||
|
|
@ -1679,7 +1679,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
}
|
||||
|
||||
using var batchBuilder = new RenderBatchBuilder();
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames());
|
||||
var originalComponentInstance = (CaptureSetParametersComponent)oldTree.GetFrames().Array[0].Component;
|
||||
Assert.Equal(1, originalComponentInstance.SetParametersCallCount);
|
||||
|
|
@ -1709,7 +1709,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
}
|
||||
|
||||
using var batchBuilder = new RenderBatchBuilder();
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTreeBuilder.GetFrames(), oldTree.GetFrames());
|
||||
var componentInstance = (CaptureSetParametersComponent)oldTree.GetFrames().Array[0].Component;
|
||||
Assert.Equal(1, componentInstance.SetParametersCallCount);
|
||||
|
|
@ -1735,7 +1735,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
newTree.CloseComponent(); // </DisposableComponent>
|
||||
|
||||
using var batchBuilder = new RenderBatchBuilder();
|
||||
using var renderTree = new RenderTreeBuilder(renderer);
|
||||
using var renderTree = new RenderTreeBuilder();
|
||||
RenderTreeDiffBuilder.ComputeDiff(renderer, batchBuilder, 0, renderTree.GetFrames(), oldTree.GetFrames());
|
||||
|
||||
// Act/Assert
|
||||
|
|
@ -1945,7 +1945,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
oldTree.AddAttribute(1, nameof(FakeComponent.StringProperty), "Second param");
|
||||
oldTree.CloseComponent();
|
||||
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
GetRenderedBatch(renderTreeBuilder, oldTree, false); // Assign initial IDs
|
||||
var oldComponents = GetComponents<CaptureSetParametersComponent>(oldTree);
|
||||
|
||||
|
|
@ -2147,7 +2147,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
{
|
||||
if (initializeFromFrames)
|
||||
{
|
||||
using var renderTreeBuilder = new RenderTreeBuilder(renderer);
|
||||
using var renderTreeBuilder = new RenderTreeBuilder();
|
||||
using var initializeBatchBuilder = new RenderBatchBuilder();
|
||||
|
||||
var emptyFrames = renderTreeBuilder.GetFrames();
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var valuePropName = "testprop";
|
||||
var renderer = new TestRenderer();
|
||||
var builder = new RenderTreeBuilder(renderer);
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "elem");
|
||||
builder.AddAttribute(1, "eventname", () => { });
|
||||
builder.AddAttribute(1, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.AddAttribute(2, valuePropName, "initial value");
|
||||
builder.CloseElement();
|
||||
|
|
@ -45,9 +45,9 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var valuePropName = "testprop";
|
||||
var renderer = new TestRenderer();
|
||||
var builder = new RenderTreeBuilder(renderer);
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "elem");
|
||||
builder.AddAttribute(1, "eventname", () => { });
|
||||
builder.AddAttribute(1, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.AddAttribute(2, valuePropName, "initial value");
|
||||
builder.CloseElement();
|
||||
|
|
@ -70,14 +70,14 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var valuePropName = "testprop";
|
||||
var renderer = new TestRenderer();
|
||||
var builder = new RenderTreeBuilder(renderer);
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "elem");
|
||||
builder.AddAttribute(1, "eventname", () => { });
|
||||
builder.AddAttribute(1, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.AddAttribute(2, valuePropName, "unchanged 1");
|
||||
builder.CloseElement();
|
||||
builder.OpenElement(3, "elem");
|
||||
builder.AddAttribute(4, "eventname", () => { });
|
||||
builder.AddAttribute(4, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.AddAttribute(5, "unrelated prop before", "unchanged 2");
|
||||
builder.AddAttribute(6, valuePropName, "initial value");
|
||||
|
|
@ -108,9 +108,9 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var valuePropName = "testprop";
|
||||
var renderer = new TestRenderer();
|
||||
var builder = new RenderTreeBuilder(renderer);
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "elem");
|
||||
builder.AddAttribute(1, "eventname", () => { });
|
||||
builder.AddAttribute(1, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.CloseElement();
|
||||
var frames = builder.GetFrames();
|
||||
|
|
@ -133,13 +133,13 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
// Arrange
|
||||
var valuePropName = "testprop";
|
||||
var renderer = new TestRenderer();
|
||||
var builder = new RenderTreeBuilder(renderer);
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenElement(0, "grandparent");
|
||||
builder.OpenRegion(1);
|
||||
builder.OpenElement(2, "sibling before"); // To show that non-ancestors aren't expanded
|
||||
builder.CloseElement();
|
||||
builder.OpenElement(3, "elem with handler");
|
||||
builder.AddAttribute(4, "eventname", () => { });
|
||||
builder.AddAttribute(4, "eventname", (Action)(() => { }));
|
||||
builder.SetUpdatesAttributeName(valuePropName);
|
||||
builder.CloseElement(); // elem with handler
|
||||
builder.CloseRegion();
|
||||
|
|
|
|||
|
|
@ -814,7 +814,7 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), parentComponent.SomeMethod);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)parentComponent.SomeMethod);
|
||||
builder.CloseComponent();
|
||||
};
|
||||
parentComponent.OnEvent = () =>
|
||||
|
|
@ -855,10 +855,10 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), () =>
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)(() =>
|
||||
{
|
||||
parentComponent.SomeMethod();
|
||||
});
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
};
|
||||
parentComponent.OnEvent = () =>
|
||||
|
|
@ -1133,10 +1133,10 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), () =>
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAction), (Action)(() =>
|
||||
{
|
||||
// Do nothing.
|
||||
});
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
};
|
||||
|
||||
|
|
@ -1434,10 +1434,10 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () =>
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func<Task>)(async () =>
|
||||
{
|
||||
await tcs.Task;
|
||||
});
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
};
|
||||
|
||||
|
|
@ -1543,11 +1543,11 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () =>
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func<Task>)(async () =>
|
||||
{
|
||||
await tcs.Task;
|
||||
throw new TaskCanceledException();
|
||||
});
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
};
|
||||
|
||||
|
|
@ -1661,11 +1661,11 @@ namespace Microsoft.AspNetCore.Components.Test
|
|||
parentComponent.RenderFragment = (builder) =>
|
||||
{
|
||||
builder.OpenComponent<EventComponent>(0);
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), async () =>
|
||||
builder.AddAttribute(1, nameof(EventComponent.OnClickAsyncAction), (Func<Task>)(async () =>
|
||||
{
|
||||
await tcs.Task;
|
||||
throw new InvalidTimeZoneException();
|
||||
});
|
||||
}));
|
||||
builder.CloseComponent();
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.RenderTree;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Components.RenderTree;
|
||||
|
||||
namespace Microsoft.AspNetCore.Components.Test.Helpers
|
||||
{
|
||||
|
|
@ -20,7 +19,7 @@ namespace Microsoft.AspNetCore.Components.Test.Helpers
|
|||
private static ParameterCollection DictionaryToParameterCollection(
|
||||
IDictionary<string, object> parameters)
|
||||
{
|
||||
var builder = new RenderTreeBuilder(new TestRenderer());
|
||||
var builder = new RenderTreeBuilder();
|
||||
builder.OpenComponent<AbstractComponent>(0);
|
||||
foreach (var pair in parameters)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
builder.OpenComponent<CascadingValue<EditContext>>(3);
|
||||
builder.AddAttribute(4, "IsFixed", true);
|
||||
builder.AddAttribute(5, "Value", _fixedEditContext);
|
||||
builder.AddAttribute(6, RenderTreeBuilder.ChildContent, ChildContent?.Invoke(_fixedEditContext));
|
||||
builder.AddAttribute(6, "ChildContent", ChildContent?.Invoke(_fixedEditContext));
|
||||
builder.CloseComponent();
|
||||
builder.CloseElement();
|
||||
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ namespace Microsoft.AspNetCore.Components.Forms
|
|||
{
|
||||
builder.OpenComponent<CascadingValue<EditContext>>(0);
|
||||
builder.AddAttribute(1, "Value", EditContext);
|
||||
builder.AddAttribute(2, RenderTreeBuilder.ChildContent, new RenderFragment(childBuilder =>
|
||||
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||
{
|
||||
childBuilder.OpenComponent<TComponent>(0);
|
||||
childBuilder.AddAttribute(0, "Value", Value);
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<div class="top-row pl-4 navbar navbar-dark">
|
||||
<a class="navbar-brand" href="">MvcSandbox</a>
|
||||
<button class="navbar-toggler" onclick="@ToggleNavMenu">
|
||||
<button class="navbar-toggler" @onclick="@ToggleNavMenu">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="@NavMenuCssClass" onclick="@ToggleNavMenu">
|
||||
<div class="@NavMenuCssClass" @onclick="@ToggleNavMenu">
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
||||
|
|
|
|||
Loading…
Reference in New Issue