private static void GenerateStats(ObjectBuildTreeEntry node, IDictionary <Type, int> stats, IList <ObjectBuildRecord> seen) { foreach (var child in node.Children.Where(c => c.Type != null && !seen.Contains(c.Record))) { seen.Add(child.Record); AddOrIncrement(child.Type, stats); GenerateStats(child, stats, seen); } }
public void NullRecord_PropertyAccess() { _treeEntry = new ObjectBuildTreeEntry(null, null, 1); object storage = null; Assert.DoesNotThrow(() => storage = _treeEntry.Type); Assert.DoesNotThrow(() => storage = _treeEntry.Record); Assert.DoesNotThrow(() => storage = _treeEntry.Parent); Assert.DoesNotThrow(() => storage = _treeEntry.UnconstructedMembers); Assert.DoesNotThrow(() => storage = _treeEntry.Depth); Assert.DoesNotThrow(() => storage = _treeEntry.Children); Assert.IsNotNull(storage); // Always true... this stops the warning about the variable never being used }
public static TType FindParent <TType>(object obj, IBuilder builder, ObjectBuildTreeEntry currentObj) where TType : class { if (currentObj.Parent == null) { return(default(TType)); } if (typeof(TType).IsAssignableFrom(currentObj.Type)) { return((TType)currentObj.Object); } return(FindParent <TType>(obj, builder, currentObj.Parent)); }
public BuildSession(IConfiguredBuilder builder, BuildSession parent, Random random) { _builder = builder; _wrappedBuilder = new SessionedBuilder(builder, this); if (parent != null && !parent.IsDisposed) { _sessionId = parent._sessionId; _random = parent._random; _constructedNodes = parent._constructedNodes; _objectTreeRoot = parent._objectTreeRoot; _memberStack = parent._memberStack; CurrentObject = parent.CurrentObject; } else { _sessionId = random.Next(); _random = random; _constructedNodes = new List <ObjectBuildTreeEntry>(); _objectTreeRoot = new ObjectBuildTreeEntry(null, null, -1); _memberStack = new Stack <MemberInfo>(); CurrentObject = _objectTreeRoot; } }
public NestedEntry(ObjectBuildTreeEntry parent) { Parent = parent; }