public void GetAgentPerception()
        {
            TrivialVacuumEnvironment environment = new TrivialVacuumEnvironment();

            environment.SetStatus(VacuumLocation.A, VacuumStatus.Clean);
            var agent = new RandomVacuumAgent();

            agent.Location = VacuumLocation.A;

            var result = environment.GetPerception(agent);

            Assert.AreEqual(VacuumLocation.A, result.Location);
            Assert.AreEqual(VacuumStatus.Clean, result.Status);
        }
        public void ExecuteLeftAction()
        {
            TrivialVacuumEnvironment environment = new TrivialVacuumEnvironment();

            environment.SetStatus(VacuumLocation.A, VacuumStatus.Clean);
            var agent = new RandomVacuumAgent();

            agent.Location = VacuumLocation.B;

            environment.ExecuteAction(agent, VacuumAction.Left);

            Assert.AreEqual(VacuumLocation.A, agent.Location);
            Assert.AreEqual(-1, agent.Performance);
            Assert.AreEqual(VacuumStatus.Clean, environment.GetStatus(VacuumLocation.A));
        }
        public void ExecuteSuckActionOnDirtyStatus()
        {
            TrivialVacuumEnvironment environment = new TrivialVacuumEnvironment();

            environment.SetStatus(VacuumLocation.A, VacuumStatus.Dirty);
            var agent = new RandomVacuumAgent();

            agent.Location = VacuumLocation.A;

            environment.ExecuteAction(agent, VacuumAction.Suck);

            Assert.AreEqual(VacuumLocation.A, agent.Location);
            Assert.AreEqual(10, agent.Performance);
            Assert.AreEqual(VacuumStatus.Clean, environment.GetStatus(VacuumLocation.A));
        }