Ejemplo n.º 1
0
        /// <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
            };
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
 }
Ejemplo n.º 8
0
        /// <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;
    }
Ejemplo n.º 10
0
 public void Enter(DefaultWorker cartWorker)
 {
     //Debug.Log("UnloadingState");
     _defaultWorker = cartWorker;
 }