public void ShouldNotTakeWhenWorkerDoesntExists() { MemoryLogger logger; TakerModule module; IBuildingModule buildingModule; IWorkerModule workerModule; IStackModule stackModule; ITaskModule taskModule; MockedSchedulerModule schedulerModule; buildingModule = new MockedBuildingModule(false, new Building() { X = 10, Y = 10, BuildingID = 2 }); workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1 }); stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Plank, Quantity = 10 }); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIONotFoundException>(() => module.BeginTake(2, ResourceTypeIDs.Wood)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Warning) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); }
public void ShouldTake() { TakerModule module; IBuildingModule buildingModule; IWorkerModule workerModule; IStackModule stackModule; ITaskModule taskModule; MockedSchedulerModule schedulerModule; Task result; buildingModule = new MockedBuildingModule(false, new Building() { BuildingID = 2, X = 10, Y = 10 }); workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1, X = 10, Y = 10 }); stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 2, ResourceTypeID = ResourceTypeIDs.Plank, Quantity = 10 }, new Stack() { StackID = 1, BuildingID = 2, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }, new Stack() { StackID = 2, BuildingID = 2, ResourceTypeID = ResourceTypeIDs.Stone, Quantity = 10 }, new Stack() { StackID = 3, BuildingID = 2, ResourceTypeID = ResourceTypeIDs.Coal, Quantity = 10 } ); taskModule = new MockedTaskModule(false); module = new TakerModule(NullLogger.Instance, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); result = module.BeginTake(1, ResourceTypeIDs.Wood); Assert.IsNotNull(result); Assert.AreEqual(1, result.WorkerID); Assert.AreEqual(1, schedulerModule.Count); }
public void ShouldNotTakeWhenWorkerIsAlreadyCarryingItem() { MemoryLogger logger; TakerModule module; IWorkerModule workerModule; ITaskModule taskModule; workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1, ResourceTypeID = ResourceTypeIDs.Wood }); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, null, null); Assert.ThrowsException <PIOInvalidOperationException>(() => module.BeginTake(1, ResourceTypeIDs.Coal)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Warning) && (item.ComponentName == module.ModuleName))); }
public void ShouldThrowExceptionAndLogErrorWhenSubModuleFails() { MemoryLogger logger; TakerModule module; IBuildingModule buildingModule; IWorkerModule workerModule; IStackModule stackModule; ITaskModule taskModule; MockedSchedulerModule schedulerModule; buildingModule = new MockedBuildingModule(false, new Building() { BuildingID = 2, X = 10, Y = 10 }); workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1, X = 10, Y = 10 }); stackModule = new MockedStackModule(true, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIOInternalErrorException>(() => module.BeginTake(1, ResourceTypeIDs.Wood)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1, X = 10, Y = 10 }); stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }); taskModule = new MockedTaskModule(true); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIOInternalErrorException>(() => module.BeginTake(1, ResourceTypeIDs.Wood)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); workerModule = new MockedWorkerModule(true, new Worker() { WorkerID = 1, PlanetID = 1, X = 10, Y = 10 }); stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIOInternalErrorException>(() => module.BeginTake(1, ResourceTypeIDs.Wood)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); }
public void ShouldNotTakeWhenFactoryHasNotEnoughResourcesToTake() { MemoryLogger logger; TakerModule module; IBuildingModule buildingModule; IWorkerModule workerModule; IStackModule stackModule; ITaskModule taskModule; MockedSchedulerModule schedulerModule; buildingModule = new MockedBuildingModule(false, new Building() { BuildingID = 2, X = 10, Y = 10 }); workerModule = new MockedWorkerModule(false, new Worker() { WorkerID = 1, PlanetID = 1, X = 10, Y = 10 }); #region when all stacks exist stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Plank, Quantity = 10 }, new Stack() { StackID = 1, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }, new Stack() { StackID = 2, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Stone, Quantity = 0 }, new Stack() { StackID = 3, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Coal, Quantity = 10 } ); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIONoResourcesException>(() => module.BeginTake(1, ResourceTypeIDs.Stone)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Warning) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); #endregion #region when a stack is missing stackModule = new MockedStackModule(false, new Stack() { StackID = 0, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Plank, Quantity = 10 }, new Stack() { StackID = 1, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Wood, Quantity = 10 }, new Stack() { StackID = 3, BuildingID = 1, ResourceTypeID = ResourceTypeIDs.Coal, Quantity = 10 } ); taskModule = new MockedTaskModule(false); logger = new MemoryLogger(); module = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); schedulerModule = new MockedSchedulerModule(false, module); Assert.ThrowsException <PIONoResourcesException>(() => module.BeginTake(1, ResourceTypeIDs.Stone)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Warning) && (item.ComponentName == module.ModuleName))); Assert.AreEqual(0, schedulerModule.Count); #endregion }