// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Goal goal(String name, long duration, long startTime, String... dependencies) {
// 	return new Goal(name, new Duration(duration), startTime, asList(dependencies));
// }
// 
// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Phase phase(String name, Goal... goals) {
// 	return new Phase(name, asList(goals));
// }
// 
// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Project project(String name, Phase... phases) {
// 	return new Project(name, asList(phases));
// }
// 
// Path: src/main/java/com/lassekoskela/maven/bean/Phase.java
// public class Phase extends MavenItem {
// 
// 	private final List<Goal> goals;
// 
// 	public Phase(String name, List<Goal> goals) {
// 		super(name);
// 		this.goals = new ArrayList<Goal>(goals);
// 	}
// 
// 	public List<Goal> getGoals() {
// 		return goals;
// 	}
// 
// 	public void addGoal(Goal goal) {
// 		goals.add(goal);
// 	}
// 
// 	public Optional<Goal> getGoal(final String goalName) {
// 		return FluentIterable.from(goals).firstMatch(new Predicate<Goal>() {
// 			@Override
// 			public boolean apply(Goal input) {
// 				return input.getItemId().equals(goalName);
// 			}
// 		});
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(super.hashCode(), goals);
// 	}
// 
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object instanceof Phase) {
// 			Phase that = (Phase) object;
// 			return super.equals(object) && Objects.equal(this.goals, that.goals);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public ToStringHelper toStringHelper() {
// 		return super.toStringHelper().add("goals", goals);
// 	}
// }
// 
// Path: src/main/java/com/lassekoskela/maven/bean/Project.java
// public class Project extends MavenItem {
// 
// 	private final List<Phase> phases;
// 
// 	public Project(String name, List<Phase> phases) {
// 		super(name);
// 		this.phases = new ArrayList<Phase>(phases);
// 	}
// 
// 	public List<Phase> getPhases() {
// 		return phases;
// 	}
// 
// 	public Phase addPhase(Phase phase) {
// 		phases.add(phase);
// 		return phase;
// 	}
// 
// 	public Optional<Phase> getPhase(final String phaseName) {
// 		return FluentIterable.from(phases).firstMatch(new Predicate<Phase>() {
// 			@Override
// 			public boolean apply(Phase input) {
// 				return input.getItemId().equals(phaseName);
// 			}
// 		});
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(super.hashCode(), phases);
// 	}
// 
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object instanceof Project) {
// 			Project that = (Project) object;
// 			return super.equals(object) && Objects.equal(this.phases, that.phases);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public ToStringHelper toStringHelper() {
// 		return super.toStringHelper().add("phases", phases);
// 	}
// }
// 
// Path: src/main/java/com/lassekoskela/time/DateProvider.java
// public interface DateProvider {
// 
// 	Date now();
// }


import static com.lassekoskela.maven.timeline.ObjectBuilder.goal;
import static com.lassekoskela.maven.timeline.ObjectBuilder.phase;
import static com.lassekoskela.maven.timeline.ObjectBuilder.project;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Date;
import org.apache.maven.execution.ExecutionEvent;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecution;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.junit.Before;
import org.junit.Test;
import com.lassekoskela.maven.bean.Phase;
import com.lassekoskela.maven.bean.Project;
import com.lassekoskela.time.DateProvider;
package com.lassekoskela.maven.timeline;





public class BuildTimelineListenerTest {

	private BuildTimelineListener listener;
	private DateProvider dateProvider;
	private ExecutionEvent event;
	private MavenSession session;
	private MojoExecution execution;

	@Before
	public void setUp() {
// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Goal goal(String name, long duration, long startTime, String... dependencies) {
// 	return new Goal(name, new Duration(duration), startTime, asList(dependencies));
// }
// 
// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Phase phase(String name, Goal... goals) {
// 	return new Phase(name, asList(goals));
// }
// 
// Path: src/test/java/com/lassekoskela/maven/timeline/ObjectBuilder.java
// public static Project project(String name, Phase... phases) {
// 	return new Project(name, asList(phases));
// }
// 
// Path: src/main/java/com/lassekoskela/maven/bean/Phase.java
// public class Phase extends MavenItem {
// 
// 	private final List<Goal> goals;
// 
// 	public Phase(String name, List<Goal> goals) {
// 		super(name);
// 		this.goals = new ArrayList<Goal>(goals);
// 	}
// 
// 	public List<Goal> getGoals() {
// 		return goals;
// 	}
// 
// 	public void addGoal(Goal goal) {
// 		goals.add(goal);
// 	}
// 
// 	public Optional<Goal> getGoal(final String goalName) {
// 		return FluentIterable.from(goals).firstMatch(new Predicate<Goal>() {
// 			@Override
// 			public boolean apply(Goal input) {
// 				return input.getItemId().equals(goalName);
// 			}
// 		});
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(super.hashCode(), goals);
// 	}
// 
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object instanceof Phase) {
// 			Phase that = (Phase) object;
// 			return super.equals(object) && Objects.equal(this.goals, that.goals);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public ToStringHelper toStringHelper() {
// 		return super.toStringHelper().add("goals", goals);
// 	}
// }
// 
// Path: src/main/java/com/lassekoskela/maven/bean/Project.java
// public class Project extends MavenItem {
// 
// 	private final List<Phase> phases;
// 
// 	public Project(String name, List<Phase> phases) {
// 		super(name);
// 		this.phases = new ArrayList<Phase>(phases);
// 	}
// 
// 	public List<Phase> getPhases() {
// 		return phases;
// 	}
// 
// 	public Phase addPhase(Phase phase) {
// 		phases.add(phase);
// 		return phase;
// 	}
// 
// 	public Optional<Phase> getPhase(final String phaseName) {
// 		return FluentIterable.from(phases).firstMatch(new Predicate<Phase>() {
// 			@Override
// 			public boolean apply(Phase input) {
// 				return input.getItemId().equals(phaseName);
// 			}
// 		});
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return Objects.hashCode(super.hashCode(), phases);
// 	}
// 
// 	@Override
// 	public boolean equals(Object object) {
// 		if (object instanceof Project) {
// 			Project that = (Project) object;
// 			return super.equals(object) && Objects.equal(this.phases, that.phases);
// 		}
// 		return false;
// 	}
// 
// 	@Override
// 	public ToStringHelper toStringHelper() {
// 		return super.toStringHelper().add("phases", phases);
// 	}
// }
// 
// Path: src/main/java/com/lassekoskela/time/DateProvider.java
// public interface DateProvider {
// 
// 	Date now();
// }


// Path: src/test/java/com/lassekoskela/maven/timeline/BuildTimelineListenerTest.java
import static com.lassekoskela.maven.timeline.ObjectBuilder.goal;
import static com.lassekoskela.maven.timeline.ObjectBuilder.phase;
import static com.lassekoskela.maven.timeline.ObjectBuilder.project;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Date;
import org.apache.maven.execution.ExecutionEvent;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecution;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.junit.Before;
import org.junit.Test;
import com.lassekoskela.maven.bean.Phase;
import com.lassekoskela.maven.bean.Project;
import com.lassekoskela.time.DateProvider;

package com.lassekoskela.maven.timeline;





public class BuildTimelineListenerTest {

	private BuildTimelineListener listener;
	private DateProvider dateProvider;
	private ExecutionEvent event;
	private MavenSession session;
	private MojoExecution execution;

	@Before
	public void setUp() {
		dateProvider = mock(DateProvider.class);