void LayConnector(Position start, int direction, int amount) { for (int i = 0; i < amount; i++) { FactoryBuilder.CreateConnector(Position.MoveCardinalDirection(start, direction, i), direction); } }
public void RemoveConnectorAtTheMiddleOfConnectors() { // Arrange int count = 0; // Act // 2 connectors FactoryBuilder.CreateConnector(new Position(0, 5), 2); FactoryBuilder.CreateConnector(new Position(0, 6), 2); FactoryBuilder.CreateConnector(new Position(0, 7), 2); FactoryBuilder.RemoveConnector(new Position(0, 6)); count += 2; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // two connectors of length 2 FactoryBuilder.CreateConnector(new Position(5, 0), 2); FactoryBuilder.CreateConnector(new Position(6, 0), 2); FactoryBuilder.CreateConnector(new Position(7, 0), 2); FactoryBuilder.CreateConnector(new Position(8, 0), 2); FactoryBuilder.CreateConnector(new Position(9, 0), 2); FactoryBuilder.RemoveConnector(new Position(7, 0)); count += 2; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); }
public void RemoveBeltAtTheMiddleOfBelts() { // Arrange int count = 0; // Act // 2 belts of length 1 FactoryBuilder.CreateBelt(new Position(5, 0), 2); FactoryBuilder.CreateBelt(new Position(6, 0), 2); FactoryBuilder.CreateBelt(new Position(7, 0), 2); FactoryBuilder.RemoveBelt(new Position(6, 0)); count += 2; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); // 1 belts of length 5 FactoryBuilder.CreateBelt(new Position(5, 0), 2); FactoryBuilder.CreateBelt(new Position(6, 0), 2); FactoryBuilder.CreateBelt(new Position(7, 0), 2); FactoryBuilder.CreateBelt(new Position(8, 0), 2); FactoryBuilder.CreateBelt(new Position(9, 0), 2); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); FactoryBuilder.RemoveBelt(new Position(7, 0)); // 2 belts of length 2 (only one additional belt) count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); }
void SetUpStressTest() { Debug.Log("------------------- Setting up stress test -------------------"); for (int x = 12; x < 180; x += 12) { for (int y = 12; y < 180; y += 12) { var offset = new Position(x, y); var ironMiner = FactoryBuilder.CreateBuilding(mine, offset, null); ironMiner.craftController.SetMinerType(ironOre.oreUniqueName); ironMiner.isDestructable = false; FactoryBuilder.CreateConnector(offset + new Position(0, -2), 0); LayBelt(offset + new Position(0, -3), 3, 5); LayConnector(offset + new Position(0, -8), 2, 6); FactoryBuilder.CreateBuilding(furnace, offset + new Position(2, -7), null); FactoryBuilder.CreateBuilding(press, offset + new Position(6, -7), null); FactoryBuilder.CreateBuilding(storage, offset + new Position(3, -5), null); FactoryBuilder.CreateBuilding(storage, offset + new Position(8, -8), null); LayBelt(offset + new Position(4, -7), 1, 8); LayBelt(offset + new Position(3, 0), 3, 3); LayBelt(offset + new Position(5, 0), 3, 4); LayBelt(offset + new Position(7, -3), 1, 4); LayBelt(offset + new Position(8, 0), 3, 6); LayConnector(offset + new Position(2, -3), 2, 2); LayConnector(offset + new Position(3, 1), 2, 3); LayConnector(offset + new Position(5, -4), 2, 3); LayConnector(offset + new Position(7, 1), 2, 2); LayConnector(offset + new Position(8, -6), 0, 1); } } }
public void PlaceConnectorAtTheMiddleOfConnectors() { // Arrange int count = 0; // Act // 1 continuous belt of length 3 FactoryBuilder.CreateConnector(new Position(5, 0), 2); FactoryBuilder.CreateConnector(new Position(7, 0), 2); FactoryBuilder.CreateConnector(new Position(6, 0), 2); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // 1 continuous belt of length 3 FactoryBuilder.CreateConnector(new Position(0, 5), 1); FactoryBuilder.CreateConnector(new Position(0, 7), 1); FactoryBuilder.CreateConnector(new Position(0, 6), 1); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // 3 separate belts FactoryBuilder.CreateConnector(new Position(0, 10), 1); FactoryBuilder.CreateConnector(new Position(0, 12), 1); FactoryBuilder.CreateConnector(new Position(0, 11), 2); count += 3; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // Assert Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); }
private static void RegisterDependency(IKernel standardKernel) { var factoryBuilder = new FactoryBuilder(); var actorFactory = factoryBuilder.GetFactory(); BindAsActor <IActor, Actor>(standardKernel, actorFactory).InSingletonScope(); }
public static FactoryBuilder WithCallback(this FactoryBuilder builder, EventHandler <FactoryWatcherEventArgs> eventHandler) { var watcher = builder.Container.Resolve <IFactoryWatcher>(builder.FactoryName); watcher.OnConfigurationModify += eventHandler; return(builder); }
public void PlaceSingleBelt() { // Arrange var positions = new[] { new Position(0, 0), new Position(5, 5), new Position(10, 10), new Position(15, 15), new Position(20, 20) }; var directions = new[] { 1, 1, 2, 3, 4 }; // Act for (int i = 0; i < positions.Length; i++) { FactoryBuilder.CreateBelt(positions[i], directions[i]); } // Assert Assert.AreEqual(FactoryMaster.s.GetBelts().Count, 5); for (int i = 0; i < positions.Length; i++) { Assert.AreEqual(FactoryMaster.s.GetBelts()[i].startPos, positions[i]); Assert.AreEqual(FactoryMaster.s.GetBelts()[i].endPos, positions[i]); Assert.AreEqual(FactoryMaster.s.GetBelts()[i].direction, directions[i]); Assert.AreEqual(FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[i].items[0].count); } }
public void PlaceSingleConnector() { // Arrange // Act var positions = new[] { new Position(0, 0), new Position(5, 5), new Position(10, 10), new Position(15, 15), new Position(20, 20) }; var directions = new[] { 0, 1, 2, 3, 4 }; for (int i = 0; i < positions.Length; i++) { FactoryBuilder.CreateConnector(positions[i], directions[i]); } // Assert Assert.AreEqual(FactoryMaster.s.GetConnectors().Count, 5); for (int i = 0; i < positions.Length; i++) { Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].startPos, positions[i]); Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].endPos, positions[i]); Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].direction, directions[i]); } }
bool _BuildObject(BuildingData myData, Position location, bool forced, bool rocketBuild, bool isBuilt, List <InventoryItemSlot> inventory) { if (rocketBuild) { isBuilt = true; } if (CheckPlaceable(myData, location) || forced) { if (!isBuilt) { FactoryBuilder.StartConstruction(myData, 0, location, inventory); } else { FactoryBuilder.CreateBuilding(myData, location, inventory); } return(true); } else { Debug.LogError(string.Format("A building of type {0} was tried to be built on {1}, " + "but this was not possible. This should have been caught by the player_building controller, " + "or shouldn't be able to saved like this!", myData.myType, location.ToString())); return(false); } }
public void RemoveConnectorAtTheStartOfConnectors() { // Arrange int count = 0; // Act // 1 connector FactoryBuilder.CreateConnector(new Position(0, 0), 1); FactoryBuilder.CreateConnector(new Position(0, 1), 1); FactoryBuilder.RemoveConnector(new Position(0, 0)); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // 1 continuous belt of length 2 FactoryBuilder.CreateConnector(new Position(5, 0), 2); FactoryBuilder.CreateConnector(new Position(6, 0), 2); FactoryBuilder.CreateConnector(new Position(7, 0), 2); FactoryBuilder.RemoveConnector(new Position(5, 0)); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); }
public static FactoryBuilder Watch(this FactoryBuilder builder) { var watcher = builder.Container.Resolve <IFactoryWatcher>(builder.FactoryName); watcher.Start(); return(builder); }
public static FactoryBuilder With <T>(this FactoryBuilder builder, TimeSpan interval) where T : IFactoryWatcher { var factory = builder.Container.Resolve <IFactory>(builder.FactoryName); builder.Container.RegisterType <IFactoryWatcher, T>(builder.FactoryName, new ContainerControlledLifetimeManager(), new InjectionConstructor(interval, factory, typeof(ICustomerProvider), typeof(ILogger))); return(builder); }
public static IContainer ConfigureContainer(this IServiceCollection services, IConfiguration configuration) { var factory = new FactoryBuilder(services, configuration); Exams.Startup.Configure(factory); Auth.Startup.Configure(factory); return(factory.Build()); }
private IFactory <TKey, TProvider> CreateProviderFactory(IServiceProvider serviceProvider) { IFactoryBuilder <TKey, TProvider> builder = new FactoryBuilder <TKey, TProvider>(); foreach (ConfiguredProvider configuredProvider in configuredProviders) { builder.Add <TKey, TProvider>(configuredProvider.Key, configuredProvider.InstanceType, serviceProvider, configuredProvider.Configure); } return(builder.Build()); }
public IFactory GenerateFactory(IMember member) { using FactoryBuilder builder = new FactoryBuilder(); int type = TypeGenerator.Generate(member); return(builder .AddType(type) .AddResultType(ResultTypeGenerator.GenerateResultType(member)) .AddMember(member) .If(type == FactoryType.StaticMethod, x => x.AddParameters(MethodParametersGenerator.GenerateParameters(member))) .Build()); }
public static FactoryBuilder As <T>(this FactoryBuilder builder, string name = null) { if (name == null) { builder.Container.RegisterFactory <T>(c => c.Resolve <T>(builder.FactoryName)); } else { builder.Container.RegisterFactory(typeof(T), name, c => c.Resolve <T>(builder.FactoryName)); } return(builder); }
public void BeforeScenario() { var appSettings = ConfigurationManager.AppSettings; var browser = appSettings["browser"]; var headless = bool.Parse(appSettings["headless"]); var implicitWait = int.Parse(appSettings["implicitWait"]); var Url = appSettings["Url"]; IWebDriver driver = FactoryBuilder.GetFactory(browser).SetHeadless(headless).GetDriver(); driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(implicitWait); driver.Manage().Window.Maximize(); driver.Navigate().GoToUrl(Url); objectContainer.RegisterInstanceAs(driver); }
public void SetUpNewGameWorld() { Debug.Log("------------------- Starting new game -------------------"); //SetUpStressTest(); // Basic Iron System var ironMinePosition = new Position(120, 120); var ironMiner = FactoryBuilder.CreateBuilding(mine, ironMinePosition, null); ironMiner.craftController.SetMinerType(ironOre.oreUniqueName); ironMiner.isDestructable = false; FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -2), 0); FactoryBuilder.CreateBelt(ironMinePosition + new Position(0, -3), 3); FactoryBuilder.CreateBelt(ironMinePosition + new Position(0, -4), 3); FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -5), 2); FactoryBuilder.CreateConnector(ironMinePosition + new Position(1, -5), 2); FactoryBuilder.CreateBuilding(furnace, ironMinePosition + new Position(-1, -7), null); FactoryBuilder.CreateBuilding(furnace, ironMinePosition + new Position(2, -7), null); FactoryBuilder.CreateConnector(ironMinePosition + new Position(-1, -8), 2); FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -8), 2); FactoryBuilder.CreateConnector(ironMinePosition + new Position(1, -8), 2); FactoryBuilder.CreateBuilding(press, ironMinePosition + new Position(-1, -10), null); FactoryBuilder.CreateBuilding(storage, ironMinePosition + new Position(2, -10), null); // Copper Mine var copperMinePosition = new Position(80, 100); var copperMine = FactoryBuilder.CreateBuilding(mine, copperMinePosition, null); copperMine.craftController.SetMinerType(concreteOre.oreUniqueName); copperMine.isDestructable = false; // Concrete Mine var concreteMinePosition = new Position(140, 140); var concreteMine = FactoryBuilder.CreateBuilding(mine, concreteMinePosition, null); concreteMine.craftController.SetMinerType(concreteOre.oreUniqueName); concreteMine.isDestructable = false; // Create starter drones FactoryMaster.s.CreateDrone(new Position(90, 90)); FactoryMaster.s.CreateDrone(new Position(92, 90)); FactoryMaster.s.CreateDrone(new Position(94, 90)); }
public void PlaceBeltAtTheStartOfBelts() { // Arrange int count = 0; // Act // 1 continuous belt of length 2 FactoryBuilder.CreateBelt(new Position(0, 1), 1); FactoryBuilder.CreateBelt(new Position(0, 0), 1); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); Assert.AreEqual(2 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[0].items[0].count); // 1 continuous belt of length 3 FactoryBuilder.CreateBelt(new Position(7, 0), 2); FactoryBuilder.CreateBelt(new Position(6, 0), 2); FactoryBuilder.CreateBelt(new Position(5, 0), 2); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[1].items[0].count); // 1 continuous belt of length 1 // 1 separate belt FactoryBuilder.CreateBelt(new Position(6, 5), 2); FactoryBuilder.CreateBelt(new Position(5, 5), 2); FactoryBuilder.CreateBelt(new Position(5, 6), 2); count += 1 + 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); // 3 separate belt FactoryBuilder.CreateBelt(new Position(10, 10), 2); FactoryBuilder.CreateBelt(new Position(11, 10), 1); FactoryBuilder.CreateBelt(new Position(12, 10), 2); count += 3; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); // Assert Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); }
static void Main(string[] args) { IFactoryBuilder<Test> builder = new FactoryBuilder<Test>(); var rand = new Random(); // The result gets built in the order that the specifications were added. // This means that it's fine for later specs to use already specced values. var testFactory = builder.ForMember(t => t.A, t => "A is always the same") .ForMember(t => t.B, t => rand.Next(0, 100)) .ForMember(t => t.C, t => t.B.HasValue && t.B > 50) .ForMember(t => t.D, t => "but B is random and C is based on B!") .Compile(); Console.WriteLine(testFactory.Build().ToString()); Console.WriteLine(testFactory.Build().ToString()); Console.WriteLine(testFactory.Build().ToString()); Console.WriteLine(testFactory.Build().ToString()); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }
/* * bool BuildConnectorFromSave (Position center, int direction, bool isBuilt, List<InventoryItemSlot> inventory) { * if (direction > 2) * direction = 0; * return _BuildConnector(Grid.s.GetTile(center), direction, false, isBuilt, inventory); * }*/ bool _BuildConnector(Position location, int direction, bool forced, bool isBuilt) { if (CheckPlaceable(location) || forced) { if (!isBuilt) { FactoryBuilder.StartConstruction(FactoryMaster.s.connectorBuildingData, direction, location); } else { FactoryBuilder.CreateConnector(location, direction); } return(true); } else { return(false); } }
/*bool BuildBeltFromSave (Position center, int direction, bool isBuilt, List<InventoryItemSlot> inventory) { * return _BuildBelt(Grid.s.GetTile(center), direction, false, isBuilt, inventory); * }*/ bool _BuildBelt(Position location, int direction, bool forced, bool isBuilt, List <InventoryItemSlot> inventory) { if (CheckPlaceable(location) || forced) { if (!isBuilt) { FactoryBuilder.StartConstruction(FactoryMaster.s.beltBuildingData, direction, location, inventory); } else { FactoryBuilder.CreateBelt(location, direction, inventory); } return(true); } else { return(false); } }
public void PlaceConnectorAtTheStartOfConnectors() { // Act // 1 continuous belt of length 2 FactoryBuilder.CreateConnector(new Position(0, 1), 1); FactoryBuilder.CreateConnector(new Position(0, 0), 1); // 1 continuous belt of length 2 FactoryBuilder.CreateConnector(new Position(10, 1), 1); FactoryBuilder.CreateConnector(new Position(10, 0), 0); // 1 continuous belt of length 3 FactoryBuilder.CreateConnector(new Position(7, 0), 2); FactoryBuilder.CreateConnector(new Position(6, 0), 2); FactoryBuilder.CreateConnector(new Position(5, 0), 2); // 1 continuous belt of length 3 FactoryBuilder.CreateConnector(new Position(7, 10), 2); FactoryBuilder.CreateConnector(new Position(6, 10), 2); FactoryBuilder.CreateConnector(new Position(5, 10), 0); // 1 continuous belt of length 1 // 1 separate belt FactoryBuilder.CreateConnector(new Position(6, 5), 1); FactoryBuilder.CreateConnector(new Position(5, 5), 0); FactoryBuilder.CreateConnector(new Position(5, 6), 2); // 3 separate belt FactoryBuilder.CreateConnector(new Position(10, 10), 2); FactoryBuilder.CreateConnector(new Position(12, 10), 1); FactoryBuilder.CreateConnector(new Position(11, 10), 2); // Assert Assert.AreEqual(FactoryMaster.s.GetConnectors().Count, 1 + 1 + 1 + 1 + 1 + 1 + 3); }
public void RemoveConnectorAtTheEndOfConnectors() { // Arrange int count = 0; // Act // 1 connector remains FactoryBuilder.CreateConnector(new Position(0, 0), 1); FactoryBuilder.CreateConnector(new Position(0, 1), 1); FactoryBuilder.RemoveConnector(new Position(0, 1)); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // 1 continuous connector of length 2 FactoryBuilder.CreateConnector(new Position(5, 0), 2); FactoryBuilder.CreateConnector(new Position(6, 0), 2); FactoryBuilder.CreateConnector(new Position(7, 0), 2); FactoryBuilder.RemoveConnector(new Position(7, 0)); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); // 2 separate belt FactoryBuilder.CreateConnector(new Position(10, 10), 1); FactoryBuilder.CreateConnector(new Position(12, 10), 1); FactoryBuilder.CreateConnector(new Position(11, 10), 1); FactoryBuilder.RemoveConnector(new Position(12, 10)); count += 2; Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count); }
public void LoadFromSave(bool isSuccess) { if (isSuccess) { foreach (var saveData in DataSaver.s.mySave.beltData) { FactoryBuilder.CreateBeltFromSave(saveData); } foreach (var saveData in DataSaver.s.mySave.buildingData) { FactoryBuilder.CreateBuildingFromSave(saveData); } foreach (var saveData in DataSaver.s.mySave.connectorData) { FactoryBuilder.CreateConnectorFromSave(saveData); } foreach (var saveData in DataSaver.s.mySave.constructionData) { FactoryBuilder.CreateConstructionFromSave(saveData); } foreach (var saveData in DataSaver.s.mySave.droneData) { var drone = FactoryBuilder.CreateDroneFromSave(saveData); FactoryVisuals.s.CreateDroneVisuals(drone); } } /*else { * // For now, lets create some drones manually * for (int i = 0; i < 3; i++) { * * } * }*/ //FactoryBuilder.ObjectsUpdated?.Invoke(); }
public void RemoveBeltAtTheEndOfBelts() { // Arrange int count = 0; // Act // 1 belt remaining FactoryBuilder.CreateBelt(new Position(0, 0), 1); FactoryBuilder.CreateBelt(new Position(0, 1), 1); FactoryBuilder.RemoveBelt(new Position(0, 1)); count += 1; // 1 continuous belt of length 2 FactoryBuilder.CreateBelt(new Position(5, 0), 2); FactoryBuilder.CreateBelt(new Position(6, 0), 2); FactoryBuilder.CreateBelt(new Position(7, 0), 2); FactoryBuilder.RemoveBelt(new Position(7, 0)); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); // 3 belt of lenght 1 FactoryBuilder.CreateBelt(new Position(10, 10), 1); FactoryBuilder.CreateBelt(new Position(12, 10), 1); FactoryBuilder.CreateBelt(new Position(11, 10), 1); count += 3; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); // 2 belts of length 1 FactoryBuilder.RemoveBelt(new Position(12, 10)); count -= 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); }
void SellCheck() { if (Input.GetMouseButton(0) && IsPointerOutsideBuildingBar()) { TileData myTile = Grid.s.GetTileUnderPointer(); if (myTile != null) { Debug.Log("Selling " + myTile.name); if (myTile.areThereWorldObject) { if (!instantBuildCheat) { FactoryBuilder.StartDeconstruction(myTile.location); } else { FactoryBuilder.StartDeconstruction(myTile.location); FactoryBuilder.CompleteDeconstruction(myTile.location); } } } } }
public void PlaceBeltAtTheMiddleOfBelts() { // Arrange int count = 0; // Act // 1 continuous belt of length 3 FactoryBuilder.CreateBelt(new Position(5, 0), 2); FactoryBuilder.CreateBelt(new Position(7, 0), 2); FactoryBuilder.CreateBelt(new Position(6, 0), 2); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[0].items[0].count); // 1 continuous belt of length 3 FactoryBuilder.CreateBelt(new Position(0, 5), 3); FactoryBuilder.CreateBelt(new Position(0, 7), 3); FactoryBuilder.CreateBelt(new Position(0, 6), 3); count += 1; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[1].items[0].count); // 3 separate belts FactoryBuilder.CreateBelt(new Position(0, 10), 1); FactoryBuilder.CreateBelt(new Position(0, 12), 1); FactoryBuilder.CreateBelt(new Position(0, 11), 3); count += 3; Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); Assert.AreEqual(FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[2].items[0].count); // Assert Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count); }
public void RemoveSingleBelt() { // Arrange var positions = new[] { new Position(0, 0), new Position(5, 5), new Position(10, 10), new Position(15, 15), new Position(20, 20) }; var directions = new[] { 1, 1, 2, 3, 4 }; // Act for (int i = 0; i < positions.Length; i++) { FactoryBuilder.CreateBelt(positions[i], directions[i]); } for (int i = 0; i < positions.Length; i++) { FactoryBuilder.RemoveBelt(positions[i]); } // Assert Assert.AreEqual(0, FactoryMaster.s.GetBelts().Count); for (int i = 0; i < positions.Length; i++) { Assert.IsFalse(Grid.s.GetTile(positions[i]).areThereBelt); } }
public ActorFactoryBuilderTest() { _ActorFactoryBuilder = new FactoryBuilder(); }
public static void Main() { var manufacturer = Console.ReadLine(); if (manufacturer == "HP") { var hp = new HpFactory(); var factoryBuilder = new FactoryBuilder(hp); pc = factoryBuilder.MakePersonalComputer(); laptop = factoryBuilder.MakeLaptop(); server = factoryBuilder.MakeServer(); } else if (manufacturer == "Dell") { var dell = new DellFactory(); var factoryBuilder = new FactoryBuilder(dell); pc = factoryBuilder.MakePersonalComputer(); laptop = factoryBuilder.MakeLaptop(); server = factoryBuilder.MakeServer(); } else if (manufacturer == "Lenovo") { var lenovo = new LenovoFactory(); var factoryBuilder = new FactoryBuilder(lenovo); pc = factoryBuilder.MakePersonalComputer(); laptop = factoryBuilder.MakeLaptop(); server = factoryBuilder.MakeServer(); } else { throw new InvalidArgumentException("Invalid manufacturer!"); } while (true) { var inputLine = Console.ReadLine(); if (inputLine == null || inputLine.StartsWith("Exit")) { break; } var commandParameters = inputLine.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (commandParameters.Length != 2) { throw new ArgumentException("Invalid command, command should consist of two parameters"); } var command = commandParameters[0]; var parameter = int.Parse(commandParameters[1]); if (command == "Charge") { laptop.Execute(parameter); } else if (command == "Process") { server.Execute(parameter); } else if (command == "Play") { pc.Execute(parameter); } else { Console.WriteLine("Invalid command, there are three types of commands - Play, Charge, Process"); } } }
public static FactoryBuilder With <T>(this FactoryBuilder builder) where T : IFactoryWatcher { return(builder.With <T>(Timeout.InfiniteTimeSpan)); }