/// <summary> /// Creates a new object of the specified type. /// This is important to use instead of the new operator, because this will invoke the required parameters /// for the DefaultWorker. /// </summary> /// <typeparam name="T">The type of IWorker</typeparam> /// <returns>The new IWorker object</returns> /// <exception cref="ArgumentException">If the specified type is not registered in the WorkerGroups</exception> public static T CreateWorker <T>() where T : IWorker { if (WorkerGroups.ObjectBindings.GetOrNothing(typeof(T), out var group)) { return(DefaultWorker.Instantiate <T>(@group, Guid.NewGuid())); } throw new ArgumentException("missing group for worker"); }
public void SetUp() { contextMock = TestUtils.CreateContextMock(); loggerMock = TestUtils.CreateLoggerMock(); contextMock.Setup(c => c.GetLogger(typeof(TestDefaultWorker))).Returns(loggerMock.Object); contextMock.Setup(c => c.CreateTest(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<IGrinderTest>())).Returns((int i, string s, IGrinderTest t) => t); var processContext = TestUtils.CreateProcessContext(null, null, null, contextMock.Object); worker = new TestDefaultWorker { ProcessContext = processContext, GrinderContext = contextMock.Object }; }
public void SetUp() { contextMock = TestUtils.CreateContextMock(); loggerMock = TestUtils.CreateLoggerMock(); contextMock.Setup(c => c.GetLogger(typeof(TestDefaultWorker))).Returns(loggerMock.Object); contextMock.Setup(c => c.CreateTest(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <IGrinderTest>())).Returns((int i, string s, IGrinderTest t) => t); var processContext = TestUtils.CreateProcessContext(null, null, null, contextMock.Object); worker = new TestDefaultWorker { ProcessContext = processContext, GrinderContext = contextMock.Object }; }
static void Main(string[] args) { var worker = new DefaultWorker(); var allocator = new DefaultAllocator(); var result = worker.Run(new int[] { 0, 2, 7, 0 }, allocator); ShowResult(result); result = worker.Run(new int[] { 0, 5, 10, 0, 11, 14, 13, 4, 11, 8, 8, 7, 1, 4, 12, 11 }, allocator); ShowResult(result); Console.Read(); }
public void RunTest() { var worker = new DefaultWorker(); var allocator = new DefaultAllocator(); var result = worker.Run(new int[] { 0, 2, 7, 0 }, allocator); Assert.AreEqual(5, result.Loops); Assert.AreEqual(4, result.EqualsLoop); result = worker.Run(new int[] { 0, 5, 10, 0, 11, 14, 13, 4, 11, 8, 8, 7, 1, 4, 12, 11 }, allocator); Assert.AreEqual(7864, result.Loops); Assert.AreEqual(1695, result.EqualsLoop); }
private void OnCellClick(object sender, DataGridViewCellEventArgs args) { if (args.RowIndex < 0) { return; } var current = overview.Rows[args.RowIndex]; var create = false; if (!(current.Cells[2].Value is IWorker worker)) { if (!DialogWorkerType(out var group, out var label)) { return; } if (!WorkerGroups.ObjectBindings.GetOrNothing(group, out var clazz)) { Logger.Warn("Unable to get class for group id {0}", group); return; } create = true; worker = DefaultWorker.Instantiate(clazz, group, label); } using (var parameters = new Parameters(worker)) { reopen: var result = parameters.ShowDialog(); switch (result) { case DialogResult.OK when create: { ShowWorker(worker); workers[worker.Label] = worker; break; } case DialogResult.No when !create: { SystemSounds.Exclamation.Play(); goto reopen; } } } }
public void Enter(DefaultWorker defaultWorker) { _defaultWorker = defaultWorker; _defaultWorker.CanMove = false; }
/// <summary> /// Loads the IWorker objects from the configuration into the IDictionary. /// </summary> /// <param name="workers">The IDictionary to store the workers</param> /// <returns>true if the operation was successful otherwise false</returns> public bool Load(IDictionary <Guid, IWorker> workers) { if (!File.Exists(configuration)) { return(false); } try { using (var stream = new FileStream(configuration, FileMode.Open, FileAccess.Read)) { var reader = new BinaryReader(stream); var count = reader.ReadInt32(); for (var i = 0; i < count; i++) { var group = reader.ReadGuid(); var label = reader.ReadGuid(); if (!WorkerGroups.ObjectBindings.GetOrNothing(group, out var clazz)) { Logger.Warn("Can't find class binding for group id {0}", group); // ToDo: drain further stream continue; } var worker = DefaultWorker.Instantiate(clazz, group, label); var payloadAmount = reader.ReadInt32(); var payloadBuffer = reader.ReadBytes(payloadAmount); if (worker is DefaultWorker defaults) { using (var payload = new MemoryStream(payloadBuffer, false)) { try { defaults.LoadPreferences(payload); } catch (Exception ex) { Logger.Error("An error occurred while loading preferences for {0}", worker.GetType()); Logger.Debug("Exception: {0}", ex); } } } else { Logger.Warn("Cannot load preferences for non DefaultWorker"); Logger.Debug("Please note Worker must implement DefaultWorker to use preferences"); } workers[label] = worker; } } } catch (IOException) { Logger.Error("An unexpected io exception occurred while loading from file {0}", configuration); return(false); } return(true); }
private bool _canMoveNext; //can move to the next loading point if the worker has elevator tag public void Enter(DefaultWorker defaultWorker) { _defaultWorker = defaultWorker; }
public void Enter(DefaultWorker cartWorker) { //Debug.Log("UnloadingState"); _defaultWorker = cartWorker; }