public virtual void Clear() { NodesRendered.Clear(); NodesSkipped.Clear(); NodesInvalidated.Clear(); NodesDisposed.Clear(); EffectsInvoked.Clear(); Exceptions.Clear(); }
public void EnsureRendered(params Type[] elementTypes) { var renderedTypes = NodesRendered.Select(n => n.Element?.GetType()).Where(e => e != null).ToArray(); for (var i = 0; i < renderedTypes.Length && i < elementTypes.Length; i++) { if (renderedTypes[i] != elementTypes[i]) { bad(i); } } if (renderedTypes.Length != elementTypes.Length) { bad(renderedTypes.Length); } void bad(int index) { var builder = new StringBuilder($"List of rendered elements differs at index {index}."); builder.AppendLine().AppendLine("Expected:"); foreach (var type in elementTypes) { builder.AppendLine($" - {type}"); } builder.AppendLine().AppendLine("Actual:"); foreach (var type in renderedTypes) { builder.AppendLine($" - {type}"); } throw new ArgumentException(builder.ToString()); } }
public virtual void OnNodeRendering(ofNode node) => NodesRendered.Add(node);