Beispiel #1
0
 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
        }
Beispiel #3
0
 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));
 }
Beispiel #4
0
 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;
     }
 }
Beispiel #5
0
 public NestedEntry(ObjectBuildTreeEntry parent)
 {
     Parent = parent;
 }