@Test
 public void shouldStayEmptyAfterUpdatesWithNoBuildSpecified() {
   BuildAnalyzer ba = new BuildAnalyzer();
   ba.update();
   assertTrue(ba.analyzedJobs().isEmpty());
   ba.update();
   assertTrue(ba.analyzedJobs().isEmpty());
 }
 @Test
 public void shouldUpdateAnalyzedJobs() {
   Builds builds = new Builds();
   BuildAnalyzer ba = new BuildAnalyzer();
   builds.build("b0").job("j0").events(e0);
   ba.update(builds);
   assertCollection(ba.analyzedJobs(), new AnalyzedJob(builds.build("b0"), new Build("b0")));
   Builds builds2 = new Builds(builds);
   builds2.build("b0").job("j0").events(e1);
   ba.update(builds2);
   assertCollection(ba.analyzedJobs(), new AnalyzedJob(builds2.build("b0"), builds.build("b0")));
 }
 @Test
 public void shouldUpdateWithCurrentBuildsIfNoBuildsSpecified() {
   Builds builds = new Builds();
   builds.build("b0").job("j0").events(e0);
   BuildAnalyzer ba = new BuildAnalyzer();
   ba.update(builds);
   ba.update();
   Collection<AnalyzedJob> ajs = ba.analyzedJobs();
   assertThat(ajs.size(), is(1));
   AnalyzedJob aj = ajs.iterator().next();
   assertTrue(aj.justBroken.isEmpty());
   assertTrue(aj.justFixed.isEmpty());
   assertThat(aj.stillBroken.size(), is(1));
   Job job = aj.stillBroken.iterator().next();
   Job j0 = new Job("j0");
   j0.events(e0);
   assertThat(job, is(j0));
 }
 @Test
 public void shouldStartEmpty() {
   BuildAnalyzer ba = new BuildAnalyzer();
   assertTrue(ba.analyzedJobs().isEmpty());
 }