Skip to content

Commit

Permalink
Update BlockerCollection
Browse files Browse the repository at this point in the history
  • Loading branch information
lmorisse committed Jun 3, 2020
1 parent 4268ac0 commit 4d12219
Show file tree
Hide file tree
Showing 6 changed files with 331 additions and 222 deletions.
13 changes: 0 additions & 13 deletions Symu source code/Symu/Classes/Blockers/BlockerCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,6 @@ public Blocker Add(Blocker blocker)
List.Add(blocker);
return blocker;
}
[Obsolete]
public Blocker Add(int type, ushort step, object parameter)
{
var blocker = new Blocker(type, step, parameter);
return Add(blocker);
}

[Obsolete]
public Blocker Add(int type, ushort step)
{
var blocker = new Blocker(type, step);
return Add(blocker);
}

/// <summary>
/// Remove an existing blocker from a task
Expand Down
16 changes: 10 additions & 6 deletions Symu source code/Symu/Classes/Task/Manager/TasksManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ public void SetDone(SymuTask task)
throw new ArgumentNullException(nameof(task));
}

if (ToDo.Contains(task))
var todo = ToDo.Contains(task);
if (todo)
{
ToDo.Remove(task);
}
Expand All @@ -187,7 +188,7 @@ public void SetDone(SymuTask task)
{
return;
}
if (ToDo.Contains(task))
if (todo)
{
TaskResult.ToDo--;
}
Expand All @@ -213,7 +214,8 @@ public void Cancel(SymuTask task)
throw new ArgumentNullException(nameof(task));
}

if (ToDo.Contains(task))
var todo = ToDo.Contains(task);
if (todo)
{
ToDo.Remove(task);
}
Expand All @@ -232,7 +234,7 @@ public void Cancel(SymuTask task)
{
return;
}
if (ToDo.Contains(task))
if (todo)
{
TaskResult.ToDo--;
}
Expand Down Expand Up @@ -310,8 +312,10 @@ public bool IsInProgress(SymuTask task)
/// </summary>
public void SetAllTasksDone()
{
ToDo.ForEach(SetDone);
ToDo.Clear();
while (ToDo.Any())
{
SetDone(ToDo.First());
}
while (InProgress.Any())
{
var task = InProgress.First();
Expand Down
10 changes: 5 additions & 5 deletions Symu source code/SymuTests/Classes/Agents/AgentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1420,7 +1420,7 @@ public void ReplyHelpTest()
public void ReplyHelpTest1()
{
var task = new SymuTask(0);
var blocker = task.Blockers.Add(Murphy.IncompleteBelief, 0);
var blocker = task.Add(Murphy.IncompleteBelief, 0);
var message = new Message
{
Medium = CommunicationMediums.Email,
Expand Down Expand Up @@ -1678,11 +1678,11 @@ public void TryRecoverBlockerIncompleteInformationTest()
Weight = 1,
Creator = _agent.Id
};
var blocker = _agent.Blockers.Add(Murphy.IncompleteKnowledge, 0, (ushort) 0);
var blocker = task.Add(Murphy.IncompleteKnowledge, 0, (ushort) 0);
_agent.TryRecoverBlockerIncompleteInformation(task, blocker);
Assert.IsTrue(_environment.Messages.LastSentMessages.Exists(MessageAction.Ask, SymuYellowPages.Help,
_agent.Id.ClassKey, _agent.Id.ClassKey));
Assert.IsTrue(_agent.Blockers.IsBlocked);
Assert.IsTrue(task.IsBlocked);
}

/// <summary>
Expand All @@ -1694,12 +1694,12 @@ public void TryRecoverBlockerIncompleteInformationTest1()
_organizationEntity.Murphies.IncompleteInformation.On = true;
_organizationEntity.Murphies.IncompleteInformation.LimitNumberOfTries = 1;
var task = new SymuTask(0) {Weight = 1};
var blocker = _agent.Blockers.Add(Murphy.IncompleteKnowledge, 0, (ushort) 0);
var blocker = task.Add(Murphy.IncompleteKnowledge, 0, (ushort) 0);
blocker.NumberOfTries = 2;
_agent.TryRecoverBlockerIncompleteInformation(task, blocker);
Assert.IsFalse(_environment.Messages.LastSentMessages.Exists(MessageAction.Ask, SymuYellowPages.Help,
_agent.Id.ClassKey, _agent.Id.ClassKey));
Assert.IsFalse(task.Blockers.IsBlocked);
Assert.IsFalse(task.IsBlocked);
}

/// <summary>
Expand Down
164 changes: 156 additions & 8 deletions Symu source code/SymuTests/Classes/Task/Manager/TasksManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,60 +25,201 @@ public class TasksManagerTests
{
private readonly TasksLimit _tasksLimit = new TasksLimit();
private SymuTask _task;
private SymuTask _message;
private List<SymuTask> _tasks;
private TasksManager _tasksManager;

[TestInitialize]
public void Initialize()
{
_task = new SymuTask(0);
_message = new SymuTask(0) {Parent = new Message()};
var tasksLimit = new TasksLimit();
_tasksManager = new TasksManager(tasksLimit, true);
_tasks = new List<SymuTask> {_task};
}

/// <summary>
/// with a Task
/// </summary>
[TestMethod]
public void AddToDoTest()
{
_tasksManager.AddToDo(_task);
Assert.AreEqual(1, _tasksManager.TaskResult.TotalTasksNumber);
Assert.AreEqual(1, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}

/// <summary>
/// with a message
/// </summary>
[TestMethod]
public void AddToDoTest1()
{
_tasksManager.AddToDo(_message);
Assert.AreEqual(0, _tasksManager.TaskResult.TotalTasksNumber);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}
/// <summary>
/// with a task
/// </summary>
[TestMethod]
public void AddInProgressTest()
{
_tasksManager.AddInProgress(_task);
Assert.AreEqual(1, _tasksManager.TaskResult.TotalTasksNumber);
Assert.AreEqual(1, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}

/// <summary>
/// with a message
/// </summary>
[TestMethod]
public void PushInProgressTest()
public void AddInProgressTest1()
{
_tasksManager.AddInProgress(_message);
Assert.AreEqual(0, _tasksManager.TaskResult.TotalTasksNumber);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}
/// <summary>
/// With a task
/// </summary>
[TestMethod]
public void SetInProgressTest()
{
_tasksManager.AddToDo(_task);
_tasksManager.SetInProgress(_task);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}

/// <summary>
/// With a message
/// </summary>
[TestMethod]
public void SetInProgressTest1()
{
_tasksManager.AddToDo(_message);
_tasksManager.SetInProgress(_message);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.InProgress.Count);
Assert.AreEqual(0, _tasksManager.Done.Count);
}
/// <summary>
/// With a task, from inprogress
/// </summary>
[TestMethod]
public void SetTaskDoneTest()
{
_task.Weight = 1;
_task.WorkToDo = 1;
_tasksManager.AddInProgress(_task);
_tasksManager.SetDone(_task);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(1, _tasksManager.TaskResult.Done);
Assert.AreEqual(1, _tasksManager.TaskResult.WeightDone);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Done.Count);
Assert.AreEqual(0, _task.WorkToDo);
}
/// <summary>
/// With a task, from to do
/// </summary>
[TestMethod]
public void SetTaskDoneTest1()
{
_task.Weight = 1;
_task.WorkToDo = 1;
_tasksManager.AddToDo(_task);
_tasksManager.SetDone(_task);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.TaskResult.Done);
Assert.AreEqual(1, _tasksManager.TaskResult.WeightDone);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Done.Count);
Assert.AreEqual(0, _task.WorkToDo);
}

