// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.core.internal.proportions; import static org.eclipse.core.runtime.jobs.Job.getJobManager; import static org.junit.Assert.assertEquals; import org.eclipse.core.runtime.NullProgressMonitor; import org.junit.Before; import org.junit.Test; import org.projectusus.adapter.CodeProportionsComputerJob; import org.projectusus.core.IUsusModelForAdapter; import org.projectusus.core.IUsusModelListener; import org.projectusus.core.statistics.UsusModelProvider; public class CodeProportionsPDETest { @Before public void setUp() throws Exception { getJobManager().join( CodeProportionsComputerJob.FAMILY, new NullProgressMonitor() ); } @Test public void listenerHandling() throws InterruptedException { IUsusModelForAdapter ususModelWriteAccess = UsusModelProvider.ususModelForAdapter(); DummyCodeProportionsListener listener = new DummyCodeProportionsListener(); UsusModelProvider.ususModel().addUsusModelListener( listener ); ususModelWriteAccess.updateAfterComputationRun( false, new NullProgressMonitor() ); assertEquals( 1, listener.getCallCount() ); UsusModelProvider.ususModel().removeUsusModelListener( listener ); ususModelWriteAccess.updateAfterComputationRun( false, new NullProgressMonitor() ); // no more calls assertEquals( 1, listener.getCallCount() ); } private final class DummyCodeProportionsListener implements IUsusModelListener { private int callCount; public void ususModelChanged() { callCount++; } public int getCallCount() { return callCount; } } }