public void ResolvesChildren() { var testObject = new TestObject() { Id = 1, Children = new List<TestObject>() }; var child = new TestObject(); var mChildState = new Mock<IObjectState>(MockBehavior.Strict); var builder = new ObjectBuilder<TestObject>(testObject); var t1 = builder .Dependent(mChildState.Object) .Build(state => new ObjectBuilder<TestObject>(child)); var t2 = t1.Resolve( (resolver, target, dependent) => target.Add(dependent) ); Assert.That(t1, Is.EqualTo(t2)); Assert.That(builder.DependentObjects.First(), Is.EqualTo(t2)); var context = (IBuilderContext) t2; var resolved = context.Build(null); Assert.That(resolved, Is.EqualTo(child)); var r = builder.Materialise(); Assert.That(r, Is.EqualTo(testObject)); Assert.That(r.Children, Is.Not.Null); Assert.That(r.Children.First(), Is.EqualTo(child)); }
public static ObjectBuilder<Settlement> Build(SettlementState state) { var settlement = new Settlement { Id = state.ObjectId, Name = state.Name, Timer = state.TimeToSettlement, }; var builder = new ObjectBuilder<Settlement>(settlement); builder .Dependent(state.Item) .Build(item => Item.Builder.Build(item)) .Resolve((resolver, target, item) => item.Location = resolver.Get<ILocation>(state.Location)) .Resolve((resolver, target, item) => item.Owner = resolver.Get<Corporation>(state.Owner)) .Resolve((resolver, target, item) => target._item = item); builder .Resolve((resolver, target) => SpendByOwner(resolver, target, state.SpendByOwner)); return builder; }
public static ObjectBuilder<Ship> Build(ILocation location, ShipState state) { var ship = new Ship { Id = state.ObjectId, Name = state.Name, Heading = state.Heading, Position = new Position(location, state.LocalCoordinates), Statistics = new ShipStatistics(state.Statistics.Select(Build)), }; var builder = new ObjectBuilder<Ship>(ship) .Resolve((resolver, target) => BuildHardPoints(resolver, ship, state.HardPoints)) .Resolve((resolver, target) => target.ShipInfo = resolver.Get<ShipInfo>(ItemType.Ships.ToObjectReference(state.Code))); builder .Dependent(state.Pilot) .Build(Agent.Builder.Build) .Resolve((resolver, target, dependentObject) => target.Pilot = dependentObject); return builder; }