/// <summary>
/// With a message, from inprogress
/// </summary>
[TestMethod]
public void SetTaskDoneTest2()
{
_message.Weight = 1;
_message.WorkToDo = 1;
_tasksManager.AddInProgress(_message);
_tasksManager.SetDone(_message);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.TaskResult.Done);
Assert.AreEqual(0, _tasksManager.TaskResult.WeightDone);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Done.Count);
Assert.AreEqual(0, _task.WorkToDo);
}
/// <summary>
/// With a task, from inprogress
/// </summary>
[TestMethod]
public void SetTaskCancelTest()
{
_task.Weight = 1;
_task.WorkToDo = 1;
_tasksManager.AddInProgress(_task);
_tasksManager.Cancel(_task);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(1, _tasksManager.TaskResult.Cancelled);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Cancelled.Count);
Assert.AreEqual(1, _task.WorkToDo);
}
/// <summary>
/// With a task, from to do
/// </summary>
[TestMethod]
public void SetTaskCancelTest1()
{
_task.Weight = 1;
_task.WorkToDo = 1;
_tasksManager.AddToDo(_task);
_tasksManager.Cancel(_task);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.TaskResult.Cancelled);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Cancelled.Count);
Assert.AreEqual(1, _task.WorkToDo);
}
/// <summary>
/// With a message, from inprogress
/// </summary>
[TestMethod]
public void SetTaskCancelTest2()
{
_tasksManager.AddInProgress(_message);
_tasksManager.Cancel(_message);
Assert.AreEqual(0, _tasksManager.TaskResult.InProgress);
Assert.AreEqual(0, _tasksManager.TaskResult.Cancelled);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(0, _tasksManager.InProgress.Count);
Assert.AreEqual(1, _tasksManager.Cancelled.Count);
}
/// <summary>
/// TasksCHeck AverageToDo
/// </summary>
Expand Down Expand Up @@ -336,26 +477,33 @@ public void ReceiveTest1()
/// TimeToLive = -1
/// </summary>
[TestMethod]
public void RemoveExpiredTasksTest()
public void CancelExpiredTasksTest()
{
_task.TimeToLive = -1;
_tasksManager.AddToDo(_task);
_tasksManager.CancelExpiredTasks(1);
Assert.AreEqual(1, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(0, _tasksManager.TaskResult.Cancelled);
}

/// <summary>
/// TimeToLive != -1
/// </summary>
[TestMethod]
public void RemoveExpiredTasksTest1()
public void CancelExpiredTasksTest1()
{
_task.TimeToLive = 1;
_tasksManager.AddToDo(_task);
_tasksManager.CancelExpiredTasks(0);
Assert.AreEqual(1, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(0, _tasksManager.TaskResult.Cancelled);
_tasksManager.CancelExpiredTasks(1);
Assert.AreEqual(0, _tasksManager.ToDo.Count);
Assert.AreEqual(1, _tasksManager.Cancelled.Count);
Assert.AreEqual(0, _tasksManager.TaskResult.ToDo);
Assert.AreEqual(1, _tasksManager.TaskResult.Cancelled);
}

#region Blockers management
Expand Down

0 comments on commit 4d12219

Please sign in to comment.