Пример #1
0
 public virtual void Clear()
 {
     NodesRendered.Clear();
     NodesSkipped.Clear();
     NodesInvalidated.Clear();
     NodesDisposed.Clear();
     EffectsInvoked.Clear();
     Exceptions.Clear();
 }
Пример #2
0
        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());
            }
        }
Пример #3
0
 public virtual void OnNodeRendering(ofNode node) => NodesRendered.Add(node);