blob: 56863be6cd26252ef9c74898862ccc94806a280b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.model;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Date;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class TaskDependencyTest {
private ITaskDependency fDependency;
@BeforeEach
public void setupFixture() {
fDependency = ISkillsFactory.eINSTANCE.createTaskDependency();
}
@Test
@DisplayName("getUser() uses custom user")
public void getUserUsesCustomUser() {
final IUser user = ISkillsFactory.eINSTANCE.createUser();
fDependency.setUser(user);
assertEquals(user, fDependency.getUser());
}
@Test
@DisplayName("getUser() has a default value")
public void getUserHasADefaultValue() {
assertNotNull(fDependency.getUser());
}
@Test
@DisplayName("Without task dependency cannot be fulfilled")
public void emptyDependencyIsNotFulfilled() {
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is not fulfilled when waiting for completion of open task")
public void notFulfilledWhenWaitingForOpenTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
fDependency.setTask(task);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is not fulfilled when waiting for completion of scheduled task")
public void notFulfilledWhenWaitingForScheduledTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
user.addTask(task);
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is not fulfilled when waiting for completion of running task")
public void notFulfilledWhenWaitingForRunningTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
task.setGoal(ISkillsFactory.eINSTANCE.createNotDependency());
final IUser user = ISkillsFactory.eINSTANCE.createUser();
final IUserTask userTask = user.addTask(task);
userTask.setStarted(new Date());
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is fulfilled when waiting for completion of completed task")
public void fulfilledWhenWaitingForCompletedTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
final IUserTask userTask = user.addTask(task);
userTask.setFinished(new Date());
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.activate();
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Is fulfilled when waiting for completion of completing task")
public void fulfilledWhenWaitingForCompletingTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
final IUserTask userTask = user.addTask(task);
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
userTask.setFinished(new Date());
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Activate dependency before task is started")
public void activateDependencyBeforeTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
final IUserTask userTask = user.addTask(task);
assertFalse(fDependency.isFulfilled());
userTask.setStarted(new Date());
assertFalse(fDependency.isFulfilled());
userTask.setFinished(new Date());
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Is not fulfilled when waiting for start of non-scheduled task")
public void notFulfilledWhenWaitingForNewTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.setCompleted(false);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is not fulfilled when waiting for start of open task")
public void notFulfilledWhenWaitingForStartOfOpenTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
user.addTask(task);
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.setCompleted(false);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
@Test
@DisplayName("Is fulfilled when waiting for running task")
public void fulfilledWhenWaitingForRunningTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
final IUserTask userTask = user.addTask(task);
userTask.setStarted(new Date());
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.setCompleted(false);
fDependency.activate();
assertTrue(fDependency.isFulfilled());
}
@Test
@DisplayName("Is fulfilled when waiting for task activation")
public void fulfilledWhenWaitingForTaskActivation() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final IUser user = ISkillsFactory.eINSTANCE.createUser();
fDependency.setUser(user);
fDependency.setTask(task);
fDependency.setCompleted(false);
fDependency.activate();
assertFalse(fDependency.isFulfilled());
final IUserTask userTask = user.addTask(task);
assertFalse(fDependency.isFulfilled());
userTask.setStarted(new Date());
assertTrue(fDependency.isFulfilled());
}
}