/// <inheritdoc /> /// <exception cref="ArgumentNullException">The <paramref name="executeStrategy" /> parameter is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="type" /> parameter is <c>null</c>.</exception> public IBuildCapability GetBuildCapability(IExecuteStrategy executeStrategy, BuildRequirement buildRequirement, Type type) { executeStrategy = executeStrategy ?? throw new ArgumentNullException(nameof(executeStrategy)); type = type ?? throw new ArgumentNullException(nameof(type)); var match = GetCapability(executeStrategy, buildRequirement, x => x.GetBuildCapability( executeStrategy.Configuration, executeStrategy.BuildChain, type), type, null); return(match); }
/// <inheritdoc /> /// <exception cref="ArgumentNullException">The <paramref name="executeStrategy" /> parameter is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">The <paramref name="propertyInfo" /> parameter is <c>null</c>.</exception> public IBuildCapability GetBuildCapability(IExecuteStrategy executeStrategy, BuildRequirement buildRequirement, PropertyInfo propertyInfo) { executeStrategy = executeStrategy ?? throw new ArgumentNullException(nameof(executeStrategy)); propertyInfo = propertyInfo ?? throw new ArgumentNullException(nameof(propertyInfo)); var match = GetCapability(executeStrategy, buildRequirement, x => x.GetBuildCapability( executeStrategy.Configuration, executeStrategy.BuildChain, propertyInfo), propertyInfo.PropertyType, propertyInfo.Name); return(match); }
public void GetBuildCapabilityForPropertyReturnsBuildCapabilityWhenSupported(BuildRequirement requirement, bool canCreate, bool canPopulate, bool capabilityExists) { var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !; var capability = Substitute.For <IBuildCapability>(); capability.SupportsCreate.Returns(canCreate); capability.SupportsPopulate.Returns(canPopulate); var buildAction = Substitute.For <IBuildAction>(); var buildConfiguration = Substitute.For <IBuildConfiguration>(); var buildChain = Substitute.For <IBuildChain>(); var executeStrategy = Substitute.For <IExecuteStrategy>(); executeStrategy.Configuration.Returns(buildConfiguration); executeStrategy.BuildChain.Returns(buildChain); buildAction.GetBuildCapability(buildConfiguration, buildChain, propertyInfo).Returns(capability); var actions = new List <IBuildAction> { buildAction }; var sut = new BuildProcessor(actions); if (capabilityExists) { var actual = sut.GetBuildCapability(executeStrategy, requirement, propertyInfo); actual.Should().Be(capability); } else { Action action = () => sut.GetBuildCapability(executeStrategy, requirement, propertyInfo); action.Should().Throw <BuildException>(); } }
public Blueprint(string Name, int PUCost, int NanoBotCost, TileData.Types _Ttype, BuildingType tType, BuildRequirement bReq, string desc) { buildingName = Name; memoryCost = PUCost; nanoBotCost = NanoBotCost; tileType = _Ttype; description = desc; buildingType = tType; buildReq = bReq; //reqResources = new Dictionary<TileData.Types, int>(); //foreach (TileData.Types r in bReq.reqResourcesMap.Keys) //{ // reqResources.Add(r, bReq.reqResourcesMap[r]); //} // Initialize this new Blueprint's Tier/Upgrade at 0 (no upgrade) bp_Tier = new Blueprint_Tier(); }
private IBuildCapability GetCapability(IExecuteStrategy executeStrategy, BuildRequirement buildRequirement, Func <IBuildAction, IBuildCapability?> evaluator, Type targetType, string?referenceName) { var capabilities = from x in _actions orderby x.Priority descending select evaluator(x); var matches = from x in capabilities where x != null && (x.SupportsCreate && buildRequirement == BuildRequirement.Create || x.SupportsPopulate && buildRequirement == BuildRequirement.Populate) select x; var capability = matches.FirstOrDefault(); if (capability == null) { var message = $"Failed to identify build capabilities for {targetType.FullName}."; throw new BuildException(message, targetType, referenceName, null, executeStrategy.Log.Output); } return(capability); }
public Requirements(BuildRequirement requirement, int detail, string description) { this.requirement = requirement; this.detail = detail; this.description = description; }
public Requirements(BuildRequirement requirement, int detail) { this.requirement = requirement; this.detail = detail; }
public Requirements(BuildRequirement requirement) { this.requirement = requirement; }